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

 三,屏幕适配

①            常见的屏幕

       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 源码屏幕视频



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值