亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統(tǒng) > Android > 正文

Android實現(xiàn)QQ側(cè)滑菜單效果

2019-10-21 21:26:16
字體:
供稿:網(wǎng)友

QQ側(cè)滑菜單的Android實現(xiàn)代碼,供大家參考,具體內(nèi)容如下

實現(xiàn)邏輯

1.先寫出菜單頁面和主頁面的布局

2.創(chuàng)建一個類,繼承RelativeLayout,實現(xiàn)里面的onLayout

3.在主布局文件中添加子空間

4.在onLayout里面獲取子控件的寬和高,并對子控件的位置進(jìn)行繪制

5.給子布局設(shè)置滑動事件,分別在手指落下/移動/抬起的時候,獲取手指的位置

6.在手指移動的過程中,對菜單頁面的移動距離進(jìn)行限制,防止菜單頁面跑出指定的頁面

7.在手指抬起的時候,判定一下手指移動的距離,如果移動的距離大于菜單頁面寬度的一半,那就讓菜單彈出,否則就讓菜單回到默認(rèn)的位置

8.針對菜單的彈出和收起,實現(xiàn)了一個漸變的過程,防止手指抬起的時候,菜單頁面會突然間到達(dá)指定的位置,這個功能的實現(xiàn)需要借助computeScroll方法

9.滑動沖突的處理,分別求出手指移動時,X和Y方向的偏移量,如果x方向的大于Y方向的,那就判定滑動事件是彈出和收起菜單,否則就判定為菜單頁面的內(nèi)部滑動

代碼文件

布局文件

菜單布局文件

<?xml version="1.0" encoding="utf-8"?><ScrollView xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="240dp"android:background="@mipmap/menu_bg"android:layout_height="match_parent"android:orientation="vertical"><LinearLayout  android:orientation="vertical"  android:layout_width="match_parent"  android:layout_height="match_parent">  <TextView    style="@style/menu_style"    android:text="新聞"    android:drawableLeft="@mipmap/tab_news" />  <TextView    style="@style/menu_style"    android:text="訂閱"    android:drawableLeft="@mipmap/tab_read" />  <TextView    style="@style/menu_style"    android:text="跟帖"    android:drawableLeft="@mipmap/tab_ties" />  <TextView    style="@style/menu_style"    android:text="圖片"    android:drawableLeft="@mipmap/tab_pics" />  <TextView    style="@style/menu_style"    android:text="話題"    android:drawableLeft="@mipmap/tab_ugc" />  <TextView    style="@style/menu_style"    android:text="投票"    android:drawableLeft="@mipmap/tab_vote" />  <TextView    style="@style/menu_style"    android:text="本地"    android:drawableLeft="@mipmap/tab_local" />  <TextView    style="@style/menu_style"    android:text="聚合閱讀"    android:drawableLeft="@mipmap/tab_focus" />  <TextView    style="@style/menu_style"    android:text="聚合閱讀"    android:drawableLeft="@mipmap/tab_focus" />  <TextView    style="@style/menu_style"    android:text="聚合閱讀"    android:drawableLeft="@mipmap/tab_focus" />  <TextView    style="@style/menu_style"    android:text="聚合閱讀"    android:drawableLeft="@mipmap/tab_focus" />  <TextView    style="@style/menu_style"    android:text="聚合閱讀"    android:drawableLeft="@mipmap/tab_focus" /></LinearLayout></ScrollView>

主頁面布局

<?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"><LinearLayout  android:gravity="center_vertical"  android:background="@mipmap/top_bar_bg"  android:orientation="horizontal"  android:layout_width="match_parent"  android:layout_height="wrap_content">  <ImageButton    android:background="@null"    android:id="@+id/ib_back"    android:src="@mipmap/main_back"    android:layout_width="wrap_content"    android:layout_height="wrap_content" />  <ImageView    android:src="@mipmap/top_bar_divider"    android:layout_width="wrap_content"    android:layout_height="wrap_content" />  <TextView    android:layout_weight="1"    android:gravity="center"    android:text="黑馬新聞"    android:textSize="20sp"    android:textColor="#fff"    android:layout_width="wrap_content"    android:layout_height="wrap_content" /></LinearLayout><TextView  android:gravity="center"  android:textColor="#cfcfcf"  android:textSize="20sp"  android:text="釣魚島是中國的..."  android:layout_width="match_parent"  android:layout_height="match_parent" /></LinearLayout>

主頁面布局

<?xml version="1.0" encoding="utf-8"?><RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="com.example.a1_.MainActivity"><com.example.a1_.SlidingMenu  android:id="@+id/slidingmenu"  android:layout_width="match_parent"  android:layout_height="match_parent">  <include layout="@layout/menu"/>  <include layout="@layout/main"/></com.example.a1_.SlidingMenu></RelativeLayout>

自定義布局

package com.example.a1_;import android.content.Context;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;import android.widget.RelativeLayout;import android.widget.Scroller;/** * Created by Administrator on 2017.05.29.0029. */public class SlidingMenu extends RelativeLayout {private float downX;private int destance;private int menuWidth;private int endx;private int dx;private final Scroller scroller;private float downY;private int dy;public SlidingMenu(Context context, AttributeSet attrs) {  super(context, attrs);  //創(chuàng)建Scroller對象  scroller = new Scroller(context);}@Overrideprotected void onLayout(boolean changed, int l, int t, int r, int b) {  //獲取子控件  View menu = getChildAt(0);  View main = getChildAt(1);  //獲取菜單布局的寬度  menuWidth = menu.getMeasuredWidth();  //把菜單布局布置在屏幕左側(cè)  menu.layout(-menuWidth,t,0,b);  //主頁面使用默認(rèn)的位置就可以  main.layout(l,t,r,b);}//給布局添加一個touch事件@Overridepublic boolean onTouchEvent(MotionEvent event) {  switch (event.getAction()){    case MotionEvent.ACTION_DOWN:      //當(dāng)手指按下時,記錄一下手指的位置      downX = event.getX();      break;    case MotionEvent.ACTION_MOVE:      //當(dāng)手指移動的時候,記錄移動的距離      destance = (int) (event.getX()- downX+endx);      //對手指滑動的時候,頁面移動做出限制      if (destance>menuWidth){        destance = menuWidth;      }else if (destance<0){        destance = 0;      }      scrollTo(-destance,0);      break;    case MotionEvent.ACTION_UP:      //當(dāng)手指離開屏幕的時候,記錄菜單的位置,根據(jù)情況進(jìn)行判定      if (destance<menuWidth/2){        endx = 0;      }else {        endx = menuWidth;      }      int startX = destance;      //計算偏移量      dx = endx-destance;      scroller.startScroll(startX,0,dx,0,Math.abs(dx)*10);      invalidate();      break;  }  return true;}//重寫computeScroll@Overridepublic void computeScroll() {  if (scroller.computeScrollOffset()){    int currx = scroller.getCurrX();    scrollTo(-currx,0);    invalidate();  }}//處理滑動沖突@Overridepublic boolean onInterceptTouchEvent(MotionEvent ev) {  switch (ev.getAction()){    case MotionEvent.ACTION_DOWN:      //獲取當(dāng)前點擊的位置      downX = ev.getX();      downY = ev.getY();      break;    case MotionEvent.ACTION_MOVE:      //獲取x和y方向的偏移量      dx = (int) (ev.getX()-downX);      dy = (int) (ev.getY() - downY);      //判斷是x方向偏移的多還是y方向偏移得多      if (Math.abs(dx)>Math.abs(dy)){        //攔截move事件        return true;      }      break;  }  return super.onInterceptTouchEvent(ev);}//判斷當(dāng)前的菜單狀態(tài)是打開還是關(guān)閉的public void switchMenu(){  int startX = 0;  if (endx == 0){    endx = menuWidth;  }else {    endx = 0;    startX = menuWidth;  }  //設(shè)置偏移量  int dx = endx-startX;  scroller.startScroll(startX,0,dx,0,Math.abs(dx)*10);  invalidate();}}

主頁面代碼

package com.example.a1_;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.ImageButton;public class MainActivity extends AppCompatActivity {private SlidingMenu slidingMenu;@Overrideprotected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  //初始化控件  ImageButton imageButton = (ImageButton) findViewById(R.id.ib_back);  slidingMenu = (SlidingMenu) findViewById(R.id.slidingmenu);  //設(shè)置點擊事件  imageButton.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {      slidingMenu.switchMenu();    }  });}}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
欧美成人精品午夜一区二区| 亚洲高清一区二| 一本大道香蕉久在线播放29| 影音先锋男人的网站| 国产成人亚洲精品青草天美| 国产极品在线观看| 久久国产婷婷国产香蕉| 精品国产免费一区二区三区四区| 欧美成人激情| 芬兰videosfree性少妇| 国产第一亚洲| tube8在线hd| 性色av浪潮av| 激情偷乱视频一区二区三区| 欧美二区不卡| 99热这里只有精品在线观看| 久久国产波多野结衣| 91最新国产视频| 丰满人妻一区二区三区免费视频棣| 色综合色综合色综合| 欧美伦理91| 亚洲女人初尝黑人巨大| 美女在线视频一区| 欧美性受极品xxxx喷水| 国产aⅴ夜夜欢一区二区三区| 国产小视频免费在线观看| yy6080久久伦理一区二区| 国产伦精品一区二区三区免.费| 日韩欧美在线视频日韩欧美在线视频| 波多野结衣免费观看| 日本综合视频| 日本高清不卡中文字幕| 亚洲精品乱码久久久久久久久| 日韩激情电影免费看| 五月天av在线| 午夜在线观看视频| 四季av中文字幕| 久草热视频在线观看| 91精品国产乱码久久久久久| 一区二区三区中文免费| 成人久久一区二区| av免费在线免费| 麻豆精品传媒视频观看| av在线不卡一区| 国产精品盗摄一区二区三区| 黄色一级大片在线免费看产| 亚洲国产欧美日韩精品| 欧美人与性动交a欧美精品| 男生操女生视频在线观看| 都市激情国产精品| 老司机久久99久久精品播放免费| 91在线网站| 黄网站色欧美视频| 国产永久免费视频| 农村老熟妇乱子伦视频| 欧美日韩国产免费一区二区三区| 91精品国产综合久久香蕉的特点| 丰满肉肉bbwwbbww| 麻豆精品国产传媒| 午夜精品久久久久久久99老熟妇| 国产免费一区二区三区免费视频| 色爱综合区网| 成年片费网站色大全免费视频| 久久成人久久爱| 欧美视频二区| 国产精品污www一区二区三区| 欧美嫩在线观看| 成人性生交大片免费观看网站| 亚洲免费影院| 成人性生活视频| 欧美成人禁片在线观看网址| 亚洲欧美激情视频在线观看一区二区三区| 在线播放日韩av| 国产美女网站在线观看| 清纯唯美亚洲综合| 性一交一乱一色一免费无遮挡| 国产乱精品一区二区三区| 久久国产精品国语对白| aaaaaa毛片| 欧美激情久久久久久久| 野外性满足hd| 日韩中文字幕三区| 久久综合久久鬼色中文字| 色偷偷亚洲女人天堂观看欧| 日本一欧美一欧美一亚洲视频| 日韩不卡在线观看| 亚洲综合国产精品| 亚洲成人在线| av不卡在线| 色婷婷狠狠综合| 成人免费一级片| 久久久久麻豆v国产精华液好用吗| 视频一区二区精品| 日本熟女一区二区| 亚洲精品精选| 欧美放荡办公室videos4k| 貂蝉被到爽流白浆在线观看| 91片黄在线观看喷潮| 国产精品一区二区精品| 精品影片在线观看的网站| 久久久久无码国产精品| 999精品在线视频| 日本女优一区| 一区二区三区我不卡| 欧美乱大交xxxxx免费| 午夜久久黄色| gogo久久日韩裸体艺术| 欧美极品视频一区二区三区| 久久久久无码国产精品| 加勒比成人在线| 午夜影院在线观看视频| 亚洲伊人一本大道中文字幕| 91青青国产在线观看精品| 亚洲美女视频在线免费观看| 国产极品视频在线观看| 国产精品久久久久久久天堂| 国产欧美一区二区三区视频| 亚洲精品国产一区二区三区| 青草影视电视剧免费播放在线观看| 欧美区一区二区三区| 小次郎av收藏家| 亚洲国产日韩一级| 午夜电影网亚洲视频| 日韩精品视频免费在线观看| 制服丝袜av成人在线看| 国产午夜精品无码一区二区| 国产精品一区二区av日韩在线| 一区二区三区四区不卡视频| 99久久国产综合精品女小说| 亚洲精品五月天| 91精品久久久久久久久99蜜臂| 中文字幕一区二区三区乱码图片| 国产精品99免费看| 久久综合之合合综合久久| 蜜芽一区二区三区| 日韩欧美二区| 宅男噜噜噜66国产日韩在线观看| 欧美日韩中文字幕在线播放| 黄污视频在线观看| 91亚洲午夜在线| 无码国产伦一区二区三区视频| 看黄在线观看| 日韩欧美极品在线观看| 久久精品一区二区三区四区| 国产男男gay体育生网站| 久久99国产精品免费网站| 三级ai视频| 日韩欧美一级精品久久| 国产叼嘿网站免费观看不用充会员| 精品国产精品久久一区免费式| 精品伦理一区二区三区| 免费大片在线观看www| 国产视频一区二区三区四区| 狂野欧美性猛交xxxxx视频| 日本道色综合久久| 亚洲少妇30p| 国产呦萝稀缺另类资源| 国产成人精品久久亚洲高清不卡| 亚洲人成在线观看| 91视频入口| 国产精品久久综合青草亚洲AV| 极品美女销魂一区二区三区| 日韩三级中文字幕| 99青春婷婷视频| 污污网站在线观看视频| 91久久精品一区二区别| 色94色欧美sute亚洲13| 欧美一区二区三区思思人| 成人网欧美在线视频| 免费网站你懂的| 欧美一区二区三区另类| 偷拍日韩校园综合在线| 色愁久久久久久| 国产探花视频在线播放| 日韩成人av电影在线| 91福利在线观看| 亚洲精品久久7777| 精品成人一区| 日韩在线免费播放| 麻豆国产高清在线播放| 亚洲天堂网视频| 一级一片免费看| 中文字字幕在线中文乱码| 欧美黄色成人网| 日本免费久久高清视频| 午夜在线观看91| 日韩精品一区第一页| 国产白丝袜美女久久久久| 久热成人在线视频| 亚洲精品国产精品国自产网站| 亚洲做受高潮无遮挡| 中文字幕资源网| 欧洲成人一区二区| 午夜激情视频在线播放| 成人一区二区| 亚洲精品日韩激情在线电影| 婷婷综合网站| 欧美丰满老妇厨房牲生活| 国精产品一区一区三区免费视频| 成人做爰高清视频网站| 国产精品成人免费视频| gv天堂gv无码男同在线观看| 麻豆精品密在线观看| 美女翘臀白浆直流视频| 国产真实乱偷精品视频免| a级片免费观看| 久草手机视频在线观看| ,亚洲人成毛片在线播放| 欧美三级电影精品| 精品人妻少妇一区二区| 中文字幕日本在线观看| 好吊色视频988gao在线观看| 欧美高清不卡在线| 人人人妻人人澡人人爽欧美一区| 在线亚洲+欧美+日本专区| 伊人精品久久久久7777| 日韩a级大片| 91午夜在线播放| 国产一级片免费观看| 国产日产高清欧美一区二区三区| 欧美一区 二区 三区| 亚洲 中文字幕 日韩 无码| 久久一区中文字幕| 久久成人小视频| caoporn免费在线| 高清一区二区三区av| 久久精品中文| av在线电影免费观看| 一区二区三区的久久的视频| 成人精品福利视频| 小泽玛利亚视频在线观看| 在线手机福利影院| 久久久久久久免费视频| 国产精品视频在线播放| 久久久精品国产网站| 亚洲欧美aaa| 日韩一区二区精品视频| 欧美日韩91| 中文av字幕一区| 亚洲资源在线看| 97热精品视频官网| 欧美a级片一区| 亚洲夂夂婷婷色拍ww47| 国产aⅴ综合色| 久久成人精品无人区| 国产91在线视频| 中文字幕第22页| 18aaaa精品欧美大片h| 日韩亚洲成人av在线| 精品国产乱码久久久久久蜜柚| 超碰人人草人人| 牛牛电影国产一区二区| 黄色av网址在线观看| 福利在线一区| 人人视频精品| 爽爽淫人综合网网站| 国产精品久久久久久久av| 国产麻豆精品入口在线观看| 亚洲婷婷久久综合| 国产精品成人国产乱| 色一情一乱一伦一区二区三区| 伊人久久综合视频| 日韩在线观看一区| 色婷婷综合久久久久中文一区二区| 国产尤物视频在线观看| 国产精品久久久久久久久电影网| 国产成人av毛片| 你懂的视频网址| www.欧美国产| 成人免费av资源| 免费成人在线视频观看| 十八禁一区二区三区| 特黄视频免费观看| 26uuu精品一区二区在线观看| 亚洲精品在线观看av| 欧美午夜电影一区二区三区| 农村少妇一区二区三区四区五区| 欧美另类z0zxhd电影| www.午夜色| 又爽又黄的午夜网站| 欧美亚洲精品天堂| 亚洲日本护士毛茸茸| 欧美jizzhd69巨大| 亚洲 国产 日韩 综合一区| av综合网址| 九色视频在线观看免费播放| 99精品视频免费版的特色功能| 欧美日韩影院| 正在播放久久| 国产又粗又长又爽又黄的视频| 青少年xxxxx性开放hg| 国产一二区在线| 欧美激情a∨在线视频播放| 久久久久久久久久成人| 麻豆成全视频免费观看在线看| 日韩国产精品毛片| 欧美不卡一区二区三区四区| av福利精品| av在线电影网站| 天天爱天天做天天爽| 黄色小视频免费网站| 青青草超碰在线| www.狠狠| 91精品亚洲| 久久久久久亚洲精品不卡4k岛国| 亚洲影院高清在线| 日韩欧美亚洲视频| 亚洲日本丝袜连裤袜办公室| 麻豆一区区三区四区产品精品蜜桃| 日韩视频精品在线观看| 免费成人在线影院| 色欧美日韩亚洲| 91久久精品国产91久久性色| 免费三级在线观看| 国产亚洲毛片在线| 久久综合九色综合97婷婷| 日韩大片免费观看视频播放| 丝袜亚洲欧美日韩综合| 欧美日韩国产精品一区二区三区| 久久新电视剧免费观看| 国产福利小视频在线观看| 在线日本中文字幕| 男人j进女人j| 国产视频手机在线播放| 成人免费视频77777| 国产在线精品一区二区不卡了| jizzjizz少妇亚洲水多| 韩国视频一区二区|