我有一个简单的问题似乎有两个简单的解决方案,这两个解决方案都不适合我,我似乎无法理解为什么。
我希望为我的布局设置纵向视图背景和备用横向背景。我将不同的图像分别放在单独的文件夹布局和布局 - 土地中。
portrait =到底应该是什么 landscape =黑屏
然后我尝试制作一个名为drawable-land的文件夹,并在那里放置宽视图背景。 同样的结果。
去画像时是黑色的。有什么东西我不见了?这看起来很简单,我无法理解我可能做错了什么。
提前致谢。
答案 0 :(得分:5)
以编程方式更改背景,具体取决于屏幕的方向:
@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);
}
}
尝试一下,我希望它有所帮助!
答案 1 :(得分:2)
基于Orientation的Drawable图像处理很容易,无需做任何额外的代码。 我们需要遵循一些可绘制的目录命名结构并相应地放置图像。 我想,这个链接会有很多帮助:http://developer.android.com/guide/topics/resources/providing-resources.html
答案 2 :(得分:1)
感谢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);
}
答案 3 :(得分:0)
确保两个图像文件具有相同的名称,即使文件包含不同的图像。例如,如果您有一个名为' background01.png'在drawable-land和drawable-port文件夹中,以下内容将起作用:
<ImageView
android:id="@+id/imageView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
android:src="@drawable/background01" />