亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2018年05月15日 11:12:41   作者:meetings  
這篇文章主要介紹了Android中View跟隨手指滑動效果的實例代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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

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

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

2、實現效果圖

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

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()

 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 改變布局參數的方法:

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平滑的移動

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(); 
 } 
}

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

相關文章

  • Android BottomSheet實現可拉伸控件

    Android BottomSheet實現可拉伸控件

    這篇文章主要為大家詳細介紹了Android BottomSheet實現可拉伸控件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Android錄音并且輸出為Mp4文件的方法教程

    Android錄音并且輸出為Mp4文件的方法教程

    這篇文章主要給大家介紹了關于Android錄音并且輸出為Mp4文件的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-08-08
  • Android開發(fā)中的幾種網絡請求方式詳解

    Android開發(fā)中的幾種網絡請求方式詳解

    本篇文章主要包括Android中的幾種網絡請求方式詳解,具有一定的參考價值,有需要的可以了解一下。
    2016-11-11
  • Kotlin基礎學習之循環(huán)和異常

    Kotlin基礎學習之循環(huán)和異常

    最近在學習kotlin,Kotlin 是一個基于 JVM 的新的編程語言,下面這篇文章主要給大家介紹了關于Kotlin基礎學習之循環(huán)和異常的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-12-12
  • Google 開發(fā)Android MVP架構Demo深入解析

    Google 開發(fā)Android MVP架構Demo深入解析

    這篇文章主要為大家介紹了Google 開發(fā)Android MVP架構Demo深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • 非常好看的android音量旋鈕

    非常好看的android音量旋鈕

    這篇文章主要為大家詳細介紹了android好看的音量旋鈕,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • Android自定義鍵盤的實現(數字鍵盤和字母鍵盤)

    Android自定義鍵盤的實現(數字鍵盤和字母鍵盤)

    本篇文章主要介紹了Android自定義鍵盤的實現(數字鍵盤和字母鍵盤),具有一定的參考價值,有興趣的可以了解一下
    2017-08-08
  • Android 添加系統(tǒng)服務的方法詳解

    Android 添加系統(tǒng)服務的方法詳解

    這篇文章主要介紹了Android 添加系統(tǒng)服務的方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • Android創(chuàng)建Menu菜單實例

    Android創(chuàng)建Menu菜單實例

    這篇文章主要介紹了Android創(chuàng)建Menu菜單實例,講述了Android菜單項的創(chuàng)建方法,在Android應用程序開發(fā)中非常具有實用價值,需要的朋友可以參考下
    2014-10-10
  • Android AES加密工具類分享

    Android AES加密工具類分享

    這篇文章主要介紹了Android AES加密工具類分享,本文給出了實現代碼和使用例子,本文使用PKCS5Padding加密方式實現,需要的朋友可以參考下
    2014-10-10

最新評論