一句程式碼叫你實現高仿qq的側滑選單
阿新 • • 發佈:2019-01-03
今天下午 小編在與同事們研究側滑選單的時候 百度搜索了很多例子 差不多都是一個人的專案 但是 使用起來 報錯 報錯 報錯
研究了好久 差點崩潰-------------於是我們打算自己研究 於是就這樣動了起來 最後 只用了一句程式碼 搞定 ----------------------
藍瘦香菇 好了不多說了
首先是佈局程式碼 隨便寫的
然後是activity<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="yyzy.com.intelligent_transportation.ui.MainActivity"> <android.support.v4.widget.DrawerLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/draw"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/lin1" android:orientation="vertical" android:background="@drawable/qq"> </LinearLayout> <LinearLayout android:layout_width="600dp" android:layout_height="match_parent" android:orientation="vertical" android:id="@+id/lin2" android:background="@drawable/img_frame_background" android:layout_gravity="start"> </LinearLayout> </android.support.v4.widget.DrawerLayout> </LinearLayout>
package yyzy.com.intelligent_transportation.ui; import android.content.res.Configuration; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.LinearLayout; import yyzy.com.intelligent_transportation.R;public class MainActivity extends AppCompatActivity { DrawerLayout drawerLayout;//宣告 LinearLayout lin1; LinearLayout lin2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化 drawerLayout= (DrawerLayout) findViewById(R.id.draw); lin1= (LinearLayout) findViewById(R.id.lin1); lin2= (LinearLayout) findViewById(R.id.lin2); //監聽drawerLayout切換事件 drawerLayout.setDrawerListener(new DrawerLayout.DrawerListener() { /** * 當抽屜被滑動的時候呼叫此方法 * slideOffset 表示 滑動的幅度(0-1) */ @Override public void onDrawerSlide(View drawerView, float slideOffset) { //設定主介面的linearLayout(lin1)的平移動畫即可 //在使用側滑選單lin2的寬度 * 滑動的幅度 作為平移動畫的偏移量即可 lin1.setTranslationX(lin2.getWidth()*slideOffset); } /** * 當一個抽屜被完全開啟的時候被呼叫 */ @Override public void onDrawerOpened(View drawerView) { } /** * 當一個抽屜完全關閉的時候呼叫此方法 */ @Override public void onDrawerClosed(View drawerView) { } /** * 當抽屜滑動狀態改變的時候被呼叫 * 狀態值是STATE_IDLE(閒置--0), STATE_DRAGGING(拖拽的--1), STATE_SETTLING(固定--2)中之一。 * 抽屜開啟的時候,點選抽屜,drawer的狀態就會變成STATE_DRAGGING,然後變成STATE_IDLE */ @Override public void onDrawerStateChanged(int newState) { } }); } }
就這樣ok了