【发布时间】:2017-07-15 02:00:28
【问题描述】:
有没有办法为不同品牌的手机设置不同的资源?
例如,我需要在三星和 HTC 手机之间获得不同的可绘制对象。
我知道我可以通过程序实现这一点,但无论如何只能通过 XML 实现这一点?就像为不同的语言环境设置不同的资源一样。
【问题讨论】:
标签: android xml android-studio android-resources
有没有办法为不同品牌的手机设置不同的资源?
例如,我需要在三星和 HTC 手机之间获得不同的可绘制对象。
我知道我可以通过程序实现这一点,但无论如何只能通过 XML 实现这一点?就像为不同的语言环境设置不同的资源一样。
【问题讨论】:
标签: android xml android-studio android-resources
怎么样:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// code for fetch "brand_of_phone" or fetch it in Application.java
// ...
if(brand_of_phone.equals("samsung")){
setContentView(R.layout.activity_brand_samsung);
}else if(brand_of_phone.trim().contains("htc")){
setContentView(R.layout.activity_brand_htc);
}else {
setContentView(R.layout.activity_brand);
}
}
不同品牌使用不同的布局文件。然后你可以为不同的语言环境设置不同的资源。
【讨论】:
没有可用于区分手机品牌的资源限定符。
您可以使用的资源限定符的完整列表可在此处获得: https://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources
与您要查找的内容最接近的是第一个限定符(“移动网络代码”)的后半部分,但这是为了区分运营商,而不是品牌。
通过 Java,您可以使用 Build.BRAND 常量访问设备的品牌。
【讨论】: