从零开始学android

拖动条可以由用户自己进行手工的调节,例如:当用户需要调整播放器音量或者是电影的播放进度时都会使用到拖动条,SeekBar类的定义结构如下所示:
java.lang.Object
   ? android.view.View
     ? android.widget.ProgressBar
       ? android.widget.AbsSeekBar
         ? android.widget.SeekBar
常用方法
public SeekBar(Context context)
构造
创建SeekBar类的对象
public void setOnSeekBarChangeListener(
SeekBar.OnSeekBarChangeListener l)
普通
设置改变监听操作
public synchronized void setMax(int max)
普通
设置增长的最大值

public static interface SeekBar.OnSeekBarChangeListener{
/**
 * 开始拖动时触发操作
 * @param seekBar 触发操作的SeekBar组件对象
 */
public abstract void onStartTrackingTouch(SeekBar seekBar) ;
/**
 * @param seekBar 触发操作的SeekBar组件对象
 * @param progress 当前的进度值
 * @param fromUser 是否为用户自己触发
 */
public abstract void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) ;
/**
 * 停止拖动时触发操作
 * @param seekBar 触发操作的SeekBar组件对象
 */
public abstract void onStopTrackingTouch(SeekBar seekBar) ;
}


基本的使用


xml文件
<span style="font-size:18px;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <SeekBar
        android:max="100"
        android:progress="30"
        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="60dp" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/seekBar1"
        android:layout_below="@+id/seekBar1"
        android:layout_marginLeft="28dp"
        android:layout_marginTop="32dp"
        android:text="seek1"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <SeekBar
        android:id="@+id/seekBar2"
        android:max="100"
        android:secondaryProgress="60"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="67dp" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/seekBar2"
        android:layout_marginTop="28dp"
        android:text="seek2"
        android:textAppearance="?android:attr/textAppearanceMedium" />

</RelativeLayout>
</span>

java文件

<span style="font-size:18px;">package com.example.seekbar;

import android.app.Activity;
import android.os.Bundle;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;

public class MainActivity extends Activity implements OnSeekBarChangeListener{
	private TextView textView1,textView2;
	private SeekBar seekBar1,seekBar2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView1=(TextView)this.findViewById(R.id.textView1);
        textView2=(TextView)this.findViewById(R.id.textView2);
        seekBar1=(SeekBar)this.findViewById(R.id.seekBar1);
        seekBar2=(SeekBar)this.findViewById(R.id.seekBar2);
        seekBar1.setOnSeekBarChangeListener(this);
        seekBar2.setOnSeekBarChangeListener(this);
    }




	@Override
	public void onProgressChanged(SeekBar seekBar, int position, boolean flag) {
		// TODO Auto-generated method stub
		if (seekBar.getId()==seekBar1.getId())
		{
			textView1.setText("当前seekbar1刻度"+position);
			
		}
		else {
			textView2.setText("当前seekbar2刻度"+position);
		}
	}


	@Override
	public void onStartTrackingTouch(SeekBar seekBar) {
		// TODO Auto-generated method stub
		if (seekBar.getId()==seekBar1.getId())
		{
			textView1.setText("开始滑动seek1");
			
		}
		else {
			textView2.setText("开始滑动seek2");
		}
	}


	@Override
	public void onStopTrackingTouch(SeekBar seekBar) {
		// TODO Auto-generated method stub
		if (seekBar.getId()==seekBar1.getId())
		{
			textView1.setText("停止滑动seek1");
			
		}
		else {
			textView2.setText("停止滑动seek2");
		}
	}
    
}
</span>

效果图

从零开始学android<SeekBar滑动组件.二十二.>

使用seekbar来控制屏幕的亮度


xml文件

<span style="font-size:18px;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="24dp"
        android:text="调节手机亮度" />

    <SeekBar
        android:max="100"
        android:id="@+id/seekBar1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="117dp"
        android:progress="50" />

</RelativeLayout></span>

JAVA文件


<span style="font-size:18px;">package com.example.seekbardemo;

import android.app.Activity;
import android.os.Bundle;
import android.view.WindowManager;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;

public class MainActivity extends Activity implements OnSeekBarChangeListener {
private SeekBar myseekBar;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		myseekBar=(SeekBar)this.findViewById(R.id.seekBar1);
		myseekBar.setOnSeekBarChangeListener(this);
	}

	

	@Override
	public void onProgressChanged(SeekBar seekBar, int position, boolean flag) {
		// TODO Auto-generated method stub
	
	
	
	}
//调节亮度的方法
	private void setScreenBrightness(float num) {
		WindowManager.LayoutParams layoutParams = 
			getWindow().getAttributes();		// 取得window属性
		layoutParams.screenBrightness = num;			// num已经除以100
		super.getWindow().setAttributes(layoutParams); // 0~1之间
	}


	@Override
	public void onStartTrackingTouch(SeekBar arg0) {
		// TODO Auto-generated method stub
		
	}


//在拖动结束是使用getProgress获得当前的Progress值来设置亮度
	@Override
	public void onStopTrackingTouch(SeekBar seekBar) {
		// TODO Auto-generated method stub
		if (seekBar.getId()==myseekBar.getId()) {
//			将progress除以100并转换为float类型
			setScreenBrightness((float)seekBar.getProgress()/100);
		}
	}

}
</span>

效果图
从零开始学android<SeekBar滑动组件.二十二.>

改变后

从零开始学android<SeekBar滑动组件.二十二.>


当然,使用SeekBar组件也可以对音量进行控制,大家可以查询相关API自行尝试






下节预报:RatingBar评分组件

从零开始学android<SeekBar滑动组件.二十二.>,布布扣,bubuko.com

从零开始学android<SeekBar滑动组件.二十二.>

上一篇:web基础知识(一)关于ajax传值最基础东西


下一篇:Android Studio安装及环境搭建