Android中的屏幕适配
来源:互联网 发布:最近网络同学聚会歌曲 编辑:程序博客网 时间:2024/06/05 03:07
方式一:图片适配,原理是不同像素密度的手机加载不同资源文件夹下的文件
方式二:dimensxml,原理是不同像素密度的手机加载不同的dimens.xml的文件
方式三:layout适配,原理不同像素密度的手机加载不同的布局文件
该方式效率并不高,就相当于是根据不同的手机,建立不同的layout文件,例如使用的是800*480的手机,建立相应的layout文件的规则为layout-800x480
方式四:java代码的适配。(首先获取手机屏幕的高矿像素值,然后根据屏幕的宽高像素的比例,分配给控件)代码如下所示:
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); //获取父控件 RelativeLayout rl = (RelativeLayout) findViewById(R.id.rl); TextView tv = (TextView) findViewById(R.id.tv); //获取屏幕的高和宽 DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); //获取屏幕的高和宽的一半 int halfHeight=(int) (metrics.heightPixels/2+0.5); int halfWidth=(int) (metrics.widthPixels/2+0.5); //给控件设置宽和高 (现将宽高的规则在其父布局上定义出来,在作用在子控件上) LayoutParams layoutParams = new RelativeLayout.LayoutParams(halfWidth, halfHeight); tv.setLayoutParams(layoutParams); }
关于Android 中的DisplayMetrics类的用法
通过查询得知:Android 已经提供了DisplayMetircs 类可以很方便的获取手机的分辨率。Andorid.util 包下的DisplayMetrics 类提供了一种关于显示的通用信息,如显示大小,分辨率和字体。
为了获取DisplayMetrics,首先要初始化对象,如下所示:
DisplayMetrics metrics = new DisplayMetrics();
注意:这里使用构造函数初始化的时候,不需要传递任何参数
getWindowManager().getDefaultDisplay().getMetrics(metrics);
当前窗口的一些显示信息就放在了metrics 中,然后通过属性heightPixels和widthPixels可以获取屏幕宽高的像素值。
接下来总结一下dip、px和sp的区别:
dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。
px: pixels(像素). 不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多。
sp: scaled pixels(放大像素). 主要用于字体显示best for textsize,根据 google 的建议,TextView 的字号最好使用 sp 做单位
关于layoutParams的介绍:
查看API发现These supply parameters to the parent of this view specifying how it should be arranged。
这里总结一下获取屏幕尺寸的三种方式:
方式一:通过DisplayMetrics获取DisplayMetrics metrics = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(metrics);
方式二:使用getResource方式获取 DisplayMetrics metrics2 = getResources().getDisplayMetrics();
方式三:通过屏幕的默认分辨率获取 Display display = getWindowManager().getDefaultDisplay(); System.out.println(display.getWidth()); System.out.println(display.getHeight());
第三种方式获取屏幕的高度和宽度的方法已经废弃!
通常用方式以获取屏幕的宽度和高度。
方式五:权重适配(只有线性布局才会有权重适配)
- Android中的屏幕适配
- android中的屏幕适配
- Android中的屏幕适配
- Android中的屏幕适配
- Android中的屏幕适配
- Android开发中的屏幕适配问题
- 关于Android中的屏幕适配问题
- Android中的屏幕适配问题
- ReactNative与Android中的屏幕适配
- ReactNative与Android中的屏幕适配
- Android开发中的屏幕适配问题1
- 【Android】屏幕适配
- android屏幕适配
- android屏幕适配
- android 屏幕适配
- Android屏幕适配
- Android屏幕适配
- Android屏幕适配
- MyBatis There is no getter for property named 'xxx' in 'class java.lang.String'
- C++将形参定义为引用类型的一些情况
- 泛型集合 Queue<T>
- 第九周上机实践项目5——方程也是类
- mac下webstrom主题设置
- Android中的屏幕适配
- Connection.setAutoCommit使用的注意事项
- 2014年最新前端开发面试题(题目列表+答案 完整版)
- 开发技术前线 第八期 周报
- C数组地址和数组名区别
- 八年了,iPhone为何还在持续高速增长?
- 花生壳怎么用
- ZOJ 3333 Guess the Price 3323 Somali Pirates 3322 Who is Older?(超级水)
- poj 3984