91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在Android中實現一個動畫效果的自定義下拉菜單功能

發布時間:2021-02-23 16:33:57 來源:億速云 閱讀:351 作者:Leah 欄目:開發技術

如何在Android中實現一個動畫效果的自定義下拉菜單功能?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

要實現的功能及思路如下:

下拉菜單樣式是自定義的、非原生效果:需要使用 setDropDownViewResource 方法來設置下拉視圖的布局樣式。該方法需要傳入布局資源,該布局需要定義每個 Item 的屬性,比如寬高和文字顏色等(為了使效果明顯,我將每個 Item 的高度設置為 50 dp,文字設置為藍色)點擊這個 Spinner 控件時,讓其運行一段“從左到右、逐漸顯示”的漸變動畫:我通過 xml 的方式來定義這個動畫,需要包含 translate(位移) 和 alpha(透明度) 兩個TAG,并設置相應的屬性值下拉菜單的內容列表要展示在 Spinner 里面,需要通過適配器 Adapter 跟 Spinner 進行綁定:可以直接使用Android原生的 ArrayAdapter選擇任意一個 Item 后,將其內容展示在界面上,告知用戶選擇的內容:需要實現 Spinner 的 onItemSelected 監聽回調

源碼如下:

1、主Activity(注意代碼中的注釋,不然你會遇到一些坑!)

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<>(this, android.R.layout.simple_spinner_item, countries);

    // 自定義的下拉視圖布局樣式
    mAdapter.setDropDownViewResource(R.layout.spinner_drop_down);

    // 設置數據的適配器
    mSpinner.setAdapter(mAdapter);

    mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
      @Override
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        mTextView.setText("你選擇的是:" + countries[position]);

        // 一定要設置父視圖可見,否則 在選擇后,Spinner會消失
        parent.setVisibility(View.VISIBLE);
      }

      @Override
      public void onNothingSelected(AdapterView<?> parent) {
      }
    });

    // 通過 xml 的形式來定義動畫
    mAnimation = AnimationUtils.loadAnimation(this, R.anim.my_anim);
    mSpinner.setOnTouchListener(new Spinner.OnTouchListener() {
      @Override
      public boolean onTouch(View v, MotionEvent event) {
        // 點擊 Spinner 后,運行動畫
        v.startAnimation(mAnimation);
        return false;
      }
    });
  }
}

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

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:orientation="vertical">

  <TextView android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="center"
       android:id="@+id/textView9"/>

  <Spinner android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:id="@+id/spinner"
       android:layout_gravity="center"
       android:layout_marginTop="15dp"/>

</LinearLayout>

3、自定義的下拉視圖樣式布局文件 spinner_drop_down.xml 如下:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="wrap_content"
       android:layout_height="50dp"
       android:textColor="@color/colorBlue"
       android:singleLine="true"
       >
</TextView>

4、自定義動畫 xml 文件如下:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
  <translate
    android:fromXDelta="0"
    android:toXDelta="50%p"
    android:duration="2000"/>

  <alpha
    android:fromAlpha="0.0"
    android:toAlpha="1.0"
    android:duration="2000"/>
</set>

關于如何在Android中實現一個動畫效果的自定義下拉菜單功能問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

中西区| 聂拉木县| 横峰县| 贵定县| 綦江县| 新龙县| 平顶山市| 公安县| 临猗县| 陆丰市| 青浦区| 鹿邑县| 吉木萨尔县| 临江市| 淮滨县| 罗甸县| 屏东市| 姜堰市| 宁都县| 濮阳县| 浮梁县| 会昌县| 浑源县| 福海县| 且末县| 兴宁市| 山东省| 邢台市| 刚察县| 舞阳县| 体育| 同心县| 灵璧县| 通道| 金阳县| 夏津县| 隆林| 沈阳市| 札达县| 内黄县| 象州县|