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

溫馨提示×

溫馨提示×

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

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

Android 仿京東側滑篩選實例代碼

發布時間:2020-09-22 21:11:11 來源:腳本之家 閱讀:419 作者:一花一朝 欄目:移動開發

簡單介紹

這個demo寫的是仿京東的側滑篩選頁面,點擊進入篩選后進入二級篩選,兩次側滑的篩選,還包括ListView+CheckBox滑動沖突,ListView+ GridView顯示一行問題解決,接口回調傳遞數據等

效果圖

Android 仿京東側滑篩選實例代碼

Android 仿京東側滑篩選實例代碼

簡單得代碼介紹

1.首頁側滑用的是安卓官方V4包中的DrawerLayout

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/drawer_layout"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:fitsSystemWindows="true">

  <FrameLayout
    android:id="@+id/main_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">

    <TextView
      android:id="@+id/screenTv"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="center|top"
      android:layout_marginTop="200dp"
      android:text="仿京東篩選"
      android:textSize="20sp" />
  </FrameLayout>

  <LinearLayout
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="end"
    android:fitsSystemWindows="true"
    android:orientation="vertical" />

</android.support.v4.widget.DrawerLayout>

2.一級頁面是自定義的layout,作為DrawerLayout的側滑頁面添加進去

menuHeaderView = new RightSideslipLay(ScreeningActivity.this);
navigationView.addView(menuHeaderView);

發現的一個小的技巧想要側滑不隨滑動而滑動,只能點擊才出現側滑的話,可以先鎖定
drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.RIGHT);這樣就不一直跟著手勢側滑了

3.一級界面 ListVIew嵌套GridView,GridView得做自設配高度的自定義,不然只能顯示一行,具體參源碼AutoMeasureHeightGridView這個類

4.接下來是解析數據綁定數據了,還算比較簡單。定義模型類,京東的篩選默認每項顯示數據3個即一行。我現在默認的是都是關閉的,只有第一項是打開的,默認顯現9個即3行,點擊查看更多就能進入下一級頁面。參看圖二

5.二級頁面是一個PopupWindow,設置了PopupWindow的位置和動畫達到,也能像一級界面也樣,右邊側滑出來,點擊側滑收回去的效果。

/**

 * 創建PopupWindow
 */
private PopupWindow mMenuPop;
public RightSideslipChildLay mDownMenu;

protected void initPopuptWindow(List<AttrList.Attr.Vals> mSelectData) {
  mDownMenu = new RightSideslipChildLay(getContext(), ValsData, mSelectData);
  if (mMenuPop == null) {
    mMenuPop = new PopupWindow(mDownMenu, LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT);
  }
  mMenuPop.setBackgroundDrawable(new BitmapDrawable());
  mMenuPop.setAnimationStyle(R.style.popupWindowAnimRight);
  mMenuPop.setFocusable(true);
  mMenuPop.showAtLocation(RightSideslipLay.this, Gravity.TOP, 100, UiUtils.getStatusBarHeight(mCtx));
  mMenuPop.setOnDismissListener(new PopupWindow.OnDismissListener() {

    @Override
    public void onDismiss() {
      dismissMenuPop();
    }
  });
}

此頁面是一個ListView里包含CheckBox,對于CheckBox滑動選中錯位的問題在這個demo中也有解決,此法一本萬利。可以下載demo來參考。大體思路是CheckBox選中的狀態對象的存在需要顯示的對象里,設置對象的一個屬性,記錄CheckBox選中的狀態。

6.對于頁面件數據的傳遞使用的接口回調。包括Adapter數據操作的傳出和一級頁面傳入二級頁面,二級頁面在回傳給一級頁面顯示。一級頁面在傳出給主頁面(這個沒有寫)也可以用其他數據傳遞的方式,這只是方法之一。

7.項目下載地址:AndroidScreening_jb51.rar

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

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

AI

河池市| 中西区| 孟村| 南宫市| 阿巴嘎旗| 成安县| 偃师市| 锡林浩特市| 萝北县| 磐安县| 宁远县| 丘北县| 垣曲县| 天等县| 江油市| 彭州市| 廊坊市| 神池县| 张北县| 绥芬河市| 云霄县| 南宁市| 郯城县| 公主岭市| 平原县| 车致| 富蕴县| 许昌县| 方山县| 正宁县| 白山市| 沽源县| 庆云县| 钦州市| 新竹市| 桦甸市| 沙坪坝区| 柳河县| 射阳县| 哈尔滨市| 孟津县|