现在的位置: 首页 > 综合 > 正文

32_自动提示文本AutoCompleteTextView和拖动条SeekBar

2013年06月15日 ⁄ 综合 ⁄ 共 3447字 ⁄ 字号 评论关闭

一、自动提示文本AutoCompleteTextView  

在使用搜索引擎的时候,经常会看到一些自动提示的功能,在Android中也提供了这种功能,该功能的实现依靠android.widget.AutoCompleteTextView类来完成。使用AutoCompleteTextView类操作时,要把所有数据使用ListAdapter进行封装后才可以增加到下拉提示框中。

例 1 程序运行效果截图

实现过程:

1. 编写main.xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#00ff00">
    <AutoCompleteTextView 
        android:id="@+id/auto"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>
</LinearLayout>

2. 定义MainActivity.java,操作下拉提示框

import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;

public class MainActivity extends Activity {
	private static final String data[] = new String[]{"run", "running", "runninglion",
		"runninglion-crazyman"};
	private AutoCompleteTextView auto = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
				android.R.layout.simple_dropdown_item_1line, data);//定义数据集
		auto = (AutoCompleteTextView)findViewById(R.id.auto);
		auto.setAdapter(adapter);
	}
}

二、拖动条SeekBar

  拖动条与水平显示的进度条类似,但是拖动条可以由用户进行手工调节。如当用户要改变播放器音量时就可以使用拖动条改变播放进度。在使用setOnSeekBarChangeListener()方法监听时,要使用SeekBar.OnSeekBarChangeListener接口。此接口定义如下:

public static interface SeekBar.OnSeekBarChangeListener{
	/**
	 * 开始拖动时触发操作
	 * @param seekBar 触发操作的SeekBar组件对象
	 */
	public abstract 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);
}

例 2 本程序中有10张图片,当用户使用SeekBar拖动时,会显示不同的图片。程序运行效果截图:

实现过程:

1. 定义main.xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#00ff00">
	<ImageView 
	    android:id="@+id/image"
	    android:src="@drawable/img_0"
	    android:layout_width="fill_parent"
	    android:layout_height="300px"/>
	<SeekBar
	    android:id="@+id/seekbar"
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content"/>
</LinearLayout>

2. 定义MainActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.SeekBar;

public class MainActivity extends Activity {
	private SeekBar seek = null;
	private ImageView image = null;
	private int imgData[] = new int[]{R.drawable.img_0, R.drawable.img_1,
			R.drawable.img_2, R.drawable.img_3, R.drawable.img_4,
			R.drawable.img_5, R.drawable.img_6, R.drawable.img_7,
			R.drawable.img_8, R.drawable.img_9};   //要显示的图片
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		seek = (SeekBar)findViewById(R.id.seekbar);
		image = (ImageView)findViewById(R.id.image);
		seek.setMax(9);
		seek.setOnSeekBarChangeListener(new OnSeekBarChangeListenerImpl());
	}
	private class OnSeekBarChangeListenerImpl implements SeekBar.OnSeekBarChangeListener{
		@Override
		public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser){   //正在拖动
			//修改显示图片
			MainActivity.this.image.setImageResource(MainActivity.this.imgData[seekBar.getProgress()]);
		}
		@Override
		public void onStartTrackingTouch(SeekBar seekBar){   //开始拖动	
		}
		@Override
		public void onStopTrackingTouch(SeekBar seekBar){   //停止拖动		
		}
	}
}

抱歉!评论已关闭.