具有弹性效果的ListView
生活随笔
收集整理的這篇文章主要介紹了
具有弹性效果的ListView
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Android默認的ListView在滾動到頂端或底端,沒有很好的提示,下面通過源碼來實現彈性效果。
ListView中有一個控制滑動到邊緣的處理方法:
protected boolean overScrollBy(int deltaX, int deltaY,int scrollX, int scrollY,int scrollRangeX, int scrollRangeY,int maxOverScrollX, int maxOverScrollY,boolean isTouchEvent)
?
其中參數maxOverScrollX---Numbers of piexls to overscroll by in either direction along the Y axis.默認為0,修改這個數值就可以實現滑動到頂端的彈性效果。
?
//為滿足多分辨率的需求,通過屏幕的density來計算maxOverScrollY的具體DisplayMetrics metrics = mContext.getResources().getDisplayMetrics();float density = metrics.density;mMaxOverDistance = (int) (density * mMaxOverDistance);
完整的工程
FlexibleListView.java
package sunny.example.ahfourflexiblelistviewtest;import android.annotation.SuppressLint; import android.content.Context; import android.util.AttributeSet; import android.util.DisplayMetrics; import android.widget.ListView;@SuppressLint("NewApi") public class FlexibleListView extends ListView {private static int mMaxOverDistance = 50;//將滑動距離改為50,默認為0,無彈性效果private Context mContext;public FlexibleListView(Context context, AttributeSet attrs,int defStyleAttr) {super(context, attrs, defStyleAttr);this.mContext = context;initView();}public FlexibleListView(Context context, AttributeSet attrs) {super(context, attrs);this.mContext = context;initView();}public FlexibleListView(Context context) {super(context);this.mContext = context;initView();}private void initView() {//為滿足多分辨率的需求,通過屏幕的density來計算maxOverScrollY的具體DisplayMetrics metrics = mContext.getResources().getDisplayMetrics();float density = metrics.density;mMaxOverDistance = (int) (density * mMaxOverDistance);}@Overrideprotected boolean overScrollBy(int deltaX, int deltaY,int scrollX, int scrollY,int scrollRangeX, int scrollRangeY,int maxOverScrollX, int maxOverScrollY,boolean isTouchEvent) {return super.overScrollBy(deltaX, deltaY,scrollX, scrollY,scrollRangeX, scrollRangeY,maxOverScrollX, mMaxOverDistance,isTouchEvent);} }?
FlexibleListViewTest.java
?
package sunny.example.ahfourflexiblelistviewtest; //具有彈性的ListView import android.app.Activity; import android.os.Bundle; import android.widget.ArrayAdapter;public class FlexibleListViewTest extends Activity {private FlexibleListView mFlexibleListView;private String[] data = new String[30];@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.flexible);for (int i = 0; i < 30; i++) {data[i] = "" + i;}mFlexibleListView = (FlexibleListView) findViewById(R.id.flexible_listview);mFlexibleListView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data));} }?
flexible.xml
<?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"><sunny.example.ahfourflexiblelistviewtest.FlexibleListViewandroid:id="@+id/flexible_listview"android:layout_width="match_parent"android:layout_height="match_parent" /> </LinearLayout> 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的具有弹性效果的ListView的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 邮件系统协议(linux 邮
- 下一篇: 电脑还原Mac地址