Android自定義實(shí)現(xiàn)可回彈的ScollView
前言
- 仿IOS回彈效果
- 為了增強(qiáng)用戶體驗(yàn),自定義一個(gè)可回彈的ScrollView是一個(gè)不錯(cuò)的選擇,而且這種效果還是很簡(jiǎn)單的
把原來(lái)的ScollView標(biāo)簽替換一下就好了
<?xml version="1.0" encoding="utf-8"?> <com.mycompany.myapp.MyScrollView ? ?xmlns:android="http://schemas.android.com/apk/res/android" ? ?android:layout_height="match_parent" ? ?android:layout_width="match_parent" ? ?android:fillViewport="true"> ? ?<LinearLayout ? ? ? android:layout_height="match_parent" ? ? ? android:layout_width="match_parent" ? ? ? android:gravity="center" ? ? ? android:background="#FFABE346" ? ? ? android:elevation="1dp"> ? ? ? <TextView ? ? ? ? ?android:layout_height="wrap_content" ? ? ? ? ?android:layout_width="wrap_content" ? ? ? ? ?android:text="可回彈的Scollview"/> ? ?</LinearLayout> </com.mycompany.myapp.MyScrollView>
public class MyScrollView extends ScrollView { ? ?private View convertView; ? ?private Rect originalRect=new Rect(); ? ?private int startY,offsetY; ? ?public MyScrollView(Context context) ? ?{ ? ? ? super(context); ? ?} ? ?public MyScrollView(Context context, AttributeSet attrs) ? ?{ ? ? ? super(context, attrs); ? ?} ? ?public MyScrollView(Context context, AttributeSet attrs, int defStyleAttr) ? ?{ ? ? ? super(context, attrs, defStyleAttr); ? ?} ? ?@Override ? ?protected void onFinishInflate() ? ?{ ? ? ? super.onFinishInflate(); ? ? ? //獲取子視圖 ? ? ? convertView = getChildAt(0); ? ?} ? ?@Override ? ?protected void onLayout(boolean changed, int l, int t, int r, int b) ? ?{ ? ? ? super.onLayout(changed, l, t, r, b); ? ? ? //記錄原來(lái)的位置 ? ? ? originalRect.set(l,t,r,b); ? ?} ? ? ? ? ? ?@Override ? ?public boolean dispatchTouchEvent(MotionEvent ev) ? ?{ ? ? ? switch (ev.getAction()) ? ? ? { ? ? ? ? ?case MotionEvent.ACTION_DOWN: ? ? ? ? ? ? { ? ? ? ? ? ? ? ?//記錄第一次的手指觸摸位置 ? ? ? ? ? ? ? ?startY = (int) ev.getY(); ? ? ? ? ? ? } ? ? ? ? ? ? break; ? ? ? ? ?case MotionEvent.ACTION_MOVE: ? ? ? ? ? ? { ? ? ? ? ? ? ? ?//記錄拖動(dòng)時(shí)的手指觸摸位置 ? ? ? ? ? ? ? ?offsetY = ((int) ev.getY()) - startY; ? ? ? ? ? ? ? ?//讓子視圖跟隨手指拖動(dòng) ? ? ? ? ? ? ? ?convertView.layout(originalRect.left,originalRect.top+(int)(offsetY*0.5f) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ,originalRect.right,originalRect.bottom+(int)(offsetY*0.5f)); ? ? ? ? ? ? } ? ? ? ? ? ? break; ? ? ? ? ?case MotionEvent.ACTION_UP: ? ? ? ? ? ? { ? ? ? ? ? ? ? ?//回彈動(dòng)畫 ? ? ? ? ? ? ? ?TranslateAnimation offsetAnim=new TranslateAnimation(0,0,convertView.getTop(),originalRect.top); ? ? ? ? ? ? ? ?offsetAnim.setDuration(200); ? ? ? ? ? ? ? ?convertView.startAnimation(offsetAnim); ? ? ? ? ? ? ? ?//讓子視圖回到原來(lái)的位置 ? ? ? ? ? ? ? ?convertView.layout(originalRect.left,originalRect.top,originalRect.right,originalRect.bottom); ? ? ? ? ? ? } ? ? ? } ? ? ? return super.dispatchTouchEvent(ev); ? ?} }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android基于reclyview實(shí)現(xiàn)列表回彈動(dòng)畫效果
- Android?ScrollView實(shí)現(xiàn)滾動(dòng)超過(guò)邊界松手回彈
- android ScrollView實(shí)現(xiàn)水平滑動(dòng)回彈
- Android實(shí)現(xiàn)背景圖滑動(dòng)變大松開(kāi)回彈效果
- Android實(shí)現(xiàn)橡皮筋回彈和平移縮放效果
- Android自定義View實(shí)現(xiàn)豎向滑動(dòng)回彈效果
- android實(shí)現(xiàn)可上下回彈的scrollview
- Android實(shí)現(xiàn)回彈ScrollView的原理
- Android ScrollView的頂部下拉和底部上拉回彈效果
- android自定義滾動(dòng)上下回彈scollView
相關(guān)文章
使用RecyclerView實(shí)現(xiàn)點(diǎn)贊頭像疊加效果
這篇文章主要為大家詳細(xì)介紹了使用RecyclerView實(shí)現(xiàn)點(diǎn)贊頭像疊加效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08Android詳細(xì)講解谷歌推出的官方二維碼掃描庫(kù)
Google推出的官方二維碼掃描庫(kù)你知道嗎?還不知道就落伍咯!本篇文字帶你了解google二維碼掃描庫(kù)的詳細(xì)情況與使用,還不知道的朋友快來(lái)看看吧2022-03-03Android編程Widget創(chuàng)建與使用方法簡(jiǎn)明教程
這篇文章主要介紹了Android編程Widget創(chuàng)建與使用方法,結(jié)合實(shí)例形式分析了Widget的功能、使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2016-10-10Android模糊處理實(shí)現(xiàn)圖片毛玻璃效果
這篇文章主要介紹了Android模糊處理實(shí)現(xiàn)圖片毛玻璃效果,需要的朋友可以參考下2016-02-02Android 自定義密碼輸入框?qū)崿F(xiàn)代碼
最近做個(gè)項(xiàng)目自定義密碼輸入框功能,下面小編把實(shí)現(xiàn)思路分享到腳本之家平臺(tái),需要的朋友參考下吧2018-03-03Android獲取手機(jī)配置信息具體實(shí)現(xiàn)代碼
下面為大家介紹下使用android獲取手機(jī)配置信息的具體過(guò)程,感興趣的朋友可以參考下哈,希望對(duì)你有所幫助2013-06-06Android 實(shí)現(xiàn)為點(diǎn)擊事件添加震動(dòng)效果
這篇文章主要介紹了Android 實(shí)現(xiàn)為點(diǎn)擊事件添加震動(dòng)效果,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03Android使用Jetpack Compose開(kāi)發(fā)零基礎(chǔ)起步教程
Jetpack Compose是用于構(gòu)建原生Android UI的現(xiàn)代工具包。Jetpack Compose使用更少的代碼,強(qiáng)大的工具和直觀的Kotlin API,簡(jiǎn)化并加速了Android上的UI開(kāi)發(fā)2023-04-04