一、自动提示文本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){ //停止拖动 } } }