1、Android界面元素的5个主要组成部分

(1)视图

(2)视图容器

(3)布局管理

(4)activity

(5)fragment

2、Android常用的布局

(1)LinearLayout:线性布局

(2)RelativeLayout:相对布局

(3)TableLayout:表格布局

(4)AbsoluteLayout:绝对布局

3、Android中的两种创建布局的方式

(1)在XML布局文件中声明

(2)在程序中直接实例化布局及其组件

//创建布局管理器
FrameLayout frameLayout = new FrameLayout(this);
//设置布局管理器背景颜色
frameLayout.setBackgroundColor(getResources().getColor(R.color.colorAccent));
//设置activity显示布局管理
setContentView(frameLayout);
//创建TextView文本展示对象
TextView textView = new TextView(this);
//设置展示内容
textView.setText("在代码中控制UI界面");
//设置字体大小
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP,24);
//将textView添加到布局管理器中
frameLayout.add(textView);

4、线性布局

(1)android:id布局组件的唯一标识

android:id="@+id/ll_my_layout"

(2)android:orientation设置线性布局内部组件的排列形式

a.horizontal:水平排布

b.vertical:垂直排布

android:orientation="horizontal"

(3)android:layout_height设置组件高度

a.match_parent:占据父组件相应大小

b.wrap_content:包裹内容大小

c.50dp:设定固定大小

android:layout_height="match_parent" 
android:layout_height
="wrap_content"
android:layout_height="50dp"

 (4)android:layout_weight设置组件宽度

android:layout_weight="match_parent"android:layout_weight="wrap_content"android:layout_weight="50dp"

(5)android:gravity设置容器内部组件的对齐方式

a.center:水平垂直居中

b.center_horizontal:水平居中

c.center_vertical:垂直居中

d.left:靠容器左侧

e.top:靠容器上部

f.right:靠容器右侧

g.bottom:靠容器底部

android:gravity="center"
android:gravity="center_horizontal"
android:gravity="center_vertical"
android:gravity="left"
android:gravity="top"
android:gravity="right"
android:gravity="bottom"

ps:同一属性多组值用“|”隔开

android:gravity="center_horizontal|center_vertical"

(6)android:layout_gravity指定当前组件在容器中的对齐方式

android:layout_gravity="center"
android:layout_gravity="center_horizontal"
android:layout_gravity="center_vertical"
android:layout_gravity="left"
android:layout_gravity="top"
android:layout_gravity="right"
android:layout_gravity="bottom"

ps:在horizontal布局下,左右位置改变不了;在vertical布局下,上下位置改变不了

(7)android:background设定容器背景颜色或图片

android:background="@color/colorAccent"
android:background="@drawable/perfect"

(8)android:layout_margin设置外边距

(9)android:padding设置内边距

(10)android:weightSum设定容器总权重

(11)android:layout_weight设定该组件所占权重

5、相对布局

(1)相对于指定ID控件

a.android:layout_above将控件位置设定在指定ID控件之上

b.android:layout_below将控件位置设定在指定ID控件之下

c.android:layout_toLeftOf将控件位置设定在指定ID控件左侧

d.android:layout_toRightOf将控件位置设定在指定ID控件右侧

e.android:layout_alignLeft设置控件与指定ID控件左边界对齐

f.android:layout_alignRight设置控件与指定ID控件右边界对齐

g.android:layout_alignTop设置控件与指定ID控件上边界对齐

h.android:layout_alignBottom设置控件与指定ID控件下边界对齐

i.android:layout_alignBaseline设置控件与指定ID控件的基线对齐,设置边界对齐以及指定上线相对位置失效

(2)相对于父组件

a.android:layout_alignParentTop设置组件处于父容器顶部

b.android:layout_alignParentLeft设置组件处于父容器左侧

c.android:layout_alignParentRight设置组件处于父容器右侧

d.android:layout_alignParentBottom设置组件处于父容器底部

(3)居中属性

a.android:layout_centerHorizontal在父容器中水平居中

b.android:layout_centerVertical在父容器中垂直居中

c.android:layout_centerInParent在父容器中水平、垂直居中

6、表格布局

(1)android:shrinkColumns设置可收缩的列,可以指定多组值

(2)android:stretchColumns设置可伸展的列,可以指定多组值

(3)android:collapseColumns设置可隐藏的列,可以指定多组值

(4)android:layout_column指定单元格在第几列显示

(5)android:layout_span合并单元格

(6)如何确定行和列

a.如果我们直接向TableLayout中添加一个组件,该组件占满一行

b.如果我们想一行中展示多列,使用TableRow包裹多个组件

c.TableLayout布局列数由TableRow中组数最多的那一行确定

d.TableRow中宽度默认是match_parent,设置其他值不生效,高度默认是wrap_content,设置其他值也不生效

7、绝对布局

(1)坐标原点在屏幕左上角:layout_x、layout_y

8、网格布局

(1)android:rowCount设置布局总行数

(2)android:columnCount设置布局总列数

(3)android:layout_columnSpan单元格占多列

(4)android:layout_rowSpan单元格占多行

(5)android:rowWeight行权重

(6)android:columnWeight列权重

 9、Android系统中引用了三个事件模型

(1)事件

(2)事件源

(3)事件监听器

10、Android中的事件监听器

(1)OnClickListener:单击事件,当用户点击某个组件或者方向键触发该事件

et_phone.setOnClickListener(new View.OnClickListener(){
   @Override 
   public void onClick(View view){
//三个参数:上下文对象;弹框展示内容;弹框展示事件 Toast.makeText(MainActivity.
this,"执行了电话点击事件",Toast.LENGTH_SHORT).show(); et_phone.setText(""); } });

(2)OnFocusChangeListener:焦点事件,当组件获得或者失去焦点时触发该事件

et_phone.setOnFocusChangeListener(new View.OnFocusChangeListener(){
   @Override
    public void OnFocusChange(View view,boolean b){
        if(b){
            Toast.makeText(MainAcitivity.this,"电话框获取焦点",Toast.LENGTH_SHORT).show();
        }else{
            Toast.makeText(MainAcitivity.this,"电话框失去焦点",Toast.LENGTH_SHORT).show();
        }
    }
});

(3)OnKeyListener:按键事件,当用户按下或者释放设备上的某个按键触发该事件

(4)OnCreateContextMenuListener:创建上下文菜单事件,当创建上下文菜单时触发该事件

(5)OnCheckedChangeListener:选项改变事件,当选择改变时触发该事件

cb_read.setOnCheckedChangeListener(new CompoundButton.OnOnCheckedChangeListener(){
    @Override
    public void onCheckedChange(CompoundButton compoundButton,boolean b){
        if(b){
            Toast.makeText(MainActivity.this,"选中爱好:阅读",Toast.LENGTH_SHORT).show();
        }else{
            Toast.makeText(MainActivity.this,"取消选中爱好:阅读",Toast.LENGTH_SHORT).show();
        }
    }
});

11、在程序中实现事件监听器,通常有四种形式

(1)activity本身作为事件监听器:通过activity实现监听器接口,并实现事件处理方法

(2)匿名内部类形式:使用匿名内部类创建事件监听器对象

(3)内部类或外部类形式:将事件监听类定义为当前类的内部类或普通的外部类

(4)绑定标签:在布局文件中为指定标签绑定事件处理方法

12、实现基于监听的事件处理有三步

(1)实现基于监听的事件处理步骤

(2)在事件处理方法中编写事件处理代码

(3)在相应的组件上注册监听器

13、Android为view中提供了事件处理的回调方法

(1)onKeyDown()

(2)onKeyUp()

(3)onTouchEvent()

 14、TextView

(1)android:text

(2)android:textColor

(3)android:textSize

(4)android:textStyle设置字体展示样式,normal常规、bold加粗、italic倾斜

(5)android:gravity设置文本内容对齐方式

a.center_vertical垂直居中

b.center_horizontal水平居中

c.center垂直水平居中

d.left、right、top、botton居左、居右、居上、居下

(6)android:background设置背景颜色或图片

(7)android:drawableTop设置文字上方展示图片

(8)android:drawablePadding设置文字和图片之间的距离

(9)android:padding设置内边距

(10)android:autoLink

android:text="https://www.baidu.com"
android:autoLink="web"

(11)android:singleLine固定文本展示为一行

(12)android:ellipsize设定文本过长时展示样式

(13)android:focusable设定是否可以获取焦点

(14)android:focusableInTouchMode是否可以通过触摸方式获取焦点

(15)android:marqueeRepeatLimit循环次数

<!--TextView的跑马灯效果-->
android:singleLine="true"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:marqueeRepeatLimit="marquee_forever"

15、EditText

(1)android:hint设置提示信息

(2)android:inputType

a.number:只能输入数字

b.textPassword:可以输入字母加数字格式密码

c.numberPassword:只能输入数字格式密码

d.textMultiLine:多行展示输入信息

(3)android:enabled设置是否可编辑

(4)修改光标样式

<solid android:color="#ff0000">
<size android:width="2dp">
android:textCursorDrawable="@drawable/cursor_back"

(5)错误信息展示

submit.setOnClickListener(new View.OnClickListener(){
    @Override
    public void onClick(View view){
        if(set_error.getText().toString.equals("123")){
            Toast.makeText(EditTextDemo01Activity.this,"验证成功",Toast.LENGTH_SHORT).show();
        }else{
            set_error.setError("验证失败");
        }
    }
});

(6)修改密码是否可见

//获取焦点起始位置
int pos = password.getSelectionStart();
//隐藏密码
if(password.getInputType() != (InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_VARIATION_PASSWORD)){
    password.getInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_VARIATION_PASSWORD);
}else{
    //展示密码
    password.getInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
}

16、Button

(1)OnLongClickListener长按监听

a.方法返回true时:长按按钮时,点击事件不响应,普通点击,点击事件仍然有效

b.方法返回false时:长按按钮,当松开按钮时,点击事件仍响应

17、RadioButton与RadioGroup

(1)使用RadioGroup进行分组,RadioGroup放置多个RadioButton,每组中只能有一个RadioButton被选中

(2)通过对RadioGroup设定OnCheckedChangeListener响应选中状态改变事件

(3)调用RadioGroup中clearCheck()或check(-1)清除选中项

18、checkBox

(1)通过CompoundButton.OnCheckedChangeListener实现选中状态改变事件监听

19、Switch 

(1)android:checked设置开关默认状态,true表示开,false表示关

(2)android:textOff指定开关关闭状态展示文本

(3)android:textOn指定开关打开状态展示文本

(4)android:showText设定展示不同状态下文本显示

android:checked="true"
android:textOff="关"
android:textOn="开"
android:showText="true"

(5)android:thumb自定义按钮

(6)android:track自定义轨迹

(7)android:switchTextAppearance自定义不同状态下,展示文本样式

(8)OnCheckedChangeListener响应组件状态改变事件监听

20、ImageView

(1)图片尺寸大于imageView组件尺寸,src/background压缩图片展示完整的图片

(2)图片尺寸小于imageView组件尺寸,src直接展示原图,不进行拉伸;background拉伸图片,直至铺满整个组件

(3)background位于src之下

(4)src资源受scalaType属性控制,而background不受scalaType属性控制

(5)scalaType

a.matrix:以矩阵方式来绘制,从imageView左上角开始绘制图片,不缩放原图,超出的部分直接裁剪

b.center:保持原图大小,显示在imageView中心,超出部分直接裁剪

c.centerCrop:保持图像纵横比进行缩放,直至完全覆盖imageView,超过imageView部分,直接裁剪

d.centerInside:保持图像纵横比进行缩放,直至完全展示整个图片

e.fitXY:不考虑原图比例,拉伸或缩放,直至填满imageView

f.fitStart:将原图按比例进行缩放,将图片放置到imageView左上角

g.fitCenter:将原图按比例进行缩放,放置于imageView中心

h.fitEnd:将原图按比例进行缩放,放置于imageView右下角

(6)setImageResource动态设定组件展示资源

(7)setImageAlpha动态设定组件透明度

21、Android提供了对话框支持,常用的有

(1)AlertDialog提示对话框

(2)ProgressDialog进度条对话框

(3)DataPickerDialog日期对话框

(4)TimePickerDialog时间对话框

22、AlertDialog

(1)创建内部类builder

AlertDialog.Builder builder = new AlertDialog.Builder(AlertDialogDemoActivity.this);

(2)对dialog对话框相关属性进行设定

bulider.setTitle("操作提示");
bulider.setMessage("确认退出吗?");
posted on 2021-04-30 15:16  樱花飘落の季節  阅读(357)  评论(0编辑  收藏  举报