我们在购物APP里边设置收货地址时,都会有让我们挑选省份及城市的下拉菜单项。今日我将运用Android原生的 Spinner 控件来完结源码年代一个自定义的下拉菜单功用,并配上一个透明突变动画作用。

要完结的功用及思路如下:

  1. 下拉菜单款式是自定义的、非原生作用:需求运用 setDropDownViewResouandroid下载rce 办法来设置下拉视图的布局款式。该办法需求传入布局资源android手机,该布局需求定义每个 Item 的特征,比方宽高和文字色彩等(为了使作用显着,我将每个 Item 的高度设置为 50 dp,文字设置appleid为蓝色)
  2. 点击这个 Spinner 控件时,让其运转一段“从左到右、逐渐闪现”的突变动画:我经过 xml 的方法来HTTP定义这个动画,需求包括 translate(位移) 和 alpha(透明度) 两个TappstoreAG,并设置application相应的特征值httpclient
  3. 下拉菜单的内容列表要展现在 Spinner 里边,需求经过适配器 Adapter 跟 Spinner 进行绑定:能够直接运用Android原生的 ArrayAdapter
  4. 挑选任意一个 Item 后,将其内容展现在界面上,奉告用户挑选的内容:需求完结 Spinner 的 onIt源码之家emSelected 监听回调

源码如下:

1、主Activity(注意代码中的注释,不然你会遇到一些坑!)

public class SpinnerDemo extends Activity {
private static final String[] countries = {"北京", "上海", "广州", "深圳",源码超市 "成都", "杭州"};
private TextView mTextView;
private Spandroid手机inner mSpin源码年代ner;
private ArrayAdapter<String> mAdapter;
private Anappointmentimation mAnimation;
@Override
protected void onCreate(Bundle onSavedInstance) {
super.onCreate(onSavedInstance);
setContentView(R.layout.spinner_dem源码编辑器o);
mTextView = findViewById(R.id.textView9)appreciate;
mSpinner = findViewappearanceByhttp 404Id(R.id.spinner);
mAdapter = newandroid/yunos ArrayAdapte源码之家r<>(this, androandroid下载装置id.R.layou源码怎样做成app软件t.simple_spinner_item, countries);
// 自定义的下拉视图布局款式
mAdapter.setDropDownViewReso源码urce(R.layout.spinner_drop_down);
// 设置数appear据的适配器
mSpinner.s源码共享网etAdapter(mAdapter);
mSpinner.setOnItemSandroid下载软件appelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View源码超市 view, int position, long iappstored) {
mTextView.setText("你挑选的是:" + countries[position]);
// 一定要设置父视图可见,不然 在选源码编辑器择后,Spinner会消失
parent.http://192.168.1.1登录setVisibility(View.VISIBLE);
}
@Override
pubandroid11lic void onNothingSeleandroid是什么手机牌子cted(AdapterView&源码年代lt;?> parent) {
}
});
// 经过 xml 的方法来定义动画
mAnimation = AnimationUtils.landroid11oadAnimation(this, R.anim.my_anim);
mSpinner.setOnTouchLishttp://www.baidu.comtener(new Spinapplicationner.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// 点http://www.baidu.com击 Spinner 后,运转动画
v.startAnimation(mAnimation);
return false;
}
});
}
}

2、布局文件appstore spinner_demo.xml 如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout x源码mlns:android="http://schemas.android.com/a源码网站pk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
a源码怎样做成app软件ndroid:orientation="vertical">
<TextView android:layout_width="wrap_content"
android源码共享网:layout_height="wrap_content"
android:layout_gravity="center"
android:idappear="@+id/textView9"/>
<Spinner android:layout_width="wrap_content"
android:layout_hehttps和http的区别ight="wrap_content"
android:id="@+id/spinner"
android:layout_gravity=APP"center"
android:layout_marginTo源码编辑器p="15dp"/>
</LinearLayout>

3、自定义的下拉视图款式布局源码编辑器编程猫下载文件 spinner_drop_down.xml 如下:

<?xml version="1.0" encoding="httpclientutf-8"?&gtandroid下载装置;
<TextView xmlnappstores:android="http://schemas.android.com/apk/res/an源码共享网droid"
android:layout_width="wrap_conteandroid11nt"
android:layout_height="50dp"
android:texthttp 302Color="@color/colorBlue"
andapp装置下载roid:singleLine="true"
style="源码之家?android:attr/spinnerDropDownItemStyle">
</TextView>

4、自定义动画 xml 文件如下:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"&gtandroid下载软件app;
<translate
android:fromXDelta="0"
android:toXDelta="50%p"
android:duratio源码资本n="2000"/>
<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0"
andrapp装置下载oid:duration="2000"/>
</set>

5、作用图如下:

【Android初级】怎么完成一个有动画作用的自定义下拉菜单