Android ProgressBar SeekBar
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的更多相关文章
- 从零開始学android<SeekBar滑动组件.二十二.>
拖动条能够由用户自己进行手工的调节,比如:当用户须要调整播放器音量或者是电影的播放进度时都会使用到拖动条,SeekBar类的定义结构例如以下所看到的: java.lang.Object ↳ an ...
- android 垂直 SeekBar 源代码(VerticalSeekBar)[转]
主要是继承 AbsSeekBar 然后修改下面这些方法 onProgressRefresh() //当进度条数据更新的时候,例如我们拖动滑动条的时候,这个方法被调用 setThumbPos() //这 ...
- Android开发 SeekBar(拖动条)的使用
SeekBar是Progress的子类,Progress主要用来显示进度,但是不能和用户互动,而SeekBar则可以供用户进行拖动改变进度值 实现拖动进度条并显示在文本中: <?xml vers ...
- Android自定义Seekbar拖动条式样
SeekBar拖动条可以由用户控制,进行拖动操作.比如,应用程序中用户需要对音量进行控制,就可以使用拖动条来实现. 1.SeekBar控件的使用 1.1SeekBar常用属性 SeekBar的常用属性 ...
- android之SeekBar控件用法
MainActivity.java package com.example.mars_2400_seekbar; import android.support.v7.app.ActionBarActi ...
- Android使用SeekBar时动态显示进度且随SeekBar一起移动
最近有做一个android项目,里面有使用到在播放视频时可以跳播,同时动态显示播放时间.类似于下图 的效果,我只是抽取其中的一部分做展示,刚接到这个事时也是在网上一通找,最后没找到!而且还碰到有些朋友 ...
- android学习---SeekBar和RatingBar
SeekBar 拖动条:拖动条和滚动栏类似,当是拖动条能够拖动滑块改变进度 RatingBar 星级评分条:星级评分条与拖动条相似 SeekBar特有的xml属性 android:thumb 指 ...
- Android的SeekBar和RateBar的使用-android学习之旅(三十二)
SeekBar简介 SeekBar允许用户拖动,进行调节经常用于音量调节等方面. android:thumb设置drawable对象来表示拖动的物体. setOnSeekBarChangeListen ...
- Android ProgressBar的使用
Android 基础教程之-------Android ProgressBar的使用http://blog.csdn.net/Android_Tutor/article/details/5695170 ...
随机推荐
- table标签,认识网页上的表格
有时候我们需要在网页上展示一些数据,如某公司想在网页上展示公司的库存清单.如下表: 想在网页上展示上述表格效果可以使用以下代码: 创建表格的四个元素: table.tbody.tr.th.td 1.& ...
- XMLHelper 类
这个XMLHelper类中包括了XML文档的创建,文档节点和属性的读取,添加,修改,删除的方法功能的实现,有兴趣的朋友,可以进来看看,所有代码都在WebForm和WinForm中调试通过. 这是下面 ...
- Animator Override Controllers 学习及性能测试
本文由博主(YinaPan)原创,转载请注明出处:http://www.cnblogs.com/YinaPan/p/Unity_AnimatorOverrideContorller.html The ...
- 【USACO 2.1.2】法雷序列
[问题描述] 对任意给定的一个自然数 n(n<=160), 将分母小于等于 n 的不可约的真分数按上升的次序排序 , 并且在第一个分数前加上 0/1, 而在最后一个分数后加上 1/1, ...
- PHP Countable接口
实现该接口可以使用count()方法来获取集合的总数
- 基于jq插件开发及弹窗实例
基于jq的插件开发是什么鬼,$.fn是什么鬼,我在实际工作中也遇到过这个问题,下面就让我们一起来看一看这些都是什么鬼. 首先我们介绍$.fn. $.fn是指jquery的命名空间,加上fn上的方法及属 ...
- HTML语义化标签(一)
总所周知,现在的网页是由HTML.CSS.JS三大元素组成,而HTML是其中最重要的部分,是整个网页的骨架,CSS和js在骨架的基础上进行相应的修饰,使得网页成为一个有血有肉,可以动的“人”.如果HT ...
- 初涉JavaScript模式 (10) : 函数 【进阶用法】
写在前面 不知不觉写到第10篇了.这篇写起来很忐忑,终于和高级搭上边了(呵呵),这篇我们 主要 说一下 JS 方法的部分高级用法(我知道的),笔者水平有限,难免有错.废话不多少,进入正文. 初始化 我 ...
- [C#] 用一种更优美的方式来替换掉又多又长的switch-case代码段
switch-case语句是我们编码过程中常用的一种分支语句.然而正所谓成也萧何败萧何,每当我们向一个已经拥有了成百上千行的switch-case代码段中添加新的case分支的时候,我们是否有过为代码 ...
- MongoDB-启动的时候出现了问题
之前MongoDB启动的时候是正常的,不知道后来启动报错了,就把粘贴出来查询了.最后才知道是由于自己不正常的关闭导致的这个情况. --摘录:MongoDB非正常关闭后修复记录 mongod没有后台执行 ...