Spinner 下拉菜单
setDropDownViewResource xml方式定义下拉列表菜单要显示的模样,类似于填充器
package com.example.demo;
import java.util.ResourceBundle.Control;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
//Spinner就是下拉菜单
public class MainActivity extends ActionBarActivity {
private static final String[] countriesStr ={"北京市","上海市","天津市","重庆市"};
private TextView myTextView;
private Spinner mySpinner;
private ArrayAdapter<String> adapter;
Animation myAnimation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myTextView = (TextView) findViewById(R.id.myTextView);
mySpinner = (Spinner) findViewById(R.id.mySpinner);
//集合适配器的使用
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,countriesStr);
//以为xml的方式定义下拉列表菜单要显示的模样
adapter.setDropDownViewResource(R.layout.myspinner_dropdown);
mySpinner.setAdapter(adapter);
mySpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
myTextView.setText("选择的是:" + countriesStr[position]);
parent.setVisibility(View.VISIBLE);
}
//不知道这个方法能干嘛
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
// parent.setVisibility(View.GONE);
}
});
//自定义 触摸 自定义的spinner 时的动画效果
//AnimationUtils加载动画xml文件
myAnimation = AnimationUtils.loadAnimation(this, R.anim.my_anim);
mySpinner.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
//点击的view启动这个自定义的动画
//这个view是指mySpinner,而不是跳出来的item
v.startAnimation(myAnimation);
//把mySpinner隐藏起来
v.setVisibility(View.INVISIBLE);
return false;
}
});
}
}
<?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="@drawable/white"
>
<TextView
android:id="@+id/myTextView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/title"
android:textColor="@drawable/black"
>
</TextView>
<Spinner
android:id="@+id/mySpinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
</Spinner>
</LinearLayout>
自定义的xml文件
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="24sp"
android:singleLine="true"
android:textSize="22sp"
style="?android:attr/spinnerDropDownItemStyle" />
加载的动画
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="0"
android:toXDelta="-100%p"
android:duration="300"
>
</translate>
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:duration="300">
</alpha>
</set>