最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

2、實現(xiàn)效果圖

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

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() 結(jié)合使用,實現(xiàn)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的時候會調(diào)用此方法 
 super.computeScroll(); 
 if (mScroller.computeScrollOffset()) { 
 ((View) getParent()).scrollTo(mScroller.getCurrX(), mScroller.getCurrY()); 
 invalidate(); 
 } 
 } 
 //在外部調(diào)用這個方法即可 
 public void smoothScrollTo(int destX, int destY) { 
 int scrollX = getScrollX(); 
 int delta = destX - scrollX; 
 mScroller.startScroll(scrollX, 0, delta,0 ,6000); 
 invalidate(); 
 } 
}

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

相關(guān)文章

  • Android使用注解代替枚舉節(jié)省系統(tǒng)內(nèi)存開銷的方法

    Android使用注解代替枚舉節(jié)省系統(tǒng)內(nèi)存開銷的方法

    在本篇文章里小編給大家整理的是關(guān)于Android使用注解代替枚舉節(jié)省系統(tǒng)內(nèi)存開銷的方法和實例,需要的朋友們參考下。
    2020-01-01
  • Android音頻錄制MediaRecorder之簡易的錄音軟件實現(xiàn)代碼

    Android音頻錄制MediaRecorder之簡易的錄音軟件實現(xiàn)代碼

    這篇文章主要介紹了Android音頻錄制MediaRecorder之簡易的錄音軟件實現(xiàn)代碼,有需要的朋友可以參考一下
    2014-01-01
  • 解決Android studio模擬器啟動失敗的問題

    解決Android studio模擬器啟動失敗的問題

    這篇文章主要介紹了Android studio模擬器啟動失敗的問題及解決方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • RecyclerView的萬能分割線

    RecyclerView的萬能分割線

    RecyclerView 是Android L版本中新添加的一個用來取代ListView的SDK,它的靈活性與可替代性比listview更好。本文重點給大家介紹RecyclerView的萬能分割線的知識,非常不錯,感興趣的朋友一起看下吧
    2016-07-07
  • Flutter實現(xiàn)笑嘻嘻的動態(tài)表情的示例代碼

    Flutter實現(xiàn)笑嘻嘻的動態(tài)表情的示例代碼

    這篇文章主要為大家介紹了如何利用Flutter實現(xiàn)笑嘻嘻的動態(tài)表情,文中的示例代碼講解詳細,對我們學習Flutter有一定幫助,感興趣的可以了解一下
    2022-04-04
  • Android中post和get的提交方式【三種】

    Android中post和get的提交方式【三種】

    本文主要對Android中三種POST和GET的提交方式進行詳細介紹。通過任何一種方式可以實現(xiàn)的功能是,從安卓手機端提交數(shù)據(jù)到服務器端,服務器端進行判斷,并返回相應的結(jié)果。三種方式各有利弊,實現(xiàn)效果相同,在實際的使用過程中可以根據(jù)本身的需要進行選擇。
    2016-12-12
  • Android開發(fā)使用Drawable繪制圓角與圓形圖案功能示例

    Android開發(fā)使用Drawable繪制圓角與圓形圖案功能示例

    這篇文章主要介紹了Android開發(fā)使用Drawable繪制圓角與圓形圖案功能,結(jié)合具體實例形式分析了Drawable繪制圓角矩形的實現(xiàn)步驟與使用方法,需要的朋友可以參考下
    2017-10-10
  • Android自定義View的一些獨家技巧

    Android自定義View的一些獨家技巧

    很多人把自定義View想得復雜了,以為有多高深,主要還是沒有實踐過,下面這篇文章主要給大家介紹了關(guān)于Android自定義View的一些獨家技巧,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-06-06
  • Android常用的圖片加載庫

    Android常用的圖片加載庫

    本文主要介紹了Android常用的圖片加載庫的相關(guān)資料。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-04-04
  • Flutter Android端啟動白屏問題的解決

    Flutter Android端啟動白屏問題的解決

    Flutter 應用在 Android 端上啟動時會有一段很明顯的白屏現(xiàn)象,白屏的時長由設(shè)備的性能決定,設(shè)備性能越差,白屏時間越長。這篇文章主要介紹了Flutter Android端啟動白屏問題的解決。感興趣的小伙伴們可以參考一下
    2018-07-07

最新評論

韩城市| 建平县| 沾化县| 宁明县| 阿拉尔市| 泗洪县| 乌什县| 美姑县| 阜阳市| 达孜县| 达尔| 曲松县| 大渡口区| 五寨县| 肇源县| 绥滨县| 哈巴河县| 石台县| 锦州市| 汤原县| 澜沧| 镇巴县| 太仓市| 东宁县| 普洱| 仁化县| 澄江县| 胶州市| 河间市| 临桂县| 保康县| 东至县| 上林县| 达尔| 靖江市| 布拖县| 南皮县| 新干县| 阆中市| 墨脱县| 章丘市|