导读

1.TextView
2.Button
3.Android各种控件的监听器
4.EditText
5.ImageView及ImageButton
6.Android 中Xml文件引用资源的方法
7.多选按钮CheckBox
8.单选按钮RadioButton
9.开关按钮ToggleButton
10.进度条ProgressBar
11.可拖动进度条SeekBar
12.星级进度条RatingBar
13.TimePicker与DatePicker

android好看的item_layout_xml

TextView

android好看的item_layout_xml_02

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/textView01"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#ff0000"
        android:text="艾米莉亚克拉克"
      />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Emilia Clarke"
        android:background="@color/colorPrimaryDark"
       />
    <!--这里提供了引用values文件中color.xml的颜色的方法-->

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Emilia Clarke is so beautiful"
        android:background="@drawable/clarke"
        />
    <!--drawable里边可以放jpg或png格式的图片
    jpg所占内存比较小,但无法识别透明度
    png所占内存比较大,但可以识别透明度
    !!!!注意图片导入时要重新命名,不能带有数字
    -->
</LinearLayout>

显示结果

android好看的item_layout_xml_03

strings.xml文件

<resources>
    <string name="app_name">View01</string>
    <string name="myLove">Emilia Clarke i my love</string>
</resources>

布局文件

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/textView01"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:text="http://www.baidu.com"
        android:autoLink="web"
      />
    <!--这里显示特殊格式
    注意google地图无法使用,因为google已经退出了中国
    -->

    <TextView
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:text="Emilia Clarke"
        android:background="@color/colorPrimaryDark"
        android:textColor="#ffffff"
        android:textSize="30sp"
       />
    <!--运用textSize设置字体大小-->

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/myLove"
        />
    <!--android开发关于text文字建议用strings.xml文件,这样有利于不同语言的转换-->

</LinearLayout>

显示结果

android好看的item_layout_android_04

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">



    <TextView
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:text="Emilia Clarke"
        android:gravity="center"
        android:drawableLeft="@mipmap/ic_launcher_round"
        android:drawableRight="@mipmap/ic_launcher_round"
        android:drawableBottom="@mipmap/ic_launcher_round"
        android:drawableTop="@mipmap/ic_launcher_round"
        android:textSize="30sp"
       />
    <!--在文字四周添加图片-->

    <TextView
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:lines="1"
        android:text="@string/call"
        android:ellipsize="end"
        />
    <!--singleLine是使得文字在一行内显示,ellipsize是设置省略号的位置

    -->

    <TextView
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:singleLine="true"
        android:text="@string/call"
        android:ellipsize="marquee"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:textIsSelectable="true"
        android:marqueeRepeatLimit="marquee_forever"
        />
    <!--
    这里下划线表示singleLine的表达方式已经过时,可以用lines代替
    marquee为跑马灯效果
    textIsSelectable是权限设置
    marqueeRepeatLimit为跑马灯的循环次数,这里为无限
    -->

    <TextView
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:lines="2"
        android:text="@string/call"/>
    <!--lines用来设置当文字一行显示不下时可以显示多行-->



</LinearLayout>

显示效果

android好看的item_layout_xml_05

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">





    <TextView
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:lines="1"
        android:text="设置字体风格"
        android:ellipsize="end"
        android:textStyle="bold|italic"
        />
    <!--
    字体风格有三种:正常,粗体,斜体
    -->


    <TextView
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:typeface="monospace"
        android:text="设置字体类型"/>
    <!--
    字体类型有四种:等宽(如上),sans,serif,normal
    -->



</LinearLayout>

显示结果

android好看的item_layout_监听器_06

android好看的item_layout_android_07

android好看的item_layout_xml_08

android好看的item_layout_android_09


⚠️一般来讲xml文件中对应的控件属性,在java中用set,get方法可以获取到

Button

Button是TextView的子类,所以TextView的所有属性也可以运用到Button上

监听器的四种实现方式

android好看的item_layout_监听器_10

前两种方式比较常用,第一种更适合一个监听器监听多个控件,第三种不适用于控件复杂的界面,第四种因为灵活性较差,所以使用较少

第一种:

见Android 之路28 第四部分

第二种:

layout文件

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">





    <Button
        android:id="@+id/btn"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:text="点我呀!"
        android:textSize="30sp"/>



</LinearLayout>

android好看的item_layout_监听器_11

MainActivity.java文件

package com.hala.view01;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    /*
    监听器方法:1.获取Button对象
    2.直接调用button的setOnClickListener方法
    3.在方法中传入 new OnClickListener(){
                    public void onClick(View v){
                    }
                  }
     */
    private Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hala1);

        button=(Button)findViewById(R.id.btn);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "我被点击了~~", Toast.LENGTH_SHORT).show();
                //Toast的用法,实现环境,内容,时长(单位是毫秒,可以自定义,也可以用short,long),不要忘记show
            }
        });
    }


}

显示结果

android好看的item_layout_监听器_12

⚠️⚠️⚠️⚠️⚠️

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.hala.view01">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <!--每个activity都要在这个文件注册,其中intent在哪个activity中,哪个会优先执行-->
    </application>

</manifest>

第三种:

package com.hala.view01;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    /*
    监听器方法:1.获取Button对象
    2.实现OnClickListener接口,重写onClick方法
    3.调用setOnClickListener方法
     */
    private Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hala1);

        button=(Button)findViewById(R.id.btn);
        button.setOnClickListener(this);
    }


    @Override
    public void onClick(View v) {
        Toast.makeText(MainActivity.this, "我被点击了~~", Toast.LENGTH_SHORT).show();
    }
}

显示结果

android好看的item_layout_xml_13

第四种:

布局文件

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">





    <Button
        android:id="@+id/btn"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:text="点我呀!"
        android:textSize="30sp"
        android:onClick="myOnClick"/>



</LinearLayout>

MainActivity.java文件

package com.hala.view01;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    /*
    监听器方法:1.在布局文件中写onClick属性
    2.在java文件中添加以onClick属性名为名的方法
    a.方法修饰符为public
    b.方法返回值为void
    c.方法参数为View
     */

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hala1);

    }

    public void myOnClick(View v){
        Toast.makeText(MainActivity.this, "我被点击了~~", Toast.LENGTH_SHORT).show();
    }


}

显示结果

android好看的item_layout_监听器_14

多个按钮使用一个监听器

package com.hala.view01;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private Button button1,button2;
    ButtonListener bl;

    /*
    监听器方法:1.创建内部类实现OnClickListener接口,用switch重写OnClick方法
    2.用setOnClickListener方法实现监听
     */

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hala1);

        button1=(Button)findViewById(R.id.btn1);
        button2=(Button)findViewById(R.id.btn2);
        bl=new ButtonListener();
        button1.setOnClickListener(bl);
        button2.setOnClickListener(bl);

    }

    class ButtonListener implements View.OnClickListener{

        @Override
        public void onClick(View v) {
            switch (v.getId()){
                case R.id.btn1:
                    Toast.makeText(MainActivity.this, "按钮1被点击了~~", Toast.LENGTH_SHORT).show();
                    break;
                case R.id.btn2:
                    Toast.makeText(MainActivity.this, "按钮2被点击了~~", Toast.LENGTH_SHORT).show();
                    break;
            }
        }
    }


}

显示结果

android好看的item_layout_监听器_15

Android各种控件的监听器

android好看的item_layout_监听器_16

android好看的item_layout_xml_17

android好看的item_layout_监听器_18

EditText

EditText是TextView的子类,所以TextView的属性也适用于EditText

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">


    <EditText
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:inputType="textPassword"
        android:hint="请输入6位数字"
        android:textColorHint="@color/colorPrimary"
        android:maxLength="6"
        />
    <!--inputType为输入格式
    hint是输入的提示信息
    maxLength为最大输入字数
    -->



</LinearLayout>

显示结果

android好看的item_layout_监听器_19

android好看的item_layout_监听器_20

android好看的item_layout_android_21

android好看的item_layout_xml_22

ImageView及ImageButton

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">


   <ImageView
       android:layout_width="wrap_content"
       android:layout_height="250dp"
       android:src="@drawable/clarke"
       android:background="@color/colorAccent"
       android:scaleType="centerInside"/>
    <!--
    src用来导入图片,导入方式与TextView相同
    bacground是背景图
    scaleType是填充方式
    fitCenter-合适比例中央 fitEnd-合适比例底部 fitStart-合适比例顶部
    fixXY-拉伸
    Center-等比放大填充整个ImageView
    centerCrop-按比例放大图片,并居中显示
    centerInside-将图片完全显示在ImageView里,但如果图片很小不做处理
    -->
    <ImageButton
        android:layout_width="match_parent"
        android:layout_height="250dp"
        android:background="@color/colorPrimaryDark"
        android:src="@drawable/clarke"
        android:scaleType="fitCenter"/>
    <!--
    ImageButton结合了ImageView与Button的属性
    -->



</LinearLayout>

android好看的item_layout_android_23

Android 中Xml文件引用资源的方法

android好看的item_layout_android_24

android好看的item_layout_xml_25

android好看的item_layout_xml_26

多选按钮CheckBox

布局文件

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        >

        <TextView
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="match_parent"
            android:text="俱乐部"
            android:gravity="center"
            android:textStyle="bold|italic"/>

        <CheckBox
            android:id="@+id/bt1"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:text="巴塞罗那"
            android:checked="true"/>
        <!--checked为选项的默认状态-->

        <CheckBox
            android:id="@+id/bt2"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:text="尤文图斯"/>
        <CheckBox
            android:id="@+id/bt3"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:text="利物浦"/>
    </LinearLayout>


</LinearLayout>

java文件

package com.hala.view01;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private CheckBox bt1,bt2,bt3;
    private  checkBoxListener cbl;

    /*
    监听器方法:1.创建内部类实现OnClickListener接口,用switch重写OnClick方法
    2.用setOnClickListener方法实现监听
     */

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hala1);

        initView();
        setListener();

        //不要忘了将自己编写的方法在这里声明
    }

    private void setListener(){

        cbl=new checkBoxListener();
        bt1.setOnCheckedChangeListener(cbl);
        bt2.setOnCheckedChangeListener(cbl);
        bt3.setOnCheckedChangeListener(cbl);
    }


    private void initView(){
        bt1=(CheckBox)findViewById(R.id.bt1);
        bt2=(CheckBox)findViewById(R.id.bt2);
        bt3=(CheckBox)findViewById(R.id.bt3);
    }

    class checkBoxListener implements CompoundButton.OnCheckedChangeListener{

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            CheckBox ck=(CheckBox)buttonView;
            //这一步的目的是向下转型成CheckBox
            switch (ck.getId()){
                case R.id.bt1:
                    Toast.makeText(MainActivity.this, "加盟巴塞罗那~~", Toast.LENGTH_SHORT).show();
                    break;
                case R.id.bt2:
                    Toast.makeText(MainActivity.this, "加盟尤文图斯~~", Toast.LENGTH_SHORT).show();
                    break;
                case R.id.bt3:
                    Toast.makeText(MainActivity.this, "加盟利物浦~~", Toast.LENGTH_SHORT).show();
                    break;
            }
        }
    }




}

显示结果

android好看的item_layout_监听器_27

android好看的item_layout_监听器_28

⚠️xml文件写注释的快捷键 command+?

单选按钮RadioButton

android好看的item_layout_xml_29

布局文件

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

   <!--
   RadioButton是圆形单选框
   RadioGroup是一个放RB的容器,在它里边只能有一个RB被选中
   -->

    <RadioGroup
        android:id="@+id/rg1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="性别"/>

     <RadioButton
         android:id="@+id/rb1"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="男"/>

        <RadioButton
            android:id="@+id/rb2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="女"/>

    </RadioGroup>

</LinearLayout>

java文件

package com.hala.view01;

import android.os.Bundle;
import android.support.annotation.IdRes;
import android.support.v7.app.AppCompatActivity;

import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private RadioGroup rg;
    private RadioButton rb1,rb2;

    private radioButtonListener rbl;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hala1);

        rg=(RadioGroup)findViewById(R.id.rg1);
        rb1=(RadioButton)findViewById(R.id.rb1);
        rb2=(RadioButton)findViewById(R.id.rb2);


        rbl=new radioButtonListener();
        //注意注意注意  这里是在RadioGroup上绑定监听器,而不是在RadioButton上
        rg.setOnCheckedChangeListener(rbl);

    }

    //注意多选和单选的实现接口名虽然相同,但来自不同的包注意区分
    class radioButtonListener implements RadioGroup.OnCheckedChangeListener{

        @Override
        public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) {
            switch(checkedId){
                case R.id.rb1:
                    Toast.makeText(MainActivity.this, "当前用户为男性", Toast.LENGTH_SHORT).show();
                    break;
                case R.id.rb2:
                    Toast.makeText(MainActivity.this, "当前用户为女性", Toast.LENGTH_SHORT).show();
                    break;
            }
        }
    }





}

显示结果

android好看的item_layout_android_30

android好看的item_layout_监听器_31

开关按钮ToggleButton

布局文件

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

  <TextView
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:text="你喜欢rap吗?"/>

    <ToggleButton
        android:id="@+id/tb"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textOn="喜欢"
        android:textOff="不喜欢"
        android:checked="true"/>
    <!--On与off分别为开关打开或关闭的显示内容
    checked是默认状态
    -->

   <ImageView
       android:id="@+id/iv"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:src="@drawable/clarke"/>

</LinearLayout>

java文件

package com.hala.view01;

import android.os.Bundle;
import android.support.annotation.IdRes;
import android.support.v7.app.AppCompatActivity;

import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ToggleButton;

public class MainActivity extends AppCompatActivity {

   private ToggleButton tb;
    private ImageView iv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hala1);


        tb=(ToggleButton)findViewById(R.id.tb);
        iv=(ImageView)findViewById(R.id.iv);
        tb.setOnClickListener(new View.OnClickListener() {
        //此处监听器可以是OnClickListener也可以是OnCheckChangeListener
            @Override
            public void onClick(View v) {

               if(tb.isChecked()){
                   Toast.makeText(MainActivity.this, tb.getText().toString(), Toast.LENGTH_SHORT).show();
                   iv.setImageResource(R.drawable.clarke);
               }else{
                   Toast.makeText(MainActivity.this, tb.getText().toString(), Toast.LENGTH_SHORT).show();
                   iv.setImageResource(R.drawable.conan);
               }
            }
        });

    }








}

显示结果

android好看的item_layout_xml_32

android好看的item_layout_android_33

android好看的item_layout_android_34

android好看的item_layout_android_35

android好看的item_layout_监听器_36

进度条ProgressBar

android好看的item_layout_监听器_37

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">


   <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="默认"/>
    <ProgressBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="超大号圆形" />
    <ProgressBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        style="?android:attr/progressBarStyleLargeInverse"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="小号圆形"/>
    <ProgressBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        style="?android:attr/progressBarStyleSmall"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="水平方向"/>
    <ProgressBar
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:max="100"
        android:progress="30"
        android:secondaryProgress="70"
        style="?android:attr/progressBarStyleHorizontal"/>

    <!--注意设置进度条风格的写法
    max-最大进度
    progress-当前进度
    secondaryProgress-次要进度,缓冲进度
    -->

</LinearLayout>

显示结果

android好看的item_layout_android_38

android好看的item_layout_监听器_39

可拖动进度条SeekBar

android好看的item_layout_xml_40

android好看的item_layout_监听器_41

布局文件

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">


    <SeekBar
        android:id="@+id/seekbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

        />

</LinearLayout>

java文件

package com.hala.view01;

import android.os.Bundle;
import android.support.annotation.IdRes;
import android.support.v7.app.AppCompatActivity;

import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ToggleButton;

public class MainActivity extends AppCompatActivity {


    private SeekBar sb;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hala1);

        sb=(SeekBar)findViewById(R.id.seekbar);
        //设置进度条的最大值和当前值
        sb.setMax(100);
        sb.setProgress(30);
        sb.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                /*在进度发生变化时被触发
                第一个参数:当前绑定的seekBar对象
                第二个参数:当前进度数值
                第三个参数:是否为用户手动触发
                 */
                Log.i("process",sb.getProgress()+"");

            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
                //在开始拖动进度条时被触发
                Log.i("process","开始"+sb.getProgress()+"");
            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                //在结束拖动进度条时被触发

                Log.i("process","结束"+sb.getProgress()+"");

            }
        });
    }








}

显示结果

01-23 17:25:45.905 4274-4274/com.hala.view01 I/process: 开始30 
 01-23 17:25:45.905 4274-4274/com.hala.view01 I/process: 31 
 01-23 17:25:46.231 4274-4274/com.hala.view01 I/process: 32 
 01-23 17:25:46.270 4274-4274/com.hala.view01 I/process: 33 
 01-23 17:25:46.283 4274-4274/com.hala.view01 I/process: 34 
 01-23 17:25:46.319 4274-4274/com.hala.view01 I/process: 35 
 01-23 17:25:46.338 4274-4274/com.hala.view01 I/process: 37 
 01-23 17:25:46.355 4274-4274/com.hala.view01 I/process: 38 
 01-23 17:25:46.372 4274-4274/com.hala.view01 I/process: 40 
 01-23 17:25:46.427 4274-4274/com.hala.view01 I/process: 42 
 01-23 17:25:46.466 4274-4274/com.hala.view01 I/process: 43 
 01-23 17:25:46.499 4274-4274/com.hala.view01 I/process: 44 
 01-23 17:25:46.535 4274-4274/com.hala.view01 I/process: 45 
 01-23 17:25:46.552 4274-4274/com.hala.view01 I/process: 46 
 01-23 17:25:46.568 4274-4274/com.hala.view01 I/process: 47 
 01-23 17:25:46.586 4274-4274/com.hala.view01 I/process: 49 
 01-23 17:25:46.603 4274-4274/com.hala.view01 I/process: 50 
 01-23 17:25:46.622 4274-4274/com.hala.view01 I/process: 52 
 01-23 17:25:46.640 4274-4274/com.hala.view01 I/process: 54 
 01-23 17:25:46.657 4274-4274/com.hala.view01 I/process: 55 
 01-23 17:25:46.672 4274-4274/com.hala.view01 I/process: 56 
 01-23 17:25:46.748 4274-4274/com.hala.view01 I/process: 57 
 01-23 17:25:46.784 4274-4274/com.hala.view01 I/process: 58 
 01-23 17:25:46.871 4274-4274/com.hala.view01 I/process: 59 
 01-23 17:25:46.886 4274-4274/com.hala.view01 I/process: 60 
 01-23 17:25:46.905 4274-4274/com.hala.view01 I/process: 61 
 01-23 17:25:46.914 4274-4279/com.hala.view01 I/zygote: Do partial code cache collection, code=30KB, data=27KB 
 01-23 17:25:46.915 4274-4279/com.hala.view01 I/zygote: After code cache collection, code=30KB, data=27KB 
 01-23 17:25:46.915 4274-4279/com.hala.view01 I/zygote: Increasing code cache capacity to 128KB 
 01-23 17:25:46.923 4274-4274/com.hala.view01 I/process: 62 
 01-23 17:25:46.939 4274-4274/com.hala.view01 I/process: 63 
 01-23 17:25:46.959 4274-4274/com.hala.view01 I/process: 64 
 01-23 17:25:47.016 4274-4274/com.hala.view01 I/process: 65 
 01-23 17:25:47.048 4274-4274/com.hala.view01 I/process: 66 
 01-23 17:25:47.086 4274-4274/com.hala.view01 I/process: 67 
 01-23 17:25:47.121 4274-4274/com.hala.view01 I/process: 68 
 01-23 17:25:47.142 4274-4274/com.hala.view01 I/process: 69 
 01-23 17:25:47.158 4274-4274/com.hala.view01 I/process: 70 
 01-23 17:25:47.175 4274-4274/com.hala.view01 I/process: 71 
 01-23 17:25:47.209 4274-4274/com.hala.view01 I/process: 72 
 01-23 17:25:47.247 4274-4274/com.hala.view01 I/process: 73 
 01-23 17:25:47.297 4274-4274/com.hala.view01 I/process: 74 
 01-23 17:25:47.335 4274-4274/com.hala.view01 I/process: 75 
 01-23 17:25:47.354 4274-4274/com.hala.view01 I/process: 76 
 01-23 17:25:47.390 4274-4274/com.hala.view01 I/process: 77 
 01-23 17:25:47.408 4274-4274/com.hala.view01 I/process: 78 
 01-23 17:25:47.446 4274-4274/com.hala.view01 I/process: 79 
 01-23 17:25:47.573 4274-4274/com.hala.view01 I/process: 80 
 01-23 17:25:47.680 4274-4274/com.hala.view01 I/process: 81 
 01-23 17:25:47.732 4274-4274/com.hala.view01 I/process: 82 
 01-23 17:25:48.163 4274-4274/com.hala.view01 I/process: 81 
 01-23 17:25:48.775 4274-4274/com.hala.view01 I/process: 80 
 01-23 17:25:49.251 4274-4274/com.hala.view01 I/process: 结束80

android好看的item_layout_xml_42

星级进度条RatingBar

布局文件

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">


  <RatingBar
      android:id="@+id/rt"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:isIndicator="false"
      android:numStars="6"
      android:stepSize="0.5"
      />
    <!--
    isIndicator表示是否是指示器,true代表不许用户更改,false表示可以更改
    numStars-星星数量
    stepSize-单位值,0。5表示半颗星为一单位
    -->

</LinearLayout>

java文件

package com.hala.view01;

import android.os.Bundle;
import android.support.annotation.IdRes;
import android.support.v7.app.AppCompatActivity;

import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RatingBar;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ToggleButton;

public class MainActivity extends AppCompatActivity {


    private RatingBar rb;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hala1);

        rb=(RatingBar)findViewById(R.id.rt);
       rb.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
           @Override
           public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
               /*
               第一个参数:当前绑定ratingBar对象
               第二个参数:当前评分进度
               第三个参数:是否由用户触发
                */
               System.out.println("当前评分:"+rating+"是否来自用户:"+fromUser+"每次评分刻度:"+ratingBar.getStepSize());
           }
       });
    }








}

显示结果

android好看的item_layout_监听器_43

TimePicker与DatePicker

布局文件

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">




  <TimePicker
      android:id="@+id/tp"
      android:layout_width="wrap_content"
      android:layout_height="match_parent"></TimePicker>



</LinearLayout>

java文件

package com.hala.view01;

import android.icu.util.Calendar;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.IdRes;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;

import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RatingBar;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;
import android.widget.ToggleButton;

public class MainActivity extends AppCompatActivity {


    private TimePicker tp;
    private int year,month,day,hour,minute;
    @RequiresApi(api = Build.VERSION_CODES.N)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hala1);

      tp=(TimePicker)findViewById(R.id.tp);
      getCurrentTime();
      setPicker();
    }

    @RequiresApi(api = Build.VERSION_CODES.N)
    private void getCurrentTime(){

        //获取当前时间
        Calendar calendar=Calendar.getInstance();
        //设置其为24小时制
        hour=calendar.get(Calendar.HOUR);
        minute=calendar.get(Calendar.HOUR);
    }

    @RequiresApi(api = Build.VERSION_CODES.M)
    private void setPicker(){
        //设置时间选择器为24小时
        tp.setIs24HourView(true);
        tp.setHour(hour);
        tp.setMinute(minute);

        tp.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
            @Override
            public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {

            }
        });
    }







}

显示结果

android好看的item_layout_android_44