Days29 自定义View(二) & 语言的国际化 & 屏幕适配

来源:互联网 发布:js触发后台事件 编辑:程序博客网 时间:2024/05/22 13:46

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);    }}
0 0
原创粉丝点击