3、屏幕适配
根据屏幕的尺寸设置控件的大小
public class MainActivity extends AppCompatActivity {
private TextView txt1, txt2, txt3, txt4;
private int screenWidth, screenHeight;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
// 窗体管理对象
/**
* 整个Android的窗口机制是基于一个叫做 WindowManager,这个接口可以添加view到屏幕,也可以从屏幕删除view。
* WindowManager是全局的
* 它面向的对象一端是屏幕,另一端就是View
*/
WindowManager windowManager = getWindowManager();
// 构建DisplayMetrics对象
//DisplayMetrics 类提供了一种关于显示的通用信息,如显示大小,分辨率和字体
/**
* 注:构造函数DisplayMetrics 不需要传递任何参数;调用getWindowManager() 之后,会取得现有Activity 的Handle ,
* 此时,getDefaultDisplay() 方法将取得的宽高维度存放于DisplayMetrics 对象中,而取得的宽高维度是以像素为单位(Pixel) ,
* “像素”所指的是“绝对像素”而非“相对像素”。
*/
DisplayMetrics displayMetrics = new DisplayMetrics();
windowManager.getDefaultDisplay().getMetrics(displayMetrics);
// 获取当前设备的宽度和高度
screenWidth = displayMetrics.widthPixels;
screenHeight = displayMetrics.heightPixels;
Log.d("test", screenHeight + "screenHeight");
/**
* LayoutParams相当于一个Layout的信息包,它封装了Layout的位置、高、宽等信息。
* LayoutParams类也只是简单的描述了宽高,宽和高都可以设置成三种值:
1,一个确定的值;
2,FILL_PARENT,即填满(和父容器一样大小);
3,WRAP_CONTENT,即包裹住组件就好
* 假设在屏幕上一块区域是由一个Layout占领的,如果将一个View添加到一个Layout中,最好告诉Layout用户期望的布局方式,
* 也就是将一个认可的layoutParams传递进去
*/
LinearLayout.LayoutParams layoutParams1 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, (int) (screenHeight * 0.1 + 0.5));
layoutParams1.topMargin = 3;
txt1.setLayoutParams(layoutParams1);
LinearLayout.LayoutParams layoutParams2 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, (int) (screenHeight * 0.2 + 0.5));
layoutParams2.topMargin = 3;
txt2.setLayoutParams(layoutParams2);
LinearLayout.LayoutParams layoutParams3 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, (int) (screenHeight * 0.3 + 0.5));
layoutParams3.topMargin = 3;
txt3.setLayoutParams(layoutParams3);
LinearLayout.LayoutParams layoutParams4 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, (int) (screenHeight * 0.4 + 0.5));
layoutParams4.topMargin = 3;
txt4.setLayoutParams(layoutParams4);
// LinearLayout.LayoutParams layoutParams4 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
// layoutParams4.topMargin = 3;
// txt4.setLayoutParams(layoutParams4);
}
private void initView() {
txt1 = (TextView) findViewById(R.id.txt1);
txt2 = (TextView) findViewById(R.id.txt2);
txt3 = (TextView) findViewById(R.id.txt3);
txt4 = (TextView) findViewById(R.id.txt4);
}
}