您的位置:首页 > 移动开发 > Android开发

android 培训文档 总结的 屏幕适配

2014-12-02 09:21 246 查看
三,屏幕适配

① 常见的屏幕

Hdipi:480*800

Ldpi:240*320

Xhdpi:1280*720

Mdpi:320*480

② 屏幕的基本概念

分辨率:长和宽总的像素点的总和。(有多少个点)

屏幕的大小:买手机会问买多大的手机,英寸,手机的对角线。

随便建立一个项目,在eclipse 中有好几个drawabledpi.

Dip: 翻译成中文,密度。有质量就有密度。屏幕适配和分辨率没有任何关系的。屏幕的密度和适配息息相关。每一个英寸所展示的像素点。

屏幕尺寸是指显示器屏幕对角线的尺寸,一般用英寸来表示。

可测量显示器对角线长度转换为英寸即可!1英寸=2.54厘米

③如何让textview 占用屏幕的一半:

Ⅰ: 权重。 Layout_weight;

Ⅱ:通过代码比例适配。

Ⅲ:dp 不行。

1, Ⅳ:新建任何项目的时候,values 下的dimens 必须把大的数字写在前面eq:layout-1280x720 中间不是*,而是小写的x.)

④适配

2, 正常情况下,都可以使用sp. (如果你的控件是具体的数值,或者是填充父窗体)

sp: scaled pixels(放大像素). 主要用于字体显示best for textsize。

由此,根据 google 的建议,TextView 的字号最好使用 sp 做单位。

3, 假设你是包裹内容的话,就不能使用sp ,就必须使用dip.

4,

5, 每个drawable 下都有相同文件名的图片。那么手机会加载那个图片呢?

图片适配(首先会往上面去找,如果整个上面都没有的话,就会往下面去找图片dimens,layout,图片,进行适配。)

6, 总有一些手机适配不了。通过多套布局进行适配(注意细节:如果是进行多套layout 布局适配的话,必须把大的数字写在前面eq:layout-1280x720 中间不是* ,而是小写的x.)

7, 通过代码进行屏幕适配。Adapter5 apps 得到屏幕宽高,给一个比例。0.5 是保证精度。误差不可比避免,减少误差。

8, 比例(权重)

⑤屏幕的密度

屏幕的密度

ldpi Resources for low-density(ldpi) screens (~120dpi). 每个英寸多少个点

mdpi Resources formedium-density (mdpi) screens (~160dpi). (This is the baseline density.)

hdpi Resources for high-density(hdpi) screens (~240dpi).

xhdpi Resources for extrahigh-density (xhdpi) screens (~320dpi).

屏幕的密度和icon 的大小:开发一套图片,只放到drawable 中,就会根据比例进行缩放。为什么用一套图就能进行适配。

缩放因子

3:4:6:8 0.75:1:1.5:2

icon的大小 通过比例进行缩放。根据比例算出来的。

36x36 for low-density

48x48 for medium-density

72x72 for high-density

96x96 for extra high-density

这些东西不懂也不影响开发。

为什么把480*800 的图片放到hdpi?

得到的密度结构是233 。最接近240.

① 根据缩放比例计算宽高。

Hdipi:480*800

Ldpi:240*320

Xhdpi:1280*720

Mdpi:320*480

Ⅰ,现在是1280*720 那么宽的一半应该是多少dp?

720/2=360;360/2=180; 他是xhdpi.

Ⅱ:现在是480*800,宽度的一半?

480/2=240; 240/1.5=160;

adapter 5 代码适配

package com.example.adapter5;

import android.app.Activity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.Menu;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
Constant.displayWidth = displayMetrics.widthPixels;
Constant.displayHeight = displayMetrics.heightPixels;

Button bt1 = (Button) findViewById(R.id.btn1);
Button bt2 = (Button) findViewById(R.id.btn2);
Button bt3 = (Button) findViewById(R.id.btn3);
Button bt4 = (Button) findViewById(R.id.btn4);

/**
* 400  399.2+0.5=  399.7    399.7+0.5=400.2
*/

// 第一个按钮,宽度100%,高度10%
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT,
(int) (Constant.displayHeight * 0.1f + 0.5f));
bt1.setLayoutParams(params);

// 第二个按钮,宽度100%,高度30%
LinearLayout.LayoutParams params2 = new LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT,
(int) (Constant.displayHeight * 0.3f + 0.5f));
bt2.setLayoutParams(params2);

// 第三个按钮,宽度50%,高度20%
LinearLayout.LayoutParams params3 = new LinearLayout.LayoutParams(
(int) (Constant.displayWidth * 0.5f + 0.5f),
(int) (Constant.displayHeight * 0.2f + 0.5f));
bt3.setLayoutParams(params3);
// 第四个按钮,宽度70%,高度填满剩下的空间
LinearLayout.LayoutParams params4 = new LinearLayout.LayoutParams(
(int) (Constant.displayWidth * 0.7f + 0.5f),
LayoutParams.MATCH_PARENT);
bt4.setLayoutParams(params4);
}

}


appcan 源码屏幕视频
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: