自定义下拉菜单Spinner的使用

来源:互联网 发布:海宁司法拍卖淘宝网 编辑:程序博客网 时间:2024/05/07 14:39


1.新建项目,在res文件夹下家里文件夹anim,在其中建立文件my_anim.xml内容如下:


<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <!-- 位置转换效果 -->
    <translate
        android:duration="300"
        android:fromXDelta="0"
        android:toXDelta="-100%p" />
    <!-- 透明度转换效果 -->
    <alpha
        android:duration="300"
        android:fromAlpha="3.0"
        android:toAlpha="6.0" >
    </alpha>

</set>



2.在res目录下的layout文件夹中新建一个myspinner_dropdown.xml布局文件,内容如下:


<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/text1"
    style="?android:attr/spinnerDropDownItemStyle"
    android:layout_width="wrap_content"
    android:layout_height="24sp"
    android:singleLine="true" />
3.修改Activity的主布局文件main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView_show"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="你选择的是:"
        android:textSize="25sp" />

    <Spinner
        android:id="@+id/spinner"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

4.MainActivity.java文件内容:



package com.example.spinnerproject;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnFocusChangeListener;
import android.view.View.OnTouchListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import android.support.v4.app.NavUtils;

public class MainActivity extends Activity {
    private Spinner spinner=null;
    private TextView tv=null;
    private static final String citys[]={"北京","上海","天津","重庆"};
    private ArrayAdapter<String> adapter=null;
    private Animation animation=null;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        init();
        //通过适配器ArrayAdapter给相关布局与相关数据,关联到一起
        adapter=new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_spinner_item,citys);
        //给下拉菜单设置样式
        adapter.setDropDownViewResource(R.layout.myspinner_dropdown);
       
        animation=AnimationUtils.loadAnimation(this, R.anim.myspinner_dropdown);
        //给下拉菜单添加动画
       spinner.startAnimation(animation);
        spinner.setAdapter(adapter);
        spinner.setOnItemSelectedListener(listener);
        spinner.setOnTouchListener(touchListener);
        spinner.setOnFocusChangeListener(focusListener);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
private void init(){
    
    spinner=(Spinner) findViewById(R.id.spinner);
    tv=(TextView) findViewById(R.id.textView_show);
    
}
   private OnItemSelectedListener listener=new OnItemSelectedListener(){

    @Override
    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
            long arg3) {
        // TODO Auto-generated method stub
        tv.setText("你选择的是:"+citys[arg2]);
        
    }

    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
        // TODO Auto-generated method stub
        tv.setText("None");
    }};
    private OnTouchListener touchListener=new OnTouchListener() {
        
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
            
            v.setAnimation(animation);
            
            v.setVisibility(View.VISIBLE);
            return false;
        }
    };
    private OnFocusChangeListener focusListener=new OnFocusChangeListener() {
        
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            // TODO Auto-generated method stub
            
        }
    };

运行效果图:



原创粉丝点击