进度条:ProgressBar
拖动条:SeekBar
星级条:RatingBar
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <ProgressBar android:id="@+id/progressBar1" style="?android:attr/progressBarStyleHorizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:max="100" android:progress="50"> </ProgressBar> <ProgressBar android:id="@+id/progressBar2" android:layout_below="@id/progressBar1" style="@android:style/Widget.ProgressBar.Horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:max="100" android:progress="70"> </ProgressBar> //拖动条控制图片透明度 <SeekBar android:layout_below="@id/progressBar2" android:id="@+id/seekbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:max="255" android:progress="110" /> <ImageView android:layout_below="@id/seekbar" android:layout_marginTop="10dp" android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/a" /> <RatingBar android:id="@+id/ratingBar" android:layout_below="@id/image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:numStars="5" android:rating="2" android:stepSize="1" android:isIndicator="false" > </RatingBar> </RelativeLayout>
java部分的调用代码
package com.example.myhighui; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.RadioButton; import android.widget.RatingBar; import android.widget.SeekBar; import android.widget.Toast; public class MainActivity extends AppCompatActivity { /* * 安卓不支持在MainActivity中更新组件 * 但是提供了Handler,通过这一对象可以同过发送消息来更新UI组件 * */ private ProgressBar progressBar = null; private int mProgress = 0;//用于记录进度 private Handler mHandler = null;//用于处理消息 private SeekBar seekBar = null; private ImageView imageView = null; RatingBar ratingBar = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); progressBar = (ProgressBar)findViewById(R.id.progressBar2); 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); progressBar.setVisibility(View.GONE);//进度条设置为不显示 } } }; //新建一个线程,执行耗时操作 new Thread(new Runnable(){ //模拟耗时操作 private int doWork(){ mProgress+=Math.random()*10; try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } return mProgress; } @Override public void run(){ while(true){ mProgress = doWork(); Message message = new Message(); if(mProgress<100){//耗时操作未完成 message.what = 0x111; mHandler.sendMessage(message);//给主线程发送消息 } else {//耗时操作已经完成 message.what = 0x110; mHandler.sendMessage(message);//给主线程发送消息 break; } } } }).start(); //用拖动条改变图片透明度 imageView = findViewById(R.id.image); seekBar = findViewById(R.id.seekbar); seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { //imageView.setImageAlpha(progress);//修改图片透明度 } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); RatingBar ratingBar = (RatingBar)findViewById(R.id.ratingBar); String string = String.valueOf(ratingBar.getRating()); //星级评分继承自进度条,所以可以调用 String progress = String.valueOf(ratingBar.getProgress()); } }
呈现结果