Android学习——Android界面UI


 

1.系统主题

2.背景选择器

android图片选择器和颜色选择器(合称背景选择器)

图片选择器:drawable中新建选择器xml文件imageselector.xml

<?xml version=“1.0” encoding=“utf-8”?>

<selector xmlns:android=“http://schemas.android.com/apk/res/android” >

    <item android:state_pressed=“true” android:drawable=“@drawable/aa”/>

    <item android:drawable=“@drawable/bb”/>

</selector>

 

颜色选择器:color中新建颜色选择器xml文件:colorselector.xml

<?xml version=“1.0” encoding=“utf-8”?>

<selector xmlns:android=“http://schemas.android.com/apk/res/android” >

    <item android:state_pressed=“true” android:color=“#00FF00”/>

    <item android:color=“#FF0000”/>

</selector>

在布局文件activty_main.xml文件中设置一个Button:

    <Button

        android:id=“@+id/btn”

        android:layout_width=“match_parent”

        android:layout_height=“wrap_content”

        android:text=背景选择器测试

        android:background=“@drawable/imageselector”

        android:textColor=“@drawable/colorselector”/>

运行效果:

点击该按钮后效果:

颜色选择器直接用在设置颜色的地方没问题,但是如background可以放图片也可以放颜色,当直接用颜色选择器报错。解决方法:把颜色当图片用,颜色不要直接写值,写死了,在colors.xml定义后引用即可。

colors.xml:

<?xml version=“1.0” encoding=“utf-8”?>

<resources>

    <string name=“app_name”>AppUIDemo</string>

    <string name=“hello_world”>Hello world!</string>

</resources>

将颜色选择器定义成图片选择器:

<?xml version=“1.0” encoding=“utf-8”?>

<selector xmlns:android=“http://schemas.android.com/apk/res/android” >

    <item android:state_pressed=“true” android:drawable=“@color/color1”/>

    <item android:drawable=“@color/color2”/>

</selector>

引用:

android:background=“@drawable/colorselector2”

运行效果:

点击后:

3. android UI  android界面

3.1 TextView:

android:autoLink=“all”   设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。可选值(none/web/email/phone/map/all)            

android:ellipsize=“marquee”   设置当文字过长时,该控件该如何显示,可选值start,end,marquee:滚动,跑马灯效果,不能设autoLink,并且只有获得焦点时才会有滚动效果,所以需设置:

android:focusableInTouchMode=“true”android:focusable=“true”

android:focusable=“true”       可以获得焦点

android:focusableInTouchMode=“true”   触摸可以获得焦点

android:marqueeRepeatLimit=“marquee_forever” 设置重复滚动的次数

android:singleLine=“true”             设置单行显示

android:textColorLink=“#ff0099”       文字链接的颜色

android:tag=“yes”  View中添加一个tag,相当于一个兜,想放什么就放什么,用的时候再取出来

说明:Android系统中TextView实现跑马灯效果,必须具备以下几个条件:
1)、android:ellipsize=“marquee”
2)、TextView必须单行显示,即内容必须超出TextView大小
3)、TextView要获得焦点才能滚动

3.2 EditText:

3.2.1 EditText属性

android:digits=“12345”          设置只接受某些数字

android:inputType=“number”     设置输入文本的类型

android:numeric=“integer”         设置输入文本的类型,跟输入法有关系,不推荐使用了

android:phoneNumber=“true”     设置输入文本的类型(数字)

android:drawableBottom=“@drawable/icon”文字下方放一个图片

android:cursorVisible=“false”        设置光标是否可见

android:hint=“demo”   为空时显示的文字提示信息

android:textColorHint=“@color/mycolor”    提示文字颜色

android:imeOptions=“actionGo”            Enter键图标设置

可选值有:

actionGo                                     actionSearch

 
 
 

actionSend                                   actionNext

 
 
 

actionDone

 

 

android:lines=“3” 设置文本的行数
android:maxLines=“3” 设置文本的最大显示行数
android:minLines=“3”设置文本的最小行数
android:lineSpacingExtra=“10dp” 设置行间距

android:lineSpacingMultiplier=“2”行间距的倍数

android:password=“true”     密码方式显示

android:visibility=“gone”       是否可见

android:textColor=“#ffcc00”  设置文本颜色
android:textColorHighlight =“#ffcc00”被选中文字的底色 ,默认为蓝色
android:textColorHint =“#ffcc00” 设置提示信息文字的颜色,默认为灰色
android:editable=”false”     设置是否可被编辑

android:enabled=“false”    设置是否可用

android:textScaleX =“1”     文字放大比例

android:textSize =“30sp”   设置文字大小

android:textStyle 设置字形[bold(粗体) 0,italic(斜体)]
android:typeface 设置文本字体,必须是以下常量值之一:normal 0, sans 1, serif 2, monospace(等宽字体) 3

android:height="10dp”高度
android:maxHeight =“10dp”   最大高度
android:minHeight =“10dp”   最小高度
android:width =“20dp” 宽度
android:maxWidth=“20dp”    最大宽度
android:minWidth =“20dp”    最小宽度

android:selectAllOnFocus=“true” 获取焦点时选中所有内容

android:shadowColor=“#ff0099” 指定文本阴影的颜色

android:shadowDx=“2”     设置阴影横向坐标开始位置。

android:shadowDy=“2”      设置阴影纵向坐标开始位置。

android:shadowRadius=“3”   设置阴影的半径(一般设置为3)

android:ems=“3” 设置宽度(单位字符)
android:maxems =“3”设置最长宽度
android:minems=“3” 设置最短宽度
android:maxLength=5   限制输入字符数

android:translationX=“100dp”   X轴方向移动

android:translationY=“100dp”   Y轴方向移动

android:layout_margin=”50dp”  当前View与周边View距离    

android:padding=”50dp”       当前View与内部内容距离

android:layout_gravity=“left” 当前View对齐方式

android:gravity=“left” 当前View内部内容对齐方式 

android:layout_weight=“1”权重(剩余空间按比例划分)

区别:gravity与layout_gravity

gravity控件中的内容相对于控件的对齐方式

layout_gravity控件相对于控件所在容器的对齐方式

在纵向线性布局中,只有左中右有效,上中下无效

在横向线性布局中,只有上中下有效,左中右无效

注意:

match_parent把界面上剩下的空间占满,它前面的没影响,它后面的在当前页面显示不出来

layout_weight:权重,把剩余空间平分,建议写法layout_width=“0dp”

解释:3个Button水平占一行,如果layout_width都是wrap_content那么字符数多的全部显示,并且占的要宽,把剩余的空间平分;

如果layout_width都是match_parent那么各占1/3。

假设一个屏幕宽度是n,3个button各占n,即3n,那么

剩余空间=屏幕宽度n - 控件的总宽度3n = -2n,

平均分成3份即-2n/3

这样,每个控件实际占的是n-2n/3=n/3

也就是说平均分配屏幕宽度

3.2.2 EditText常用监听

setOnTouchListener触摸监听

setOnClickListener 单击监听(对于不可点击View可以添加android:clickable=“true”)

setOnDragListener 拖拽监听

setOnEditorActionListener编辑监听

setOnFocusChangeListener焦点改变监听

setOnKeyListener (View与Activity)按键监听

addTextChangedListener(new TextWatcher(){})文本内容改变监听

setOnLongClickListener长按监听

setOnCreateContextMenuListener创建上下文菜单监听

 

beforeTextChanged()

onTextChanged()

作用在TextView上,给它注册一个上下文菜单

textview.setOnCreateContextMenuListener();

getMenuInflater().inflate(R.id.main,menu);

 

4. Menu菜单

ContextMenu上下文菜单:

 

PopupMenu弹出菜单:

 

OptionsMenu选项菜单

    @Override

    publicboolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

       getMenuInflater().inflate(R.menu.main, menu);

       returntrue;

    }

   @Override

   publicboolean onOptionsItemSelected(MenuItem item) {

      intid = item.getItemId();

      if (id == R.id.action_settings) {

         returntrue;

      }

      returnsuper.onOptionsItemSelected(item);

   }

 

5. 单选RadioButton与多选CheckBox

注意:每一个Layout都要指定它的宽和高,否则报错

(1)获取单选、多选状态:

单选:1.for循环;2.单选按钮组

多选:for循环

   privateint[] ids = { R.id.a, R.id.b, R.id.c };

    private CheckBox[] cbs = new CheckBox[ids.length];

    private RadioButton rb1;

    private RadioGroup group;

rb = (RadioButton) this.findViewById(R.id.man);

group = (RadioGroup) this.findViewById(R.id.group);    

intcheckedId = group.getCheckedRadioButtonId();

    RadioButton rb2 = (RadioButton) this.findViewById(checkedId); 

       //填充cbs中三个多选按钮

        for (inti = 0; i < ids.length; i++) {

      cbs[i] = (CheckBox) this.findViewById(ids[i]);

      System.out.println(cbs[i].getText().toString() + " + cbs[i].isChecked());

       }

运行截图:

2. 区别:单击监听与状态改变监听

单击监听:只有单击才会触发

状态改变并不一定要单击,也可以通过程序改变

单击监听:

       rb = (RadioButton) this.findViewById(R.id.man);

        rb.setOnClickListener(new OnClickListener() {      

        @Override

        publicvoid onClick(View v) {

        Toast.makeText(MainActivity.this, rb.getText().toString(), 0).show();   

        }

        });

状态改变监听:

       rb.setOnCheckedChangeListener(new OnCheckedChangeListener() {

           @Override

       publicvoid onCheckedChanged(CompoundButton buttonView, booleanisChecked) {

           RadioButton rb = (RadioButton) buttonView;

           Toast.makeText(MainActivity.this, rb.getText().toString() + "   " + isChecked, 0).show();

           if (!isChecked) {

              // 通过循环让所有多选按钮取消选中状态

              for (CheckBox cb : cbs) {

                  cb.setChecked(false);

              }

           }

       }

    });

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值