1.日期选择器
<DatePicker //XML
android:id="@+id/datepicker"
2.时间选择器
<TimePicker //XML
android:id="@+id/timepicker"
3.计时器
<Chronometer //XML
android:id="@+id/chronometer"
android:format="已用时间:%s"
Chronometer ch;
ch.setBase(SystemClock.elapsedRealtime()); //起始时间
ch.setFormat("%s"); //设置时间格式
4.进度条
<ProgressBar
android:id="@+id/progressbar"
android:max="100"
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 //XML
android:id="@+id/seekbar"
android:max="10" //最大长度
android:progress="5" //起始拖动位置
android:thumb="@drawable/ic_launcher_foreground" //拖动按钮图标
接着要说下SeekBar的事件了,SeekBar.OnSeekBarChangeListener我们只需重写三个对应的方法:
onProgressChanged:进度发生改变时会触发
onStartTrackingTouch:按住SeekBar时会触发
onStopTrackingTouch:放开SeekBar时触发
6.星级评分条
android:isIndicator:是否用作指示,用户无法更改,默认false
android:numStars:显示多少个星星,必须为整数
android:rating:默认评分值,必须为浮点数
android:stepSize: 评分每次增加的值,必须为浮点数
<RatingBar
android:id="@+id/ratingbar"
android:numStars="8" //一共八颗星
android:rating="3" //初始有三颗星
android:stepSize="1" //么此至少选择一颗
<!-- android:isIndicator="true"不可修改星级-->
——事件处理:只需为RatingBar设置OnRatingBarChangeListener事件,然后重写下onRatingChanged()方法即可!
7.下拉列表
<Spinner //XML
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创建一个数组
String[] ctype=new String[]{"全部","美术","音乐","体育"};
//创建一个数组适配器,第一个参数上下文,第二个列表项样式,第三个参数自己定义的字符串数组
ArrayAdapter<String> adapter=new ArrayAdapter<String>(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