08第五章:用户界面基础

用户界面基础

了解UI界面

UI是User Interface的简称,是人和工具之间交互的工具,小到手机端的应用,大到计算机上的软件,都有它的参与。

UI设计则是指对软件的人机交互、操作逻辑、界面美观的整体设计。

View

View在Android中可以理解位视图。他占据屏幕上的一块矩形区域,负责提供组件绘制和时间处理的方法。
View类是所有的widgets组件的基类,例如,TextView(文本框),EditText(编辑框),和Button(按钮)都是widgets组件

View类位于android.view包中,文本框组件TextView是View类的子类,位于android.widget包中

ViewGroup

容器。ViewGroup类继承自View类,它是View类的扩展,是用来容纳其他组件的容器,但是由于ViewGroup是一个抽象类,所以在实际中通常是使用ViewGroup的子类来作为容器的。

ViewGroup控制其子组件的分布时还经常依赖于ViewGroup.Layout Params和ViewGroup.MarginLayoutParams两个累不累。

ViewGroup.LayoutParams类封装了布局的位置、高和宽等信息。它支持android:layout_height和android:layout_width两个XML属性,他们的属性值,可以使用精确的数值,也可以使用FILL_PARENT(表示与父容器相同)、MATCH_PARENT(表示与父容器相同,需要API8或以上版本才支持)或者WRAP_CONTENT(表示包裹其自身的内容)指定

ViewGroup.MarginLayoutParams类
ViewGroup.MarginLayoutParams类用于控制其子组件的外边距的。

Padding和Margins

Padding表示在View的顶部、底部、左侧和右侧的填充像素,它也被称为内边距。它设置的是内容与View边缘的距离。Padding将占据View的宽度和高度。设置指定的内边距后,视图内容将偏离View边缘指定的距离。

Margins表示组件的顶部、底部、左侧和右侧的空白区域,称为外边距。它设置的是组件与其父容器的距离。Margins不占据组件的宽度和高度。为组件设置外边距后,该组件将远离父容器指定的距离,如果还有相邻的组件,那么也将远离其相邻组件指定的距离。

px、dp、和sp

px(Pixels,像素):每个px对应屏幕上的一个点。

dp(设置独立像素)一种基于屏幕密度的抽象单位,也可以使用dip.在每英寸160点的显示器上,1dp=1px.但随着屏幕密度的改变,dp与px的换算也会发生改变

sp(比例像素):主要处理字体的大小,可以根据用户字体大小首选项进行缩放

界面布局

Android提供了相对布局、线性布局、帧布局、表格布局和网格布局进行详细介绍

相对布局

在相对布局中,放入其中的组件式相对于兄弟组件,或者父容器的位置进行排列的。

android:gravity
用来设置布局管理器中各子组件的摆放位置
android:ignoreGravity
用于指定哪个组件不受gravity属性的影响
在这里插入图片描述

在这里插入图片描述

线性布局

排列方式由android:orientation属性来控制,对齐方法由android:gravity属性来控制
horizontal水平排列
vertical垂直排列
android:gravity:属性用于设置布局管理器内组件的显示位置
android:layout_width:用于设置该组件的基本宽度
android:layout_height:用于设置该组件的基本高度
android:id用于当前组件指定一个id属性
android:background该组件设置背景

android:layout_gravity:用于设置组件在父容器中的位置
android:layout_weight用于设置组件所占的权重,即用于设置组件占父容器剩余空间的比例。

帧布局

android:foreground设置该帧布局容器的前景图像
android:goregroundGravity定义绘制前景图像的gravity属性,也就是前景图像显示的位置

表格布局

表格布局使用< TableLayout >(表格布局管理器)定义,在表格布局中,可以添加多个< TableRow>标记,每个< TableRow>标记占用一行,由于< TableRow>标记也是容器,所以在该标记中还可以添加其他组件,在< TableRow>标记中,每添加一个组件,表格就会增加一列。

网格布局

GridLayout

android:columnCount:用于指定网格的最大列数
android:orientation
用于没有为放入其中的组件分配行和列时,指定其排列方式。其属性值为horizontal表示水平排列,vertical表示垂直排列
android:rowCount用于指定网格的最大行数
android:useDefaultMargins用于指定是否使用默认的边距,其属性值设置为true时,表示使用,为false时,表示不使用
android:aligbnebtMode:用于指定该布局管理器采用的对齐模式,其属性值为alignBounds时,表示对其边界;值为alignMargins时,表示对齐边距,默认值为alignMargins

android:rowCount用于指定网格的最大行数

android:useDefaultMargins用于指定是否使用默认的边距,其属性值设置为true时,表示使用,为false时,表示不使用

android:alignmentMode用于指定该布局管理器采用的对齐模式,其属性值为alignBounds时,表示对齐边界;值为alignMargins时,表示对齐边距,默认值位alignMargins

android:layout_column用于指定该子组件位置网格的第几列
android:layout_columnSpan用于指定该子组件横向跨几列
android:layout_columnWeight用于指定该子组件在水平方向上的权重,即该组件分配水平剩余空间的比例
android:layout_gravity:用于指定该子组件采用什么方式占据该网格的空间。
android:layot_row用于指定该子组件位置网格的第几行
android:layout_rowSpan用于指定该子组件纵向跨几行
android:layout_rowWeight:用于指定该子组件在垂直方向上的权重,即该组件分配垂直剩余空间的比例

界面组件:

imageButton

android:src=@drawable/图片文件名"

TextView

TextView是文本框组件,用于在屏幕上显示文本,这与Java中的文本框组件不同,它相当于Java中的标签,也就是JLable.

EditText

EditText是编辑框组件,用于在屏幕上显示文本输入框,这与java中的文本框组件功能类似。android中的编辑框组件可以输入当行文本,也可以多行,还可以输入指定格式的文本
android:inputType属性,可以帮助输入法显示合适的类型,textPassword为密码

RadioButton

RadioButton为单选按钮,继承了Button

RadioButton的代码题

<RadioGroup>
	android:id="@+id/radioGroup1"
	android:orientation="horizontal"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content">
	<RadioButton
		android:layout_height="wrap_content"
		android:id="@+id/radio0"
		android:text="男"
		android:layout_width="wrap_content"
		android:checked="true"/>
	<RadioButton
		android:layout_height="wrap_content"
		android:id="@+id/radio1"
		android:text="女"
		android:layout_width="wrap_content"/>
	</RadioGroup>


//在改变单选按钮组的值时获取
RadioGroup sex=(RadioGroup)findViewById(R.id.radioGroup1);
sex.setOnCheckedChangListener(new OnCheckedChangeListener(){
    
    

@Override
public void onCheckedChanged(RadioGroup group,int checkedId){
    
    
	RadioButton r=(RadioButton)findViewById(chekedId);
	r.getText();
	}
});


//在单击其他按钮是获取
final RadioGroup sex=(RadioGroup)findViewById(R.id.radioGroup1);
Button button=(Button)findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener(){
    
    

	@Override
	public void onClick(View v){
    
    
		for(int i=0;i<sex.getChildCount();i++){
    
    
			RadioButton r=(RadioButton)sex.getChildAt(i);
			if(r.isChecked(){
    
    
				r.getText();
				break;
			}
		}
	}
});

//在之前的那个例子里面改变单选按钮组的值时获取
final RadioGroup sex=(RadioGroup)findViewById(R.id.radioGroup1);
sex.setOnCheckedChangeListener(new OnCheckedChangeListener(){
    
    

	@Override
	public void onCheckedChanged(RadioGroup group,int checkedId){
    
    
		RadioButton r=(RadioButton)findViewById(checkedId);
		Log.i("单选按钮","您的选择是:"+r.getText());
	}
});


//单击“提交”按钮时获取
Button button=(Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener(){
    
    
	@Override
	public void onClick(View v){
    
    
		for(int i=0;i<sex.getChildCount();i++){
    
    
		RadioButton r=(RadioButton)sex.getChildAt(i);
		if(r.isChecked()){
    
    
			Log.i("单选按钮","性别:" +r.getText());
			break;
		}
	}
}
});
		

Spinner


<Spiner
	android:prompt="@string/info"
	android:entries="@array/数组名称"
	android:layout_height="wrap_content"
	android:layout_width="wrap_content"
	android:id="@+id/ID号”
>
</Spinner>

GridView

网格视图是按照行、列分布的方式来显示多个组件,通常用于显示图片或是图标等。在使用网格视图时,

猜你喜欢

转载自blog.csdn.net/weixin_44522477/article/details/111867668