zoukankan      html  css  js  c++  java
  • 进度条ProgressBar

    拖动滑块改变图片透明度

    1.布局

     1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     2     xmlns:tools="http://schemas.android.com/tools"
     3     android:layout_width="match_parent"
     4     android:layout_height="match_parent"
     5     android:orientation="vertical"
     6     tools:context=".AndroidProgerssBarActivity" >
     7 
     8     <TextView
     9         android:layout_width="wrap_content"
    10         android:layout_height="wrap_content"
    11         android:layout_centerHorizontal="true"
    12         android:layout_centerVertical="true"
    13         android:text="任务完成进度" />
    14 
    15     <ProgressBar
    16         android:id="@+id/bar"
    17         style="@android:style/Widget.ProgressBar.Horizontal"
    18         android:layout_width="match_parent"
    19         android:layout_height="wrap_content"
    20         android:max="100" />
    21 
    22     <ProgressBar
    23         android:id="@+id/bar2"
    24         style="@android:style/Widget.ProgressBar.Horizontal"
    25         android:layout_width="match_parent"
    26         android:layout_height="wrap_content"
    27         android:max="100"
    28         android:progressDrawable="@drawable/ic_launcher" >
    29     </ProgressBar>
    30 
    31     <Button
    32         android:id="@+id/btn1"
    33         android:layout_width="match_parent"
    34         android:layout_height="wrap_content"
    35         android:text="显示进度条" />
    36      <Button
    37         android:id="@+id/btn2"
    38         android:layout_width="match_parent"
    39         android:layout_height="wrap_content"
    40         android:text="不显示进度条" />
    41 
    42 </LinearLayout>

    2.逻辑控制

      1 package com.example.androidprogerssbar;
      2 
      3 import android.os.Bundle;
      4 import android.os.Handler;
      5 import android.os.Message;
      6 import android.app.Activity;
      7 import android.view.Menu;
      8 import android.view.View;
      9 import android.view.View.OnClickListener;
     10 import android.view.Window;
     11 import android.widget.Button;
     12 import android.widget.ProgressBar;
     13 
     14 public class AndroidProgerssBarActivity extends Activity {
     15 
     16     // 模拟填充长度为100的数组
     17     private int[] data = new int[100];
     18     int hasData = 0;
     19     // 记录ProgressBar完成进度
     20     int status = 0;
     21 
     22     @Override
     23     protected void onCreate(Bundle savedInstanceState) {
     24         super.onCreate(savedInstanceState);
     25 
     26         //设置窗口特征,启用显示进度的进度条
     27         requestWindowFeature(Window.FEATURE_PROGRESS);
     28         //设置窗口特征,不启用显示进度的进度条
     29         requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
     30         setContentView(R.layout.activity_android_progerss_bar);
     31         Button btn1=(Button)this.findViewById(R.id.btn1);
     32         Button btn2=(Button)this.findViewById(R.id.btn2);
     33         
     34         final ProgressBar bar = (ProgressBar) this.findViewById(R.id.bar);
     35         final ProgressBar bar2 = (ProgressBar) this.findViewById(R.id.bar2);
     36 
     37         btn1.setOnClickListener(new OnClickListener() {
     38             
     39             @Override
     40             public void onClick(View arg0) {
     41                 //显示不带进度的进度条
     42                 setProgressBarIndeterminateVisibility(true);
     43                 //显示带进度的进度条
     44                 setProgressBarVisibility(true);
     45                 //设置进度条进度
     46                 setProgress(4500);
     47             }
     48         });
     49         
     50     btn2.setOnClickListener(new OnClickListener() {
     51             
     52             @Override
     53             public void onClick(View arg0) {
     54                 //显示不带进度的进度条
     55                 setProgressBarIndeterminateVisibility(false);
     56                 //显示带进度的进度条
     57                 setProgressBarVisibility(false);
     58             }
     59         });
     60     
     61         // 创建一个负责更新进度的Handler
     62         final Handler handler = new Handler() {
     63 
     64             @Override
     65             public void handleMessage(Message msg) {
     66                 // 表明消息是由该程序发送的
     67                 if (msg.what == 0x111) {
     68                     bar.setProgress(status);
     69                     bar2.setProgress(status);
     70                 }
     71             }
     72 
     73         };
     74 
     75         // 启动线程执行任务
     76         new Thread() {
     77             public void run() {
     78                 while (status < 100) {
     79                     // 获得耗时操作的完成百分比
     80                     status = doWork();
     81                     // 发送消息到Handler
     82                     Message m = new Message();
     83                     m.what = 0x111;
     84                     // 发送消息
     85                     handler.sendMessage(m);
     86                 }
     87             }
     88         }.start();
     89     }
     90 
     91     // 模拟一个耗时操作
     92     public int doWork() {
     93         data[hasData++] = (int) (Math.random() * 100);
     94         try {
     95             Thread.sleep(100);
     96         } catch (InterruptedException e) {
     97             e.printStackTrace();
     98         }
     99         return hasData;
    100     }
    101 
    102     @Override
    103     public boolean onCreateOptionsMenu(Menu menu) {
    104         // Inflate the menu; this adds items to the action bar if it is present.
    105         getMenuInflater().inflate(R.menu.activity_android_progerss_bar, menu);
    106         return true;
    107     }
    108 
    109 }

    作者:欢醉
    公众号【一个码农的日常】 技术群:319931204 1号群: 437802986 2号群: 340250479
    出处:http://zhangs1986.cnblogs.com/
    码云:https://gitee.com/huanzui
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    Top
  • 相关阅读:
    想不赚钱都难的7大行业
    [转帖]一位年轻商人的经验感悟
    对待下级十二条准则
    让自己幸福的10条秘诀
    孤独感
    “3+3”看华为云FusionInsight如何引领“数据新基建”持续发展
    【乘风破浪的开发者】丁一超:从AI实战营出发探索未知的AI世界
    适用初学者的5种Python数据输入技术
    遥感影像处理有高招,“专治”各类花式并发的述求!
    从“小众”到“首选”,推动云原生产业落地华为云作用几何?
  • 原文地址:https://www.cnblogs.com/zhangs1986/p/2937144.html
Copyright © 2011-2022 走看看