> App单位转换dp、px、sp
/** * dp转px * @param dp */ public static int dip2px(Context context, int dp) { float density = context.getResources().getDisplayMetrics().density; return (int) (dp * density + 0.5); } /** * px转换dip */ public static int px2dip(Context context, int px) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (px / scale + 0.5f); } /** * px转换sp */ public static int px2sp(Context context, int pxValue) { final float fontScale = context.getResources().getDisplayMetrics().scaledDensity; return (int) (pxValue / fontScale + 0.5f); } /** * sp转换px */ public static int sp2px(Context context, int spValue) { final float fontScale = context.getResources().getDisplayMetrics().scaledDensity; return (int) (spValue * fontScale + 0.5f); }
图片的大小适配使用代码计算:16:9 等。
> Android phone
Android图片,文字的适配- http://blog.csdn.net/qq_15103193/article/details/55104863
Android自定义TextView根据控件高度和宽度,解决字体适配问题- http://blog.csdn.net/qq_27489007/article/details/78063346
Android适配:字体的大小适配- http://blog.csdn.net/finally_yang/article/details/56485695
借鉴drawable文件夹,使用dimens控制字体大小、边距大小。适配Android不同机型,不同屏幕- http://blog.csdn.net/xqiitan/article/details/45193689
Android 屏幕适配方案- http://blog.csdn.net/lmj623565791/article/details/45460089
Android 屏幕适配:各种解决方案- http://blog.csdn.net/lhzjllh/article/details/78918688
> Android TV
电视端android应用开发比手机有点好处是电视的分辨率就那么几种,一般只需要做720P和1080P的就足够了.720P是指1280x720, 1080P是指1920x1080.
Android TV 开发之屏幕适配- https://www.jianshu.com/p/f406740263e7
Android之TV的适配- https://www.cnblogs.com/androidxufeng/p/4797709.html
Android TV开发总结(五)TV上屏幕适配总结- http://blog.csdn.net/hejjunlin/article/details/52886107
android 电视端应用不同分辨率的适配- http://blog.csdn.net/gebitan505/article/details/46633013
TV上的小Sample,开源到GitHub: https://github.com/hejunlin2013/TVSample
区分android TV和手机- https://developer.android.com/training/tv/start/hardware.html#handle-features
UiModeManager uiModeManager = (UiModeManager) getSystemService(UI_MODE_SERVICE);
if (uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION) {
Log.d(TAG, "Running on a TV Device")
} else {
Log.d(TAG, "Running on a non-TV Device")
}
-- Android TV屏幕适配- http://314858770.iteye.com/blog/1495864
TV分辨率的大概情况,两种分辨率为主:
1.720标清,分辨率为1280x720. 屏幕尺寸以32寸为主,部分电视为42寸
2.1080p全高清,分辨率为1920x1080 . 屏幕尺寸以42寸为主,此分辨率电视屏幕从32寸到50寸都有。
-- 适配大屏,屏幕适配
-- Android屏幕适配?Android适配TV屏幕? 图片和文字适配 Android??
最后适配大屏使用了layout-sw600dp布局文件(匹配7寸以上的屏幕),文字扩大2倍,图片按屏幕宽高比适配,16:9 2:1 18:9等。
Android适配- https://github.com/AndroidJiang/AndroidDimensUtils
Android开发中如何获得正确的layout资源(layout-sw480dp layout-sw600dp-land layout-sw720dp-port)- http://blog.csdn.net/mafei852213034/article/details/51190309
Android中layout-sw600dp、layout-w600dp和layout-h600dp的区别- http://blog.csdn.net/wxx614817/article/details/50975265
layout-640x360,drawable-xxhdpi ,values-w820dp 将需要适配的文字的大小全部写在相应的dimens中就可以了。values-480x320 下的dimens.xml。
在Google官方开发文档中,说明了 mdpi:hdpi:xhdpi:xxhdpi:xxxhdpi=2:3:4:6:8 的尺寸比例进行缩放。例如,一个图标的大小为48×48dp,表示在mdpi上,实际大小为48×48px,在hdpi像素密度上,实际尺寸为mdpi上的1.5倍,即72×72px,以此类推。
-- 适配固定分辨率不同密度的布局文件命名,如:720p的适配同理
1920x1080分辨率,高密度屏幕 布局文件目录名为layout-hdpi-1920x1080
1920x1080分辨率,中密度屏幕 布局文件目录名为layout-mdpi-1920x1080
-- 字体和长宽定义,
1.先说图片:
因为720P下的图片dp值与电脑上的px值是1:1的,所以默认开发都是720P为基础,图片资源文件放到drawable-mdpi下就可以了,1080P的图片资源要放到drawable-sw1080dp下;
2.再说字体和长宽定义:
无论是layout还是java代码中所使用的尺寸全部要使用dimen文件中定义的值,方便1080P适配, 1080P使用的dimen.xml放到values-sw1080dp下;
android字体大小多屏幕适配- http://blog.csdn.net/luomusha/article/details/41245591
androidTV文字动画 HTextView,Animation effects to text, not really textview- https://github.com/hanks-zyh/HTextView
-- [Android]如何获取设备真实尺寸;得到设备的尺寸
private static Point getPhysicalScreenSize(Context context){
Point p = new Point();
DisplayManager dm = (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE);
Display[] displays = dm.getDisplays();
int maxWidth = -1, maxHeight = -1;
DisplayMetrics met = new DisplayMetrics();
for(Display d : displays){
d.getMetrics(met);
maxWidth = met.widthPixels > maxWidth ? met.widthPixels : maxWidth;
maxHeight = met.heightPixels > maxHeight ? met.heightPixels : maxHeight;
}
p.x = maxWidth;
p.y = maxHeight;
return p;
}
从一个外国的帖子上找到的答案- http://stackoverflow.com/questions/2193457/is-there-a-way-to-determine-android-physical-screen-height-in-cm-or-inches
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
double x = Math.pow(dm.widthPixels/dm.xdpi,2);
double y = Math.pow(dm.heightPixels/dm.ydpi,2);
double screenInches = Math.sqrt(x+y);
Log.d("debug","Screen inches : " + screenInches);
Android实战技巧之十:获得屏幕物理尺寸、密度及分辨率- http://blog.csdn.net/lincyang/article/details/42679589
“各种VGA的density是不同的,(hdpi: 240 , ldpi: 120 , mdpi: 160 , xhdpi: 320)”,所以只要求出不同屏幕的density,就可以知道该手机属于的屏幕类型。
Android 获取设备屏幕大小的几种方法总结- http://www.jb51.net/article/113272.htm
android获取设备屏幕大小的方法- http://blog.csdn.net/congqingbin/article/details/7474276/
android获取设备屏幕大小的方法- http://blog.sina.com.cn/s/blog_baa0c6bc0102w551.html
Android实战技巧之十:获得屏幕物理尺寸、密度及分辨率- http://blog.csdn.net/lincyang/article/details/42679589