7 Android UI组件使用2

2、进度条 Progressbar

属性名描述
android:animationResolution超时的动画帧之间的毫秒;必须是一个整数值,如"100"。
android:indeterminate超时的动画帧之间的毫秒;必须是一个整数值,如"100"。
android:indeterminateBehavior定义当进度达到最大时,不确定模式的表现;该值必须为repeat或者cycle,repeat表示进度从0重新开始; cycle表示进度保持当前值,并且回到0
android:indeterminateDrawable定义不确定模式是否可拉
android:indeterminateDuration时间不定的动画
android:indeterminateOnly限制为不定模式
android:max定义进度的最大值
android:maxHeight进度Widget最大高
android:minHeight进度Widget最小高
android;maxWidth进度Widget最大宽
android:minWidth进度Widget最小宽
android:mirrorForRtl定义了相关画板如果需要反映在RTL模式
android:progress设置进度的默认值,值介于0到max之间
android:secondaryProgress定义二级进度值,值介于0到max。该进度在主进度和背景之间。比如用于网络播放视频时,二级进度用于表示缓冲进度,主进度用于表示播放进度。
android:progressDrawable自定义drawable显示
android:interpolator设置动画速度

进度条样式:

@android:style/Widget.ProgressBar.Horizontal:水平进度条(可以显示刻度,常用)。
@android:style/Widget.ProgressBar.Small:小进度条。
@android:style/Widget.ProgressBar.Large:大进度条。
@android:style/widget.ProgressBar.Inverse:不断跳跃.旋转画面的进度条。
@android:style/widget.ProgressBar.Large.Inverse:不断跳跃、旋转动i画的大进度条。
@android:style/Widget.ProgressBar.Small.Inverse:不断跳跃、旋转动画的小进度条。

    <ProgressBar
        android:id="@+id/progressBar"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

android: max:进度条的最大值
android:progress:进度条已完成进度值
android:progressDrawable:设置轨道对应的Drawable对象
android:indeterminate:如果设置成true,则进度条不精确显示进度
android:indeterminateDrawable:设置不显示进度的进度条的Drawable对象
android:indeterminateDuration:设置不精确显示进度的持续时间
android:secondaryProgress:二级进度条,类似于视频播放的一条是当前播放进度,一条是缓冲进度,前者通过progress属性进行设置!

<ProgressBar
        android:id="@+id/progressBar"
        style="?android:attr/progressBarStyleHorizontal"
        android:max="100"
        android:progress="30"
        android:secondaryProgress="50"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

getMax():返回这个进度条的范国的上限
getProgress():返回进度
getsecondaryProgress():返回次要进度
incrementProgressBy(int diff);指定增加的进度
isTndeterminate():指示进度条是否在不确定模式下
setindeterminate( boolean indeterminate):设置不确定模式下

例:每点击增加,第一进度条+5,第二进度条+10
layout中

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">  
    <TextView
        android:id="@+id/tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </TextView>
    <ProgressBar
        android:id="@+id/progressBar"
        style="?android:attr/progressBarStyleHorizontal"
        android:indeterminate="false"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <ProgressBar
        android:id="@+id/progressBar2"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <Button
        android:id="@+id/btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="增加"
        android:onClick="add"/>
</LinearLayout>

java 中MainActivity

public class MainActivity extends AppCompatActivity {
    private ProgressBar progressBar;
    private TextView tv;
    private String  meg;            //定义一个变量

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        progressBar=findViewById(R.id.progressBar);         //初始化
        tv=findViewById(R.id.tv);
        progressBar.setMax(100);                           //设置进度条值/
        progressBar.setProgress(20);
        progressBar.setSecondaryProgress(30);

        meg="第一进度:"+progressBar.getProgress()+",第二进度:"+progressBar.getSecondaryProgress();
        tv.setText(meg);
    }

/** 事件处理方法 **/
    public void  add(View view){
      //progressBar.setSecondaryProgress();
      //每次更改进度的刻度
        if(progressBar.getProgress()<progressBar.getMax())    //做判断:第一进度小于最大进度
        {
            progressBar.incrementProgressBy(5);         //增加一次加5
        }
        if(progressBar.getSecondaryProgress()<progressBar.getMax())    //做判断:第二进度小于最大进度
        {
            progressBar.incrementSecondaryProgressBy(10);     //增加一次加10
        }
      //  progressBar.incrementProgressBy(5 );
     //   progressBar.incrementSecondaryProgressBy( 10);
        meg="第一进度:"+progressBar.getProgress()+",第二进度:"+progressBar.getSecondaryProgress(); //显示
        tv.setText(meg);
    }
}

①拖拽进度条( SeekBar)

setonSeekearchangeListener(onseekBarchangeListener ) :设置改变的监听
onSeekBarchangelistener : onProgresschanged(SeekBar seekBar, intprogress,boolean fromUser):进度改变
onstartTrackingTouch(SeekBarseekBar):按下滑杆
onstopTrackingTouch(SeekBar seekBar):从滑杆离开

例:拖拽到某一位置,显示对应数值
layout中

 <SeekBar
        android:id="@+id/seekBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:max="100"
        android:progress="30"/>

java 中MainActivity

public class MainActivity extends AppCompatActivity {

    private SeekBar seekBar;

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

        seekBar=findViewById(R.id.seekBar);
        seekBar.setOnSeekBarChangeListener(new MyListner()); //添加一个监听器
    }

    class MyListner implements SeekBar.OnSeekBarChangeListener{

        //进度改变
        @Override
        // SeekBar seekBar:有多个seekBar时,判断按下了那个?  int progress:进度值  boolean fromUser:从哪一个用户来的
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
           Log.i("info",progress+","+fromUser);  //打印消息
        }

        //按下滑杆
        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            Log.i("info",seekBar.getProgress()+"按下滑杆");
        }

        //从滑杆离开
        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            Log.i("info",seekBar.getProgress()+"停止滑动");
        }
    }
/** 事件处理方法 **/
    public void  add(View view){
    }

效果显示
在这里插入图片描述
②设置星级(RatingBar)

android:rating=“0.5” //每次打五颗星
android:numStars=“5” //显示五颗星

3、警告框(AlertDialog)
在Android应用中,有多种对话框:Dialog、AlertDialog、ProgressDialog、时间、日期等对话框。
Dlalog类,是一切对话框的基类,需要注意的是,Dialog类虽然可以在界面上显示,但是并非继承与习惯的View类,而是直接从java.lang.Object开始构造出来的,类似于Activity,Dialog也是有生命周期的,它的生命周期由Activity来维护。Activity负责生产,保存,回复它,在生命周期的每个阶段都有一些回调函数供系统方向调用。
AlertDialog是Dialog的一个直接子类,AlertDialog也是Android系统当中最常用的对话框之一。一个AlertDialog可以有***两个Button或3个Button***,可以对一个AlertDialog设置title和message.不能直接通过AlertDialog的构造函数来生成一个AlertDialog.一般生成AlertDialog的时候都是通过它的一个内部静态类AlertDialog.builder来构造的。

①使用AlertDialog.Builder创建对话框需要了解以下几个方法:

setTitle :为对话框设置标题
setlcon :为对话框设置图标
setMessage:为对话框设置内容
setView :给对话框设置自定义样式
setltems :设置对话框要显示的一个list,一般用于显示几个命令时
setMultichoiceltems:用来设置对话框显示一系列的复选框
setNeutralButton:普通按钮
setPositiveButton:给对话框添加"Yes"按钮
setNegativeButton:对话框添加"No"按钮
create :创建对话框
show :显示对话框
setonShowListener : 对话框显示时触发的事件;
setOnCancelListener :对话框消失时触发的事件

show():显示警告框
create():创建AlertDialog对象
show():创建AlertDialog对象,同时将其显示出来
setTitle(CharSequence title):设置标题
setMessage(CharSequence message):设置内容
setPositiveButton(String text,OnClickListener listener):设置正面按钮
setNegativeButton(String text,OnClickListener listener):设置负面按钮
dismiss():移除dialog
setSinglechoiceltems(…)设置单选项列表

②测试界面
1.测试AlertDialog
2.测试ProgressDialog
3.测试DatePickDialog 、TimePickDialog

显示一般 AlertDialog
显示单选列表 AlertDialog
显示自定义 AlertDialog
显示圆形进度 ProgressDialog
显示水平进度 ProgressDialog
显示 DatePickerDialog
显示TimePickerDialog

例:对话框:显示一般 AlertDialog
layout

   <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="dialog"
        android:text="显示一般AlertDialog"/>

MainActivity中

public class MainActivity extends AppCompatActivity {

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

    }

    //显示一般对话框
    public void dialog(View v){
        //1、构建一个dialog的对象
        AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
        //2、设置对话框基本属性
        builder.setTitle("普通对话框");
        builder.setIcon(R.drawable.ic_launcher_foreground);
        builder.setMessage("确定要删除吗?");


        //设置确定按钮,new DialogInterface.OnClickListener()匿名内部类
        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Log.i("info","确定删除");
            }
        });
        // 设置取消按钮
        builder.setNegativeButton("取消",new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Log.i("info","取消删除");
            }
        });
        //设置普通按钮
        //builder.setNeutralButton();


        //3、创建对话框
        AlertDialog dialog=builder.create();
        //4、显示对话框
        dialog.show();
        }
    }

效果:
在这里插入图片描述
在这里插入图片描述
例:对话框:显示单选列表 AlertDialog
layout

   <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="dialog"
        android:text="显示一般AlertDialog"/>
    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="dialog2"
        android:text="显示单选列表AlertDialog"/>


MainActivity中

public class MainActivity extends AppCompatActivity {

    //数据源
    private String item[]={"红色","蓝色","灰色"};

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

    }
    //显示单选按钮对话框
    public void dialog2(View v){
        String item[]={"红色","蓝色","灰色"};
        AlertDialog dialog;
        AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
        
        //2、设置对话框基本属性
        builder.setTitle("单选对话框");
        builder.setIcon(R.drawable.ic_launcher_foreground);
        //设置单选对话框
        builder.setSingleChoiceItems(item,0,null);

        //设置确定按钮,new DialogInterface.OnClickListener()匿名内部类
        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Log.i("info","确定删除");
                dialog.dismiss();
            }
        });
        // 设置取消按钮
        builder.setNegativeButton("取消",new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Log.i("info","取消删除");
            }
        });
        //3、创建对话框
        AlertDialog dialog2=builder.create();
        //4、显示对话框
        dialog2.show();
    }


    //显示一般对话框
    public void dialog(View v){
        //1、构建一个dialog的对象
        AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
        //2、设置对话框基本属性
        builder.setTitle("普通对话框");
        builder.setIcon(R.drawable.ic_launcher_foreground);
        builder.setMessage("确定要删除吗?");


        //设置确定按钮,new DialogInterface.OnClickListener()匿名内部类
        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Log.i("info","确定删除");
            }
        });
        // 设置取消按钮
        builder.setNegativeButton("取消",new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Log.i("info","取消删除");
            }
        });
     
        //3、创建对话框
        AlertDialog dialog=builder.create();
        //4、显示对话框
        dialog.show();
        }
    }

效果
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值