激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

服務器之家 - 編程語言 - Android - Android中View跟隨手指滑動效果的實例代碼

Android中View跟隨手指滑動效果的實例代碼

2022-02-21 15:44meetings Android

這篇文章主要介紹了Android中View跟隨手指滑動效果的實例代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

本文講述了Android中View跟隨手指滑動效果的實例代碼。分享給大家供大家參考,具體如下:

1、android View 主要6種滑動方法,分別是

  • layout()
  • offsetLeftAndRight()和offsetTopAndBottom()
  • LayoutParams
  • scrollBy()和 scrollTo()
  • Scroller
  • 動畫

2、實現效果圖

Android中View跟隨手指滑動效果的實例代碼

3、自定義中使用layout()方法實習view的滑動

?
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
public class MoveView extends View {
 private int lastX, lastY;
 public MoveView(Context context, @Nullable AttributeSet attrs) {
 super(context, attrs);
 }
 public MoveView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
 super(context, attrs, defStyleAttr);
 }
 public MoveView(Context context) {
 super(context);
 }
 public boolean onTouchEvent(MotionEvent event) {
 int x = (int) event.getX();
 int y = (int) event.getY();
 switch (event.getAction()) {
 case MotionEvent.ACTION_DOWN:
 lastX = x;
 lastY = y;
 break;
 case MotionEvent.ACTION_MOVE:
 int offsetX = x - lastX;//計算滑動的距離
 int offsetY = y - lastY;
 //重新放置新的位置
 layout(getLeft() + offsetX, getTop() + offsetY, getRight() + offsetX, getBottom() + offsetY);
 }
 return true;
 }
}

2、offsetLeftAndRight()和offsetTopAndBottom()

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public boolean onTouchEvent(MotionEvent event) {
 int x = (int) event.getX();
 int y = (int) event.getY();
 switch (event.getAction()) {
 case MotionEvent.ACTION_DOWN:
 lastX = x;
 lastY = y;
 break;
 case MotionEvent.ACTION_MOVE:
 int offsetX = x - lastX;//計算滑動的距離
 int offsetY = y - lastY;
 //重新放置新的位置
// layout(getLeft() + offsetX, getTop() + offsetY, getRight() + offsetX, getBottom() + offsetY);
 offsetLeftAndRight(offsetX);
 offsetTopAndBottom(offsetY);
 }
 return true;
 }

3、LayoutParams 改變布局參數的方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public boolean onTouchEvent(MotionEvent event) {
 int x = (int) event.getX();
 int y = (int) event.getY();
 switch (event.getAction()) {
 case MotionEvent.ACTION_DOWN:
 lastX = x;
 lastY = y;
 break;
 case MotionEvent.ACTION_MOVE:
 int offsetX = x - lastX;//計算滑動的距離
 int offsetY = y - lastY;
 //重新放置新的位置
// layout(getLeft() + offsetX, getTop() + offsetY, getRight() + offsetX, getBottom() + offsetY);
// offsetLeftAndRight(offsetX);
// offsetTopAndBottom(offsetY);
 LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) getLayoutParams();
 layoutParams.leftMargin = getLeft()+offsetX;
 layoutParams.topMargin = getTop() +offsetY;
 setLayoutParams(layoutParams);
 }
 return true;
 }

4、當然使用動畫 ,scrollBy()和 scrollTo()也可以使view滑動,不足的是使用scrollBy()和 scrollTo()滑動時,是瞬間完成的,用戶體驗不太好。

5、Scroller和 View的computeScroll() 結合使用,實現view平滑的移動

?
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
public class MoveView extends View {
 private Scroller mScroller;
 public MoveView(Context context, @Nullable AttributeSet attrs) {
 super(context, attrs);
 mScroller = new Scroller(context);
 }
 public MoveView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
 super(context, attrs, defStyleAttr);
 }
 public MoveView(Context context) {
 super(context);
 }
 //重寫computeScroll方法
 @Override
 public void computeScroll() { //view在onDraw的時候會調用此方法
 super.computeScroll();
 if (mScroller.computeScrollOffset()) {
 ((View) getParent()).scrollTo(mScroller.getCurrX(), mScroller.getCurrY());
 invalidate();
 }
 }
 //在外部調用這個方法即可
 public void smoothScrollTo(int destX, int destY) {
 int scrollX = getScrollX();
 int delta = destX - scrollX;
 mScroller.startScroll(scrollX, 0, delta,0 ,6000);
 invalidate();
 }
}

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:https://blog.csdn.net/meetings/article/details/79390275

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久精品国产亚洲7777小说 | 香蕉视频1024 | 爱高潮www亚洲精品 国产一区二区三区视频免费 | 91福利免费观看 | 国产三级影院 | qyl在线视频精品免费观看 | 国产精品99久久久久久宅女 | 欧美黄 片免费观看 | 色中色综合网 | 18视频在线观看娇喘 | 久久色伦理资源站 | 国产99久久精品一区二区 | 欧美黄色一级带 | 欧美一区二区三区四区五区动图 | free性欧美hd另类 | 久久精品二区 | 色视频在线观看 | 中文字幕在线不卡视频 | 亚洲日本欧美 | 综合日韩av| 欧美日韩免费一区 | 精品一区久久久 | 成人毛片在线免费观看 | 日韩视频一 | 俄罗斯16一20sex牲色另类 | 国产精品美女一区二区 | av免费在线播放网址 | 黄色免费网站在线观看 | 中文字幕网址 | 精品久久久久久久久久久下田 | 中文字幕在线观看精品 | 欧美性猛交xxx乱大交3蜜桃 | 一区二区三区四区高清视频 | 毛片大全在线观看 | 成人精品免费在线观看 | 亚洲电影在线观看高清免费 | 成人羞羞国产免费游戏 | 日韩毛片在线看 | 亚洲白嫩在线观看 | 极品一级片 | 妇女毛片 |