Android側拉框的簡單實現

2021-06-21 05:27:14 字數 2906 閱讀 8509

上班第一天,上司讓寫乙個簡單的側拉框,總結下,以後借鑑,具體**如下

介面很簡單

具體**實現

public class mainactivity extends activity implements ontouchlistener,

onitemclicklistener , new int );

menu_list.setadapter(adapter);

menu_list.setonitemclicklistener(this);

}private arraylist getdata()

return list;

}private void initvalues()

@override

public boolean ontouch(view v, motionevent event) else

if (menuparams.leftmargin < leftedge) else if (menuparams.leftmargin > rightedge)

menu.setlayoutparams(menuparams);

break;

case motionevent.action_up:

// 手指抬起時

xup = event.getrawx();

if (wanttoshowmenu()) else

} else if (wanttoshowcontent()) else

}recyclevelocitytracker();

break;

}return true;

}/**

* **velocitytracker物件。

*/private void recyclevelocitytracker()

/*** 將螢幕滾動到menu介面,滾動速度設定為30.

*/private void scrolltomenu()

/*** 將螢幕滾動到content介面,滾動速度設定為-30.

*/private void scrolltocontent()

/*** 判斷當前手勢的意圖是不是想顯示content。如果手指移動的距離是負數,且當前menu是可見的,則認為當前手勢是想要顯示content。

* * @return 當前手勢想顯示content返回true,否則返回false。

*/private boolean wanttoshowcontent()

/*** 判斷當前手勢的意圖是不是想顯示menu。如果手指移動的距離是正數,且當前menu是不可見的,則認為當前手勢是想要顯示menu。

* * @return 當前手勢想顯示menu返回true,否則返回false。

*/private boolean wanttoshowmenu()

/*** 判斷是否應該滾動將menu展示出來。如果手指移動距離大於螢幕的1/2,或者手指移動速度大於snap_velocity,

* 就認為應該滾動將menu展示出來。

* * @return 如果應該滾動將menu展示出來返回true,否則返回false。

*/private boolean shouldscrolltomenu()

/*** 判斷是否應該滾動將content展示出來。如果手指移動距離加上menupadding大於螢幕的1/2,

* 或者手指移動速度大於snap_velocity, 就認為應該滾動將content展示出來。

* * @return 如果應該滾動將content展示出來返回true,否則返回false。

*/private boolean shouldscrolltocontent()

/*** 獲取手指在content介面滑動的速度。

* * @return 滑動速度,以每秒鐘移動了多少畫素值為單位。

*/private int getscrollvelocity()

/*** 建立velocitytracker物件,並將觸控content介面的滑動事件加入到velocitytracker當中。

* * @param event

*            content介面的滑動事件

*/private void createvelocitytracker(motionevent event)

mvelocitytracker.addmovement(event);

}class scrolltask extends asynctask

if (leftmargin < leftedge)

publishprogress(leftmargin);

// 為了要有滾動效果產生,每次迴圈使執行緒睡眠20毫秒,這樣肉眼才能夠看到滾動動畫。

sleep(20);

}if (speed[0] > 0) else

return leftmargin;

}@override

protected void onprogressupdate(integer... leftmargin)

@override

protected void onpostexecute(integer leftmargin)

}/**

* 使當前執行緒睡眠指定的毫秒數。

* * @param millis

*            指定當前執行緒睡眠多久,以毫秒為單位

*/private void sleep(long millis) catch (interruptedexception e)

}@override

public void onitemclick(adapterview<?> parent, view view, int position,

long id)

}再重新回顧一遍才發現,其實很多東西都沒想象的那麼難

RecycleView的側拉索引

依賴 compile com.android.support recyclerview v7 23.1.1 compile ca.barrenechea.header decor header decor 0.2.6 support v7.widget recyclerview android id...

SlidingMenu側滑簡單實現

建立乙個空的xml布局檔案,布局裡用framelayout給framelayout乙個id id是 紅色字型部分 新增空的布局是黃色字型部分 framelayoutxmlns android android id id menu frame android layout width match pa...

Android選單側滑特效實現

人人客戶端有乙個特效還是挺吸引人的,在主介面手指向右滑動,就可以將選單展示出來,而主介面會被隱藏大部分,但是仍有左側的一小部分同選單一起展示。在乙個activity的布局中需要有兩部分,乙個是選單 menu 的布局,乙個是內容 content 的布局。兩個布局橫向排列,選單布局在左,內容布局在右。初...