How can we detect custom screen category in android?

蹲街弑〆低调 提交于 2019-12-25 14:49:21

问题


I would like to detect custom screen category in android being used in the particular activity,I would like to detect layout-sw640dp programatically,how can be this achieved.We can do the same for small,normal,large & xlarge layouts but I am not sure on this one,kindly help me on this.Thanks.


回答1:


Not sure why you need to do that. But, a quick walk-around is to use tag, for example:

In mdpi:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="@drawable/content_bg"
  android:orientation="vertical"
  android:id="@+id/name"
  android:tag="mdpi-xxx-yyy" >

In hdpi:

  android:id="@+id/name"
  android:tag="hdpi-xxx-yyy" >

Then, read tag from your code for R.id.name.





回答2:


sw640dp just means the smallest available dimension is at least 640dp. This is based off the available layout space for an activity, not the actual resolution of the device. So you can calculate this based off the dimensions of your root layout in the activity:

int density = getResources().getDisplayMetrics().density;
int widthDp = rootView.getWidth() / density;
int heightDp = rootView.getHeight() / density;
if(widthDp >= 640 || heightDp >= 640) {
    // qualifies for sw640dp
}
else {
    // does not qualify for sw640dp
}

In the case of the Galaxy S3, it's resolution is 1280x720, which is 640x360 converted to dp units. Since sw pertains to the available dimensions of the layout, not the resolution, I'm guessing it would not qualify for sw640dp since system decorations, such as the status bar, would reduce your layout's available height.



来源:https://stackoverflow.com/questions/15425769/how-can-we-detect-custom-screen-category-in-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!