如何在Android中实现一个动画效果的自定义下拉菜单功能

  介绍

如何在Android中实现一个动画效果的自定义下拉菜单功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

要实现的功能及思路如下:

下拉菜单样式是自定义的,非原生效果:需要使用setDropDownViewResource方法来设置下拉视图的布局样式。该方法需要传入布局资源,该布局需要定义每个条目的属性,比如宽高和文字颜色等(为了使效果明显,我将每个项目的高度设置为50 dp,文字设置为蓝色)点击这个转轮控件时,让其运行一段“从左到右,逐渐显示”的渐变动画:我通过xml的方式来定义这个动画,需要包含翻译(位移)和α(透明度)两个标签,并设置相应的属性值下拉菜单的内容列表要展示在转轮里面,需要通过适配器适配器跟转轮进行绑定:可以直接使用Android原生的ArrayAdapter选择任意一个项目后,将其内容展示在界面上,告知用户选择的内容:需要实现转轮的> public  class  SpinnerDemo  extends  Activity  {   private 才能static  final  String [], countries =,{“北京“,,“上海“,,“广州“,,“深圳“,,“成都“,,“杭州“};      private 才能;TextView  mTextView;   private 才能;Spinner  mSpinner;   private 才能;ArrayAdapter< String>, mAdapter;   private 才能;Animation  mAnimation;      @Override才能   protected 才能;void  onCreate (Bundle  onSavedInstance), {   ,,,super.onCreate (onSavedInstance);   ,,,setContentView (R.layout.spinner_demo);      ,,,mTextView =, findViewById (R.id.textView9);   ,,,mSpinner =, findViewById (R.id.spinner);      ,,,mAdapter =, new  ArrayAdapter<祝辞(android.R.layout.simple_spinner_item,,,国家);      ,,,//,自定义的下拉视图布局样式   ,,,mAdapter.setDropDownViewResource (R.layout.spinner_drop_down);      ,,,//,设置数据的适配器   ,,,mSpinner.setAdapter (mAdapter);      ,,,mSpinner.setOnItemSelectedListener (new  AdapterView.OnItemSelectedListener (), {   ,,,,@Override   ,,,,,public  void  onItemSelected (AdapterView<?祝辞,母公司,View 看来,,int 位置,,long  id), {   ,,,,,,,mTextView.setText(“你选择的是:“,+,国家(位置));      ,,,,,,,//,一定要设置父视图可见,否则,在选择后,微调控制项会消失   ,,,,,,,parent.setVisibility (View.VISIBLE);   ,,,,,}      ,,,,@Override   ,,,,,public  void  onNothingSelected (AdapterView<?祝辞,父母),{   ,,,,,}   ,,,});      ,,,//,通过,xml 的形式来定义动画   ,,,mAnimation =, AnimationUtils.loadAnimation(这个,,R.anim.my_anim);   ,,,mSpinner.setOnTouchListener (new  Spinner.OnTouchListener (), {   ,,,,@Override   ,,,,,public  boolean  ondraw (View  v, MotionEvent 事件),{   ,,,,,,,//,点击,Spinner 后,运行动画   ,,,,,,,v.startAnimation (mAnimation);   ,,,,,,,return 假;   ,,,,,}   ,,,});   ,,}   }

2,布局文件spinner_demo。xml如下:

& lt; ? xml  version=?.0“,编码=皍tf-8" ?比;   & lt; LinearLayout  xmlns: android=癶ttp://schemas.android.com/apk/res/android"   ,,,,,,android: layout_width=癿atch_parent"   ,,,,,,android: layout_height=癿atch_parent"   ,,,,,,android:取向=皏ertical"比;      & lt;才能TextView  android: layout_width=皐rap_content"   ,,,,,,android: layout_height=皐rap_content"   ,,,,,,android: layout_gravity=癱enter"   ,,,,,,android: id=癅 + id/textView9"/比;      & lt;才能Spinner  android: layout_width=皐rap_content"   ,,,,,,android: layout_height=皐rap_content"   ,,,,,,android: id=癅 + id/spinner"   ,,,,,,android: layout_gravity=癱enter"   ,,,,,,android: layout_marginTop=?5 dp"/比;      & lt;/LinearLayout>

3,自定义的下拉视图样式布局文件spinner_drop_down。xml如下:

& lt; ? xml  version=?.0“,编码=皍tf-8" ?比;   & lt; TextView  xmlns: android=癶ttp://schemas.android.com/apk/res/android"   ,,,,,,android: layout_width=皐rap_content"   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

如何在Android中实现一个动画效果的自定义下拉菜单功能