1、ProgressBar 进度条

当水平进度条完成后,隐藏该进度条,并显示一张图片

常用属性:
  1. android:max 设置进度条的最大值
  2. android:progress 用于指定进度条的已完成的进度值
  3. android:progressDrawable 用于设置进度条的轨道绘制形式
style属性:
  1. ?android:attr/progressBarStyleHorizontal 细水平长条进度条
  2. ?android:attr/progressBarStyleLarge 在圆形进度条
  3. ?android:attr/progressBarStyleSmall 大圆形进度条
  4. @android:style/Widget.ProgressBar.Large 大跳跃,旋转画面的进度条
  5. @android:style/Widget.ProgressBar.Small 小跳跃,旋转画面的进度条
  6. @android:style/Widget.ProgressBar.Horizontal 粗水平长条进度条
ProgressBar的水平样式中自身是不会动的,必须在代码中设置进度才会改变。

  public synchronized void setProgress(int progress)//设置进度

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <ProgressBar
android:id="@+id/progressBar3"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_margin="20dp"
android:progress="40" /> <TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@id/progressBar3"
android:layout_below="@id/progressBar3"
android:text="0/100" /> <ImageView
android:id="@+id/img"
android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"
android:visibility="gone" /> </RelativeLayout>

activity_main.xml

一般能知道具体操作时间的使用水平,比如复制文件,而有些不知道操作时间的使用圆
形进度条,如请求网络。

ProgressBar是在前台提示用户,而执行任务一般都是后台,但是安卓不允许后台线程直
接操作UI,所以,我们一般在需要处理UI时,需要通知主线程,实现原理我们后面再详
谈,我们的子线程如果在Activity中,可以先使用runOnUiThread来操作主线程

 public class MainActivity extends Activity {
ProgressBar bar;
TextView tv;
ImageView img; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bar = (ProgressBar) findViewById(R.id.progressBar3);
tv = (TextView) findViewById(R.id.tv);
img = (ImageView) findViewById(R.id.img); bar.setMax(100);
new Thread() {
public void run() {
// 模拟耗时任务
int index = 0;
while (index++ < 100) {
try {
Thread.sleep(100); // 修改ProgressBar进度
// 做UI修改,所以直接可以在子线程中修改UI
bar.setProgress(index);
} catch (Exception e) {
e.printStackTrace();
}
// 使用UI线程
runOnUiThread(new Runnable() { @Override
public void run() {
tv.setText(bar.getProgress() + "/"
+ bar.getMax()); if (bar.getProgress() == bar.getMax()
&& img.getVisibility() == View.GONE) {
bar.setVisibility(View.GONE);
tv.setVisibility(View.GONE);
img.setVisibility(View.VISIBLE);
}
}
});
} };
}.start();
} }

MainActivity.java

2、SeekBar 拖动条

拖动条与进度条类似,所不同的是,拖动条允许用户拖动滑块来改变值,通常用于实现对某中数值
的调节,例如,调节图片的透明度或是音量等.

常用属性:
  1. android:max="100" 进度条的最大值
  2. android:padding="10px" 进度条的边距
  3. android:progress="50" 进度条的初始值

并且我们一般都需要给SeekBar一个拖动的监听,当用户操作后,我们需要根据操作的值来调
整我们的程序

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" > <SeekBar
android:id="@+id/seekbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginTop="150dp"/> <TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@id/seekbar"
android:layout_below="@id/seekbar"
android:text="0/100"/> <RatingBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@id/tv"
android:layout_marginTop="150dp"
android:numStars="6"
android:rating="3"/>
</RelativeLayout>

activity_main.xml

所有的操作系统的,都需要Service系统服务

manager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

 public class MainActivity extends Activity {

     SeekBar seekbar;
TextView tv;
AudioManager manager; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
seekbar = (SeekBar) findViewById(R.id.seekbar);
tv = (TextView) findViewById(R.id.tv); seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override
public void onStopTrackingTouch(SeekBar seekBar) {
// 拖拽完毕 } @Override
public void onStartTrackingTouch(SeekBar seekBar) {
// 开始拖拽时,用户刚好点上去 } @Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// 每次进度改变都会调用
// 是否是用户改变?
if (fromUser) {
tv.setText(progress + "/" + seekbar.getMax());
}
// flags用来,改变时是否需要声音,是否需要UI
manager.setStreamVolume(AudioManager.STREAM_MUSIC, progress,
AudioManager.FLAG_SHOW_UI
| AudioManager.FLAG_PLAY_SOUND);
}
}); // 获取系统服务
// 获取音频管理器
manager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
// 获取系统音量最大值 0-15
final int max = manager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
// 当前音量值
final int volumn = manager.getStreamVolume(AudioManager.STREAM_MUSIC);
seekbar.setMax(max);
seekbar.setProgress(volumn);
runOnUiThread(new Runnable() {
@Override
public void run() {
tv.setText(volumn + "/" + max);
}
}); } // 音量加减
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
seekbar.setProgress(seekbar.getProgress() + 1);
runOnUiThread(new Runnable() {
@Override
public void run() {
tv.setText(seekbar.getProgress() + "/" + seekbar.getMax());
}
});
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
seekbar.setProgress(seekbar.getProgress() - 1);
runOnUiThread(new Runnable() {
@Override
public void run() {
tv.setText(seekbar.getProgress() + "/" + seekbar.getMax());
}
});
}
return super.onKeyUp(keyCode, event);
} }

MainActivity.java

Android ProgressBar SeekBar的更多相关文章

  1. 从零開始学android&lt;SeekBar滑动组件.二十二.&gt;

    拖动条能够由用户自己进行手工的调节,比如:当用户须要调整播放器音量或者是电影的播放进度时都会使用到拖动条,SeekBar类的定义结构例如以下所看到的: java.lang.Object    ↳ an ...

  2. android 垂直 SeekBar 源代码(VerticalSeekBar)[转]

    主要是继承 AbsSeekBar 然后修改下面这些方法 onProgressRefresh() //当进度条数据更新的时候,例如我们拖动滑动条的时候,这个方法被调用 setThumbPos() //这 ...

  3. Android开发 SeekBar(拖动条)的使用

    SeekBar是Progress的子类,Progress主要用来显示进度,但是不能和用户互动,而SeekBar则可以供用户进行拖动改变进度值 实现拖动进度条并显示在文本中: <?xml vers ...

  4. Android自定义Seekbar拖动条式样

    SeekBar拖动条可以由用户控制,进行拖动操作.比如,应用程序中用户需要对音量进行控制,就可以使用拖动条来实现. 1.SeekBar控件的使用 1.1SeekBar常用属性 SeekBar的常用属性 ...

  5. android之SeekBar控件用法

    MainActivity.java package com.example.mars_2400_seekbar; import android.support.v7.app.ActionBarActi ...

  6. Android使用SeekBar时动态显示进度且随SeekBar一起移动

    最近有做一个android项目,里面有使用到在播放视频时可以跳播,同时动态显示播放时间.类似于下图 的效果,我只是抽取其中的一部分做展示,刚接到这个事时也是在网上一通找,最后没找到!而且还碰到有些朋友 ...

  7. android学习---SeekBar和RatingBar

    SeekBar 拖动条:拖动条和滚动栏类似,当是拖动条能够拖动滑块改变进度 RatingBar 星级评分条:星级评分条与拖动条相似 SeekBar特有的xml属性 android:thumb    指 ...

  8. Android的SeekBar和RateBar的使用-android学习之旅(三十二)

    SeekBar简介 SeekBar允许用户拖动,进行调节经常用于音量调节等方面. android:thumb设置drawable对象来表示拖动的物体. setOnSeekBarChangeListen ...

  9. Android ProgressBar的使用

    Android 基础教程之-------Android ProgressBar的使用http://blog.csdn.net/Android_Tutor/article/details/5695170 ...

随机推荐

  1. Android-SVN

    服务器启动svn服务 svnserve -d -r /home/wbp/svn/actia/ 1 .svn  重新定位location , 改变新仓库的uuid , 今天操作SVN Client 发现 ...

  2. gis-矢量与栅格数据结构的比较

    2.5矢量与栅格数据结构的比较 在计算机辅助制图和地理信息系统发展早期,最初引用的是矢量处理技术,栅格数据处理始于70年 代中期.几年以前,这两种数据结构势不两立,很难兼容,因此给数据利用带来许多不便 ...

  3. jrae源码解析(二)

    本文细述上文引出的RAECost和SoftmaxCost两个类. SoftmaxCost 我们已经知道,SoftmaxCost类在给定features和label的情况下(超参数给定),衡量给定权重( ...

  4. iOS中使用正则表达式去掉HTML中的标签元素获得纯文本的方法

    content是根据网址获得的网页源码字符串 - (NSString *)changeToString:(NSString *)content { NSRegularExpression *regul ...

  5. xcode升级插件失效修复

    每次xcode升级以后,插件都会失效.可以通过一行命令解决这个问题. 摘自传人的博客 find ~/Library/Application\ Support/Developer/Shared/Xcod ...

  6. 动态插入图片到 svg 中

    动态插入图片到 svg 中使用 createElementNS 来创建svg标签,通过setAttributeNS 来设置属性, 要注意两点,创建的时候要有'http://www.w3.org/200 ...

  7. Python网页爬虫(一)

    很多时候我们想要获得网站的数据,但是网站并没有提供相应的API调用,这时候应该怎么办呢?还有的时候我们需要模拟人的一些行为,例如点击网页上的按钮等,又有什么好的解决方法吗?这些正是python和网页爬 ...

  8. underscorejs-invoke学习

    2.13 invoke 2.13.1 语法: _.invoke(list, method, *args) 2.13.2 说明: 每个list属性值都执行method方法,根据method方法返回一个数 ...

  9. ext.apply和ext.applyIf

    apply的用法: Ext中apply及applyIf方法的应用 apply及applyIf方法都是用于实现把一个对象中的属性应用于另外一个对象中,相当于属性拷贝. 不同的是apply将会覆盖目标对象 ...

  10. document.all和jq trigger原理

    document.all是页面内所有元素的一个集合.如:       document.all(0)表示页面内第一个元素document.all可以判断浏览器是否是IE     if(document ...