-
內(nèi)容區(qū)域由于按中心方向開(kāi)始變小,所以會(huì)導(dǎo)致向右移動(dòng)時(shí),左邊到屏幕右方的距離看起來(lái)也變小了,如圖所示 解決方法:為內(nèi)容區(qū)域的縮放設(shè)置縮放中心點(diǎn)為 左側(cè)查看全部
-
已完成部分和QQ的區(qū)別如截圖所示:查看全部
-
區(qū)別實(shí)現(xiàn)查看全部
-
目前實(shí)現(xiàn)的菜單和QQ側(cè)滑菜單的區(qū)別如截圖查看全部
-
-------------------------------------------------- 0px mMenuWidth menu默認(rèn)從左向右的偏移量, 即當(dāng)偏移量為整體寬度時(shí),它是完全隱藏的 100px mMenuWidth-100 拉出來(lái)100像素時(shí),讓其偏移量變?yōu)閙MenuWidth-100 200px mMenuWidth-200 拉出來(lái)200像素時(shí),讓其偏移量變?yōu)閙MenuWidth-200 屬性動(dòng)畫(huà): TranslationX getScrollX: mMenuWidth ~ 0 此值和TranslationX(即以上提到的偏移量)變化是一致的 調(diào)用動(dòng)畫(huà)時(shí)機(jī) ACTION_MOVE查看全部
-
自定義屬性注意事項(xiàng): 見(jiàn)截圖查看全部
-
1)將dp轉(zhuǎn)化成像素值px 2)獲取屏幕寬度 3)onMeasure 決定自己和自己內(nèi)部子View的寬和高 計(jì)算出自己內(nèi)部子View的寬度如下: a) menu寬度為屏幕寬度-menu和屏幕右側(cè)的距離 b) content寬度為屏幕寬度 注意onMeasure不要多次調(diào)用 onMeasure中由于LinearLayout中只有一個(gè)Menu和一個(gè)content,而這兩個(gè)的寬度已經(jīng)顯示指定,所以view自己的寬度就相當(dāng)于是這兩個(gè)寬度之和也被指定了,因此不需要再次設(shè)定自己的寬 4)onLayout 通過(guò)設(shè)置偏移量,將menu隱藏 this.scrollTo(mMenuWidth, 0); //scrollTo是瞬間隱藏,沒(méi)有動(dòng)畫(huà)效果 5)onTouchEvent getScrollX(); //隱藏在左邊的寬度查看全部
-
自定義ViewGroup的主要步驟查看全部
-
未使用自定義屬性時(shí),調(diào)用兩個(gè)參數(shù)的構(gòu)造方法查看全部
-
一般的側(cè)滑的實(shí)現(xiàn) 使用ViewGroup,左邊Menu+ 右邊Content 監(jiān)聽(tīng)onTouchEvent 在Move過(guò)程中:不斷改變ViewGroup的leftMargin,造成不斷擠出來(lái)的感覺(jué) UP:根據(jù)菜單的寬度,決定將其隱藏或者顯示; 具有動(dòng)畫(huà)效果 1)Scrolller實(shí)現(xiàn)動(dòng)畫(huà)效果 2)LeftMargin + Thread 還要注意處理滑動(dòng)沖突 今天使用HorizontalScrollView 初始情況 ScollView中使用LinearLayout:Menu + Content,設(shè)置一個(gè)偏移量,將Menu進(jìn)行隱藏在左邊 這樣省去了Move過(guò)程的處理,也省去了滑動(dòng)沖突的處理查看全部
-
1-3節(jié) 處理邏輯小改一下,要定義MENU是否顯示的布爾量,和張同學(xué)類(lèi)似 public boolean onTouchEvent(MotionEvent ev) { int action = ev.getAction(); switch (action) { case MotionEvent.ACTION_UP: int scrollX = getScrollX(); if (!isMenuShowed) { //菜單未顯示 if (scrollX <= mMenuWidth / 5 * 4) { this.smoothScrollTo(0, 0); isMenuShowed = true; } else { //彈回 this.smoothScrollTo(mMenuWidth, 0); } return true; }else{ //==if (isMenuShowed) 菜單已經(jīng)顯示 if (scrollX >= mMenuWidth / 5 * 1) { //將菜單進(jìn)行隱藏 this.smoothScrollTo(mMenuWidth, 0); isMenuShowed = false; } else { //彈回 this.smoothScrollTo(0, 0); } return true; } } //其他動(dòng)作的處理 return super.onTouchEvent(ev); }查看全部
-
cehua查看全部
-
隱藏包名 requestWindowFeature(Window.FEATURE_NO_TITLE);查看全部
-
一般側(cè)滑實(shí)現(xiàn)思路 (而本次使用HorizonntailScrollView完全實(shí)現(xiàn)了滾動(dòng)沖突的處理,在里面可以放置ListView)查看全部
-
側(cè)滑的實(shí)現(xiàn)查看全部
舉報(bào)
0/150
提交
取消