国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android開發中自定義ProgressBar控件的方法示例

2019-10-22 18:25:31
字體:
來源:轉載
供稿:網友

本文實例講述了Android開發中自定義ProgressBar控件的方法。分享給大家供大家參考,具體如下:

很簡單,首先加載Drawable,在onMeasure設置好其區域大小,

然后使用canvas.clipRect繪圖

public class ProgressView extends ImageView {  private Drawable maskDraw;  /**   * 加載的進度 0-100   */  private int mProcess = 20;  public ProgressView(Context context, AttributeSet attrs) {    super(context, attrs);    maskDraw = context.getResources().getDrawable(R.drawable.red_bg);  }  @Override  protected void onDraw(Canvas canvas) {    super.onDraw(canvas);    // 保存當前畫筆的狀態    canvas.save();    int topline = (int) (getHeight() - getHeight() * getProcess() / 100);    /*     * canvas 剪切出一個區域,使在這個區域里面的內容是有效的,區域之外是無效的。     */    canvas.clipRect(0, topline, getWidth(), getHeight());    maskDraw.draw(canvas);    // 恢復到之前保存的狀態    canvas.restore();  }  @Override  protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {    super.onMeasure(widthMeasureSpec, heightMeasureSpec);    maskDraw.setBounds(0, 0, getWidth(), getHeight());  }  public float getProcess() {    return mProcess;  }  /**   * 設置新的進度以后,自動刷新   */  public void setProgress(int mProcess) {    if (mProcess > 100) {      this.mProcess = 100;    }    if (mProcess < 0) {      this.mProcess = 0;    }    this.mProcess = mProcess;    invalidate();  }}

使用方法

public class ProgressActivity extends Activity {  private ProgressView piv;  private int pivDeep = 0;  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_progressview);    piv = (ProgressView) findViewById(R.id.my_pro_iv);    handler.sendEmptyMessage(2);  }  private Handler handler = new Handler() {    @Override    public void handleMessage(Message msg) {      switch (msg.what) {      case 1:        piv.setProgress(pivDeep);        break;      case 2:        new Thread() {          public void run() {            while (true) {              pivDeep = (pivDeep + 5) % 100;              handler.sendEmptyMessage(1);              try {                Thread.sleep(200);              } catch (InterruptedException e) {                e.printStackTrace();              }            }          };        }.start();        break;      default:        break;      }    }  };}

希望本文所述對大家Android程序設計有所幫助。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 利川市| 改则县| 甘南县| 红原县| 那曲县| 平安县| 鄢陵县| 泽库县| 宁陵县| 十堰市| 诏安县| 武强县| 自治县| 连平县| 宜兴市| 涪陵区| 盐山县| 夏津县| 潼南县| 瑞丽市| 苏州市| 淳安县| 铅山县| 九江市| 蕲春县| 英德市| 西贡区| 温宿县| 郁南县| 淄博市| 哈尔滨市| 普兰店市| 清徐县| 双峰县| 满洲里市| 建宁县| 永济市| 昭觉县| 桃园县| 寿阳县| 西和县|