我有一个简单的问题,似乎有两个简单的解决方案,这两种方法都不适合我,我似乎无法理解为什么。
我想为我的布局设置一个纵向视图背景和一个备用横向背景。我将不同的图像分别放在单独的文件夹布局和布局土地中。
纵向=应该是什么横向=黑屏
然后我尝试制作一个名为 drawable-land 的文件夹并将宽视图背景放在那里。同样的结果。
去肖像时黑色。
我有什么遗漏吗?这看起来很简单,我无法理解我可能做错了什么。
提前致谢。
我有一个简单的问题,似乎有两个简单的解决方案,这两种方法都不适合我,我似乎无法理解为什么。
我想为我的布局设置一个纵向视图背景和一个备用横向背景。我将不同的图像分别放在单独的文件夹布局和布局土地中。
纵向=应该是什么横向=黑屏
然后我尝试制作一个名为 drawable-land 的文件夹并将宽视图背景放在那里。同样的结果。
去肖像时黑色。
我有什么遗漏吗?这看起来很简单,我无法理解我可能做错了什么。
提前致谢。
根据屏幕方向以编程方式更改背景:
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LinearLayout linearLayout = (LinearLayout)findViewById(R.id.layout);
Resources res = getResources();
Drawable portrait = res.getDrawable(R.drawable.portrait);
Drawable landscape = res.getDrawable(R.drawable.landscape);
WindowManager window = (WindowManager)getSystemService(WINDOW_SERVICE);
Display display = window.getDefaultDisplay();
int num = display.getRotation();
if (num == 0){
linearLayout.setBackgroundDrawable(portrait);
}else if (num == 1 || num == 3){
linearLayout.setBackgroundDrawable(landscape);
}else{
linearLayout.setBackgroundDrawable(portrait);
}
}
试试看,希望对你有帮助!
基于方向的可绘制图像处理很容易,无需任何额外的代码。只是我们需要遵循一些可绘制的目录命名结构并相应地放置图像。我认为,这个链接会有很大帮助:http: //developer.android.com/guide/topics/resources/providing-resources.html
感谢 chRyNan 提供的已接受答案,它确实对我有用,没有任何障碍。由于 Constraint Layout 现在是默认布局,而 setBackGroundDrawable 已弃用。这是 2018 年的另一个版本。
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_organization_key_enter);
ConstraintLayout constraintLayout = (ConstraintLayout) findViewById(R.id.layout);
Resources res = getResources();
Drawable portrait = res.getDrawable(R.drawable.portrait);
Drawable landscape = res.getDrawable(R.drawable.landscape);
WindowManager window = (WindowManager)getSystemService(WINDOW_SERVICE);
Display display = window.getDefaultDisplay();
int num = display.getRotation();
if (num == 0){
constraintLayout.setBackground(portrait);
}else if (num == 1 || num == 3){
constraintLayout.setBackground(landscape);
}else{
constraintLayout.setBackground(portrait);
}
确保两个图像文件具有相同的名称,即使文件包含不同的图像。例如,如果您在 drawable-land 和 drawable-port 文件夹中都有一个名为“background01.png”的图像,则以下内容将起作用:
<ImageView
android:id="@+id/imageView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
android:src="@drawable/background01" />