展会信息港展会大全

Android SeekBar控件详解(图) 可以拖动的进度条控件
来源:互联网   发布日期:2015-10-03 11:39:33   浏览:4380次  

导读:什么是SeekBar控件,SeekBar控件其实就是一个高级点的进度条,就像我们在听歌,看电影用的播放器上的进度条一样,是可以拖动的,可以改变进度的一个进度条控件!就是下面这个样子seekbar对应的方法和属性android:......

什么是SeekBar控件,SeekBar控件其实就是一个高级点的进度条,就像我们在听歌,看电影用的播放器上的进度条一样,是可以拖动的,可以改变进度的一个进度条控件!就是下面这个样子

seekbar对应的方法和属性

android:thumb---seekbar上绘制的thumb(可拖动的那个图标)

public void setOnSeekBarChangeListener (SeekBar.OnSeekBarChangeListener l)

//设置一个监听器以接受seekbar进度改变时的通知。同时提供用户在SeekBar上开始和停止触摸手势时的通知。

//参数 lSeekBar的通知监听对象

//参见SeekBar.OnSeekBarChangeListener

1.在res/layout目录下定义一个布局文件seekbar.xml

<?xml version="1.0" encoding="utf-8"?>

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

<LinearLayout

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical"

>

<TextView

android:id="@+id/text"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="我是SeekBar=进度为:"

android:lines="2"

android:textColor="#11ddff"

/>

<SeekBar

android:id="@+id/seekbar_btn_id"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

/>

<ImageView

android:id="@+id/seekbar_imageview_id"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:src="@drawable/gallery_01"

android:lines="6"

android:textColor="#11ddff"

/>

<LinearLayout

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="horizontal">

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="拖到切换图片"

/>

<SeekBar

android:id="@+id/seekbar_hand_id"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

/>

</LinearLayout>

<LinearLayout

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="horizontal">

<TextView

android:id="@+id/seekbar_liang_id"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="改变屏幕亮度"

android:textColor="#11ddff"

/>

<SeekBar

android:id="@+id/seekbar_hang_id1"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

/>

</LinearLayout>

</LinearLayout>

</ScrollView>

2.代码文件SeekBarDemo.java如下:

package com.test;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.os.Handler;

import android.text.method.ScrollingMovementMethod;

import android.view.View;

import android.view.WindowManager;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.ImageView;

import android.widget.SeekBar;

import android.widget.SeekBar.OnSeekBarChangeListener;

import android.widget.TextView;

public class SeekBarDemo extends Activity {

private SeekBarseekBar,seekBar2,seekBar3;

private TextView textview,textview2;

privateImageViewimageView;

//标记是否需要刷新

private boolean flag=true;

private Handler hangler=new Handler();

////

privateint []arrayImage =new int[]{R.drawable.gallery_01,

R.drawable.gallery_02,R.drawable.gallery_03,R.drawable.gallery_04,R.drawable.gallery_05,R.drawable.gallery_06};

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.seekbar);

seekBar=(SeekBar)findViewById(R.id.seekbar_btn_id);

seekBar2=(SeekBar)findViewById(R.id.seekbar_hand_id);//第二个

seekBar2=(SeekBar)findViewById(R.id.seekbar_hand_id);//第二个

seekBar3=(SeekBar)findViewById(R.id.seekbar_hang_id1);//第san个

textview=(TextView)findViewById(R.id.text);

//设置拖动条的最大值,其将为该拖动条显示的基数

seekBar.setMax(100);

//为该方法seekbar注册一个监听,当seekbar发生改变时调用1中的对应方法

seekBar.setOnSeekBarChangeListener(onSeekbar);

imageView = (ImageView)findViewById(R.id.seekbar_imageview_id);

refresh();

///////

this.seekBar2.setMax(arrayImage.length);

this.seekBar3.setMax(100);

this.seekBar2.setOnSeekBarChangeListener(seekbar);

this.seekBar3.setOnSeekBarChangeListener(seekbar);

}

//第二个seekBar

privateOnSeekBarChangeListenerseekbar = new OnSeekBarChangeListener() {

@Override

public void onStopTrackingTouch(SeekBar seekBar) {

// TODO Auto-generated method stub

}

@Override

public void onStartTrackingTouch(SeekBar seekBar) {

// TODO Auto-generated method stub

}

@Override

public void onProgressChanged(SeekBar seekBar, int progress,

boolean fromUser) {

// TODO Auto-generated method stub

if(seekBar.getId()==R.id.seekbar_hand_id)

{

imageView.setImageResource(arrayImage[seekBar2.getProgress()]);

}

if(seekBar.getId()==R.id.seekbar_hang_id1)

{

setScreenBrightness((float) seekBar

.getProgress() / 100);

}

}

};

//表示屏幕亮度的方法

private void setScreenBrightness(float num) { // 0 ~ 1表示亮度

WindowManager.LayoutParams layoutParams = super.getWindow().getAttributes() ; // 取得屏幕的属性

layoutParams.screenBrightness = num ; // 设置屏幕亮度

super.getWindow().setAttributes(layoutParams) ; // 重新设置窗口的属性

}

//第一个sekbar

privateOnSeekBarChangeListeneronSeekbar=new OnSeekBarChangeListener() {

@Override

//当游标移动停止的时候调用该方法

public void onStopTrackingTouch(SeekBar seekBar) {

//设置标记为需要刷新

flag=true;

//创建时就开始自动更新该拖动条

refresh();

}

@Override

//当游标开始移动时调用该方法

public void onStartTrackingTouch(SeekBar seekBar) {

//停止刷新

flag=false;

}

@Override

//当进度条游标被改变或者进度条改变时调用该方法

public void onProgressChanged(SeekBar seekBar, int progress,

boolean fromUser) {

//更改textView的内容

textview.setText("进度为:"+progress+"%");

}

};

//该方法自动更新该拖动条

private void refresh() {

new Thread(new Runnable() {

@Override

public void run() {

// TODO Auto-generated method stub

//当进度不到1000,就更新status

while(flag && seekBar.getProgress()<100)

{

try {

//暂停1秒

Thread.sleep(1000);

} catch (InterruptedException e) {

// TODO: handle exception

e.printStackTrace();

}

//将一个Runnable对象添加到消息队列当中,

//并且当执行到该对象时执行run()方法

hangler.post(new Runnable() {

@Override

public void run() {

// 重新设置进度条当前的值

seekBar.setProgress(seekBar.getProgress()+1);

}

});

}

}

}).start();

}

}

三:执行效果如下:

赞助本站

人工智能实验室

相关热词: SeekBar控件 进度条

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港