您的位置:首页 > 其它

第七章 —高级组件:拖动条seekBar、星级评分条RatingBar、进度条ProgressBar、滚动视图ScrollView

2016-12-17 10:48 405 查看

拖动条seekBar

<SeekBar
android:id="@+id/seekBar1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginTop="185dp" />

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
seekBar = (SeekBar) findViewById(R.id.seekBar1);
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(AudioMana
4000
ger.STREAM_MUSIC, progress,
AudioManager.FLAG_SHOW_UI
| AudioManager.FLAG_PLAY_SOUND);
}
});
// seekBar.setMax(200);
// seekBar.setProgress(50);
// 获取系统服务
// 获取音频管理器
manager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
// 获取他的最大值 0-15
int max = manager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
seekBar.setMax(max);
// 本来就有一个声量值
int volumn = manager.getStreamVolume(AudioManager.STREAM_MUSIC);
Log.e("TAG", volumn + "   ");
seekBar.setProgress(volumn);
}


星级评分条RatingBar

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
// ++
seekBar.setProgress(seekBar.getProgress() + 1);
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
seekBar.setProgress(seekBar.getProgress() - 1);
}
return super.onKeyUp(keyCode, event);
}
```


进度条ProgressBar

```
<ProgressBar
android:id="@+id/progressBar4"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:max="50"
android:padding="10dp"
android:progress="10" />

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ProgressBar pb = (ProgressBar) findViewById(R.id.progressBar4);
final TextView tv = (TextView) findViewById(R.id.tv);
pb.setMax(200);
pb.setProgress(0);
new Thread() {
public void run() {
// 模拟耗时任务
int index = 0;
while (index++ < 200) {
try {
Thread.sleep((int) (Math.random() * 200));
} catch (InterruptedException e) {
e.printStackTrace();
}
// 修改值
// 做了UI的处理,所以直接可以在子线程中修改UI
pb.setProgress(index);
// 需要使用UI线程
runOnUiThread(new Runnable() {

@Override
public void run() {
tv.setText(pb.getProgress() + "/" + pb.getMax());
}
});
}

};
}.start();
```


滚动视图ScrollView

```
ScrollView view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
view = (ScrollView) findViewById(R.id.view);
// 滑动到指定位置
// 这个方法必须等待view完全显示
// post 延迟操作
int width = view.getWidth();
Log.e("TAG", width + "  ");
final long startTime = System.currentTimeMillis();
// view在这里还并没有在完成
view.post(new Runnable() {
@Override
public void run() {
int width = view.getWidth();
Log.e("TAG", width + "  "
+ (System.currentTimeMillis() - startTime));
view.fullScroll(ScrollView.FOCUS_DOWN);
}
});
}
//
// @Override
// public void onWindowFocusChanged(boolean hasFocus) {
// super.onWindowFocusChanged(hasFocus);
// view.fullScroll(ScrollView.FOCUS_DOWN);
// }
```
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: