声明

  欢迎转载,但请保留文章原始出处:)

    专注:http://www.focuser.org

    本文链接:http://www.focuser.org/?p=270

由于手机屏幕尺寸大小的限制,在有限的空间中展现良好的UI效果使我们追求的,在android中,spinner下拉菜单在我们的开发过程中使用的次数相当的多,也是我们每个开发者所必须掌握的技术。

在实现动态的添加和删除spinner菜单中,我们使用到了ArrayList这个集合类,java学的好的兄弟都知道集合类的好处,通过集合类 ArrayList动态的进行添加和删除,在显示效果上我们采用了自定义的下拉菜单,另外还将android中的动画效果也用了上,在实现数据绑定的时候 使用了数组还有在xml文件中的数据两种方式,时间关系效果图就不给大家亮出来了,呵呵。

下面是MainActivity

package org.focuser.spinner;

import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;

public class MainActivity extends Activity {
private String []array={“科比”,”詹姆斯”,”奥尼尔”,”乔丹”};
private TextView textview=null;
private Spinner spinner=null;
private EditText edittext=null;
private Button button1=null;
private Button button2=null;
private ArrayAdapter adapter=null;
private List allCou;
Animation animation;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//取得控件对象
textview=(TextView)findViewById(R.id.textview);
spinner=(Spinner)findViewById(R.id.spinner);
edittext=(EditText)findViewById(R.id.edittext);
button1=(Button)findViewById(R.id.button1);
button2=(Button)findViewById(R.id.button2);
allCou=new ArrayList();
for(int i=0;i {
allCou.add(array[i]);
}
button1.setOnClickListener(new Button.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String newarray=edittext.getText().toString();
for(int i=0;i {
if(newarray.equals(adapter.getItem(i)))
{
return;
}
}
if(!newarray.equals(“”))
{
adapter.add(newarray);
int position=adapter.getPosition(newarray);
spinner.setSelection(position);
edittext.setText(“”);
}
}
});
button2.setOnClickListener(new Button.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(spinner.getSelectedItem().toString()!=null)
{
adapter.remove(spinner.getSelectedItem().toString());
edittext.setText(“”);
if(adapter.getCount()==0)
{
edittext.setText(“”);
}
}
}
});
//设置adapter
adapter=new ArrayAdapter(this, android.R.layout.simple_spinner_item, allCou);
//adapter=new ArrayAdapter(this, android.R.layout.simple_spinner_item, array);
// adapter=ArrayAdapter.createFromResource(this, R.array.array, android.R.layout.simple_spinner_item);
//adapter=new ArrayAdapter(this, R.array.array, android.R.layout.simple_spinner_item);
//下面是用了两种不同的方式显示下拉列表1.自定义的样式 2.利用系统内部的样式
adapter.setDropDownViewResource(R.layout.dropdown);
//adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//将spinner空件绑定adapter以传递数据
spinner.setAdapter(adapter);
//给spinner控件添加选择setOnItemSelectedListener事件
spinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() {

@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
//在textview中显示点击的选项
//textview.setText(“您选择的是:”+ array[position]);
textview.setText(“您选择的是:”+ parent.getItemAtPosition(position));
//将spinner的可见性设置为可见状态
parent.setVisibility(View.VISIBLE);
}

@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub

}
});
//编写动画对象,并且获取自定应的动画样式
animation=AnimationUtils.loadAnimation(this, R.anim.animation);
spinner.setOnTouchListener(new Spinner.OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
//运行动画animation
v.startAnimation(animation);
//将spinner的可见性设置为不可见状态
v.setVisibility(View.INVISIBLE);
return false;
}
});
spinner.setOnFocusChangeListener(new Spinner.OnFocusChangeListener() {

@Override
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
v.startAnimation(animation);
//将spinner的可见性设置为可见状态
v.setVisibility(View.VISIBLE);
}
});
}
}

接下来是main.xml文件

<?xml version=”1.0″ encoding=”utf-8″?>
android:orientation=”vertical”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
>
android:id=”@+id/textview”
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:text=”@string/hello”
/>
android:id=”@+id/edittext”
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
/>
android:id=”@+id/button1″
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:text=”增加”
/>
android:id=”@+id/button2″
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:text=”减少”
/>
android:id=”@+id/spinner”
android:prompt=”@string/pormpt_name”
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
/>

还有自定义的下拉菜单样式dropdown.xml文件

<?xml version=”1.0″ encoding=”utf-8″?>
xmlns:android=”http://schemas.android.com/apk/res/android”
android:layout_width=”match_parent”
android:layout_height=”24sp”
android:id=”@+id/textview1″
android:singleLine=”true”
style=”?android:attr/spinnerDropDownItemStyle”
>

哈哈,这就是动态实现spinner下拉菜单的主要代码了,高手就过了,跟我水平差不多的可以稍微看看,小白们可要仔细看看学习喽,嘿嘿!

更多相关文章

  1. Android开发指南-用户界面-创建菜单 .
  2. Android仿IOS上拉下拉弹性效果
  3. Kotlin中的Android项目编译出现 Unresolved reference: R 或者co
  4. Android(安卓)动态修改SeekBar滑块和进度条的颜色
  5. 【30篇突击 android】源码统计 十九
  6. 阿里HR: 你会 Android(安卓)实现侧滑菜单-design吗? CN看了,原来这
  7. Android(安卓)选项菜单Menu
  8. Android仿IOS阻尼效果,上下弹性滑动,改变背景颜色
  9. Android(安卓)DrawLayout抽屉效果的导航菜单实现

随机推荐

  1. Android(安卓)日常开发(48)android.os.File
  2. Android(安卓)Activity/Fragment Lifecyc
  3. Android视频采集+H264编码成功
  4. BPF初探 - Android中BPF运用实例
  5. [android]滑动冲突 ScrollView+ViewPager
  6. [Android实例] Android(安卓)实例SOCKET
  7. Google Search Widget
  8. android中editText弹出软键盘并且根据edi
  9. Android(安卓)APP都有的引导、欢迎界面
  10. Android开发之adb命令