一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Android - Android下拉刷新上拉加載更多左滑動刪除

Android下拉刷新上拉加載更多左滑動刪除

2021-05-07 16:052CTO Android

本文給大家分享一段代碼實現Android下拉刷新上拉加載更多仿ios左滑動刪除item,非常實用,代碼簡單易懂,特此分享腳本之家平臺供大家學習

一、前言

老規矩,別的不說,這demo是找了很相關知識集合而成的,可以說對我這種小白來說是絞盡腦汁!程序員講的是無圖無真相!

現在大家一睹為快!

Android下拉刷新上拉加載更多左滑動刪除

Android下拉刷新上拉加載更多左滑動刪除

二、比較關鍵的還是scroller這個類的

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
package com.icq.slideview.view;
import android.content.context;
import android.util.attributeset;
import android.util.log;
import android.util.typedvalue;
import android.view.motionevent;
import android.view.view;
import android.widget.linearlayout;
import android.widget.relativelayout;
import android.widget.scroller;
import android.widget.textview;
import com.icq.slideview.r;
public class slideview extends linearlayout {
private static final string tag = slideview;
private context mcontext;
private linearlayout mviewcontent;
private relativelayout mholder;
private scroller mscroller;
private onslidelistener monslidelistener;
private int mholderwidth = 120;
private int mlastx = 0;
private int mlasty = 0;
private static final int tan = 2;
public interface onslidelistener {
public static final int slide_status_off = 0;
public static final int slide_status_start_scroll = 1;
public static final int slide_status_on = 2;
/**
* @param view current slideview
* @param status slide_status_on or slide_status_off
*/
public void onslide(view view, int status);
}
public slideview(context context) {
super(context);
initview();
}
public slideview(context context, attributeset attrs) {
super(context, attrs);
initview();
}
private void initview() {
mcontext = getcontext();
mscroller = new scroller(mcontext);
setorientation(linearlayout.horizontal);
view.inflate(mcontext, r.layout.slide_view_merge, this);
mviewcontent = (linearlayout) findviewbyid(r.id.view_content);
mholderwidth = math.round(typedvalue.applydimension(
typedvalue.complex_unit_dip, mholderwidth, getresources()
.getdisplaymetrics()));
}
public void setbuttontext(charsequence text) {
((textview)findviewbyid(r.id.delete)).settext(text);
}
public void setcontentview(view view) {
mviewcontent.addview(view);
}
public void setonslidelistener(onslidelistener onslidelistener) {
monslidelistener = onslidelistener;
}
public void shrink() {
if (getscrollx() != 0) {
this.smoothscrollto(0, 0);
}
}
public void onrequiretouchevent(motionevent event) {
int x = (int) event.getx();
int y = (int) event.gety();
int scrollx = getscrollx();
log.d(tag, x= + x + y= + y);
switch (event.getaction()) {
case motionevent.action_down: {
int deltax = x - mlastx;
system.out.println(按下偏移+deltax);
if (!mscroller.isfinished()) {
mscroller.abortanimation();
}
if (monslidelistener != null) {
monslidelistener.onslide(this,
onslidelistener.slide_status_start_scroll);
}
break;
}
case motionevent.action_move: {
int deltax = x - mlastx;
int deltay = y - mlasty;
system.out.println(偏移+deltax);
if (math.abs(deltax) < math.abs(deltay) * tan) {
break;
}
int newscrollx = scrollx - deltax;
if (deltax != 0) {
if (newscrollx < 0) {
newscrollx = 0;
} else if (newscrollx > mholderwidth) {
newscrollx = mholderwidth;
}
this.scrollto(newscrollx, 0);
}
break;
}
case motionevent.action_up: {
int newscrollx = 0;
if (scrollx - mholderwidth * 0.75 > 0) {
newscrollx = mholderwidth;
}
this.smoothscrollto(newscrollx, 0);
if (monslidelistener != null) {
monslidelistener.onslide(this,
newscrollx == 0 ? onslidelistener.slide_status_off
: onslidelistener.slide_status_on);
}
break;
}
default:
break;
}
mlastx = x;
mlasty = y;
}
private void smoothscrollto(int destx, int desty) {
// 緩慢滾動到指定位置
int scrollx = getscrollx();
int delta = destx - scrollx;
system.out.println(偏移scrollx+scrollx);
system.out.println(偏移差delta+delta);
int a= math.abs(delta) * 3;
system.out.println(什么意思+a);
mscroller.startscroll(scrollx, 0, delta, 0, math.abs(delta) * 3);
invalidate();
}
@override
public void computescroll() {
if (mscroller.computescrolloffset()) {
system.out.println(當前x位置:+mscroller.getcurrx());
system.out.println(當前y位置:+mscroller.getcurry());
scrollto(mscroller.getcurrx(), mscroller.getcurry());
postinvalidate();
}
}
}

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 男人搡女人视频免费看 | 999久久免费高清热精品 | 亚洲第五色综合网啪啪 | 久久精品国产免费 | 国模孕妇季玥全部人体写真 | 娇妻被健身教练挺进小说阅读 | 欧美一级高清免费a | 草莓污污| 国产91一区二区在线播放不卡 | 亚洲精品国偷拍自产在线观看蜜臀 | 春意影院午夜爽爽爽免费 | 国产一级黄毛片 | 99精品热线在线观看免费视频 | 国产一区二区三区福利 | 99爱在线观看精品视频 | 国产高清一区二区三区免费视频 | 亚洲第一区二区快射影院 | 天仙tv微福视频 | 免费十几分视频 | 久久精品黄AA片一区二区三区 | 精品一区二区三区五区六区七区 | 日本国产成人精品视频 | bt天堂在线最新版在线 | 亚洲AV久久无码精品九号 | 国产成人 免费观看 | 千金肉奴隶在线观看 | 亚洲狼人香蕉香蕉在线28 | 精品国偷自产在线 | 女生被爆操| yy6080久久国产伦理 | 女子校生下媚药在线观看 | 亚洲男人天堂2023 | 亚洲国产精品第一页 | 日韩欧美中文字幕一区二区三区 | 亚洲视频免费 | 国产一区二区三区在线观看视频 | 成人精品mv视频在线观看 | 国产成人在线播放 | 婷婷色天使在线视频观看 | 欧美性色黄大片四虎影视 | 日本乱中文字幕系列在线观看 |