Android App适配,Android phone和TV的适配(图片和文字)

> 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 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值