一、概述二、px与pt的区别三、 dp与sp的作用四、LayoutParams是什么
一、概述不同手机尺寸大小不一,则组件在不同手机上的显示布局可能存在问题。(小尺寸刚好铺满、大尺寸较多留白、自适应屏幕…)
例如下图我们在创建虚拟机的时候,存在差异。
二、px与pt的区别
1、 px: pixels(像素).不同设备显示效果相同
2、pt: point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用;
1、 dip: device independent pixels(设备独立像素)
不同设备有不同的显示效果,这个和设备硬件有关(适配不同屏幕大小),一般我们为了支持wVGA、HVGA和QvGA推荐使用这个,不依赖像素。
2、 dp:就是dip 。 设备越大,1dp占用的像素越多
3、sp: scaled pixels(放大像素).主要用于字体显示best for textsize。
四、LayoutParams是什么
LayoutParams相当于一个Layout的信息包,它封装了Layout的位置、高、宽等信息。java代码中设置布局可能会用到。
例如,在MainActivity.java中,包含如下代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
而setContentView(R.layout.activity_main)就是设置layout/activity_main.xml作为显示的主布局。
我们可以进行自定义布局更改,然后配合LayoutParams设置布局的宽、高等属性。
package com.example.fourthdemo_1;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
//创建一个linearLayout作为自定义布局
LinearLayout linearLayout = new LinearLayout(this);
//创建LayoutParams
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
//将创建包含宽高的LayoutParams设置给linearLayout
linearLayout.setLayoutParams(layoutParams);
TextView textView = new TextView(this);
textView.setText("Hello World !");
textView.setTextSize(40);
//文本的LayoutParams
LinearLayout.LayoutParams textLinearLayout = new LinearLayout.LayoutParams(800, 300); //300 单位是px
//文本和宽高信息 添加到 linearLayout
linearLayout.addView(textView,textLinearLayout);
//设置主布局为自定义的linearLayout
setContentView(linearLayout);
}
}



