十九.高级控件

1.日期选择器

2.时间选择器

3.计时器

 
Chronometer ch;
ch.setBase(SystemClock.elapsedRealtime());  //起始时间
ch.setFormat("%s");     //设置时间格式

4.进度条

    

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

public class MainActivity extends AppCompatActivity {
    private ProgressBar progressBar;
    private int mProgress=0;
    private Handler mhandler;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);   //设置全屏显示

        progressBar=findViewById(R.id.progressbar);
        mhandler=new Handler(){
            @Override
            public void handleMessage(@NonNull Message msg) {
                if (msg.what==0x111){
                    progressBar.setProgress(mProgress);
                }else {
                    Toast.makeText(MainActivity.this,"耗时操作已完成" , Toast.LENGTH_SHORT).show();
                    progressBar.setVisibility(View.GONE);
                }
            }
        };
        new Thread(new Runnable() {
            @Override
            public void run() {
                while (true){
                    mProgress=doWork();
                    Message m=new Message();
                    if (mProgress<100){
                        m.what=0x111;
                        mhandler.sendMessage(m);
                    }else {
                        m.what=0x110;
                        mhandler.sendMessage(m);
                        break;
                    }
                }
            }
            private int doWork(){
                mProgress+=Math.random()*10;
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                return mProgress;
            }
        }).start();
    }

对应的再Java中我们可调用下述方法:
getMax():返回这个进度条的范围的上限
getProgress():返回进度
getSecondaryProgress():返回次要进度
incrementProgressBy(int diff):指定增加的进度
isIndeterminate():指示进度条是否在不确定模式下
setIndeterminate(boolean indeterminate):设置不确定模式下

5.拖动条
android:max="10" //滑动条的最大值
android:progress="5" //滑动条的当前值
android:secondaryProgress="70" //二级滑动条的进度
android:thumb = "@mipmap/sb_icon" //滑块的drawable

接着要说下SeekBar的事件了,SeekBar.OnSeekBarChangeListener我们只需重写三个对应的方法:
onProgressChanged:进度发生改变时会触发
onStartTrackingTouch:按住SeekBar时会触发
onStopTrackingTouch:放开SeekBar时触发

6.星级评分条
android:isIndicator:是否用作指示,用户无法更改,默认false
android:numStars:显示多少个星星,必须为整数
android:rating:默认评分值,必须为浮点数
android:stepSize: 评分每次增加的值,必须为浮点数


——事件处理:只需为RatingBar设置OnRatingBarChangeListener事件,然后重写下onRatingChanged()方法即可!
7.下拉列表

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //创建一个数组
        String[] ctype=new String[]{"全部","美术","音乐","体育"};
        //创建一个数组适配器,第一个参数上下文,第二个列表项样式,第三个参数自己定义的字符串数组
        ArrayAdapter adapter=new ArrayAdapter(this,android.R.layout.simple_selectable_list_item,ctype);
        //设置类裱框下拉时样式
        adapter.setDropDownViewResource(android.R.layout.simple_selectable_list_item);
        Spinner spinner=findViewById(R.id.spinner);
        //调用方法指定适配器
        spinner.setAdapter(adapter);
    }
}

8.滚动条ScrollView
①.滚动到底部:
我们可以直接利用ScrollView给我们提供的:fullScroll()方法:
scrollView.fullScroll(ScrollView.FOCUS_DOWN);滚动到底部
scrollView.fullScroll(ScrollView.FOCUS_UP);滚动到顶部
②.设置滚动的滑块图片
这个更加简单:垂直方向滑块:android:scrollbarThumbVertical
水平方向滑块:android:scrollbarThumbHorizontal

你可能感兴趣的:(十九.高级控件)