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. 解决ASP.NET中ReportView与IE11的兼容性问题

    前久发现以前用ReportView开发的一个软件的报表,在IE11上运行时出错,陆续查了好几天才解决了问题. 开发环境: VS2010,ReportView 10.0.402,RDLC报表模板 问题: ...

  2. (转)Mac OS X中配置Apache

    我使用的Mac OS X版本是10.8.2,Mac自带了Apache环境. 启动Apache 设置虚拟主机 启动Apache 打开“终端(terminal)”,输入 sudo apachectl -v ...

  3. leetcode修炼之路——13. Roman to Integer

    题目: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from ...

  4. Objective-C 笔记二 类、对象和方法

    对象就是一个物件.面向对象的程序设计可以看成一个物件和你想对它做的事情.这与C语言不同,C语言通常称为过程性语言.在C语言中,通常是先考虑要做什么,然后才关注对象,这几乎总是与面相对象的思考过程相反. ...

  5. <blockquote>标签,长文本引用

    <blockquote>的作用也是引用别人的文本.但它是对长文本的引用,如在文章中引入大段某知名作家的文字,这时需要这个标签. 等等,上一节<q>标签不是也是对文本的引用吗?不 ...

  6. WebService CXF调试常见报错及解决方案

    1.CXF java.lang.RuntimeException: Cannot create a secure XMLInputFactory 解决方案:从apache-cxf/lib下寻找Wood ...

  7. JS响应事件整理

    javascript事件列表解说 事件 浏览器支持 解说 一般事件 onclick IE3.N2 鼠标点击时触发此事件 ondblclick IE4.N4 鼠标双击时触发此事件 onmousedown ...

  8. underscorejs-min学习

    2.16 min 2.16.1 语法: _.min(list, [iteratee], [context]) 2.16.2 说明: 返回list中的最小值. list为集合,数组.对象.字符串或arg ...

  9. apache静态文件配置

    开发环境配置 需要下面几个步骤 1. 在app目录下创建static目录,将静态文件和相关文件夹放到此目录下,如your_app/static/img等 2. 确保settings.py中的INSTA ...

  10. ARM9的MMU

    一 页表 1. 页表是放置在RAM(一般为DRAM)中的一个数据段. 2. ARM的地址空间为2^32字节,即4G字节. 3. 一级页表总共有4096条记录,每条记录对应的地址块为1M,一级页表中的记 ...