ListView阻尼效果

2021-09-09 02:31:43 字數 2837 閱讀 2371

效果圖省略。。

activity_main.xml(僅僅有乙個自己定義listview)

mainactivity(arraylistadapter 為了簡化**)

package com.example.dampingdemo;

import android.os.bundle;

import android.widget.arrayadapter;

public class mainactivity extends activity ;

//獲取介面卡

arrayadapteradapter = new arrayadapter(this,android.r.layout.******_list_item_1,data );

//設定介面卡

dampinglistview.setadapter(adapter);

}}

dampinglistview1(第一種方法)

package com.example.dampingdemo;

import android.content.context;

import android.util.attributeset;

import android.util.displaymetrics;

import android.util.log;

import android.view.motionevent;

import android.widget.expandablelistview;

import android.widget.listview;

/** * 1. 在view中新增了oversrollby方法,用於記錄x, y 軸上滾動

2. 在abslistview的ontouchevent中推斷是否到達邊界(頂部 或 底部) ,然後呼叫view.overscrollby ,傳入 mscrolly等引數

3. overscrollby 終於賦值給view的mscrollx, mscrolly 兩個變數

4. 在abslistview中呼叫完overscrollby之後,呼叫invalidate重繪

* */

public class dampinglistview1 extends listview

public dampinglistview1(context context, attributeset attrs)

public dampinglistview1(context context, attributeset attrs, int defstyle)

private void initbouncelistview()

@override

protected boolean overscrollby(int deltax, int deltay, int scrollx,

int scrolly, int scrollrangex, int scrollrangey,

int maxoverscrollx, int maxoverscrolly, boolean istouchevent)

}

+++++++++++++++++++++++++++或者另外一種方法+++++++++++++++++++++++++++++++++++++++

dampinglistview

package com.example.dampingdemo;

import android.content.context;

import android.util.attributeset;

import android.util.log;

import android.view.motionevent;

import android.widget.expandablelistview;

import android.widget.listview;

public class dampinglistview extends listview implements runnable

public dampinglistview(context context, attributeset attrs)

public dampinglistview(context context)

/*** touchevent事件

*/@override

public boolean ontouchevent(motionevent event)

break;

case motionevent.action_cancel:

break;

case motionevent.action_up:

// 手指離開之後觸發

if (mdistance != 0)

// 又一次賦值

mlastdowny = 0f;

mdistance = 0;

break;

case motionevent.action_move: // 手指按下之後滑動觸發

if (mlastdowny != 0f)

}// 置為0。有自己主動滑動的效果

mdistance = 0;

break;

} return super.ontouchevent(event);

} public void run()

mstep += 1;

this.post(this);

}}

Android果凍效果(阻尼動畫)

之前發了乙個drawable實現動畫效果的帖子,有人找我要過相應圓弧繪製演算法,仔細想想那個專案中有些地方還是值得分享出來的,趁現在專案不忙,就準備分享出來。只有一些演算法的東西,不涉及具體業務 效果如下 即activity a 進入 到activity b時會出現的動畫效果如上 主要由兩個動畫組成...

ListView點選效果設定

android focusable true android focusableintouchmode true 以上兩個屬性一起使用有些特別的地方,比如設定 itemview的android focusable true android focusableintouchmode true 可以使i...

ListView彈性下拉效果

效果圖 用什麼實現的?通過屬性動畫和事件分發機制實現的。只分析實現原理和關鍵 1.自定義乙個view繼承listview public class pullseparatelistview extends listview 2.複寫listview的dispatchtouchevent方法 核心 o...