android開發(fā)仿ios的UIScrollView實例代碼
今天重新裝了編譯器,結(jié)果崩無極限,真是日了狗了了。剛剛才知道問題在哪邊。
好了,說正事,對于ios開發(fā)我沒接觸,不是很了解,百度了半天,差不多就是UIScrollView的把。如果不對,請指證。具體什么效果呢,我剛才拿朋友的iphone手機看了下,iphone的設(shè)置界面,第一個列表往下拉可以繼續(xù)滾,上拉同理。不過android好像沒有自帶的這種情況。
我把這種效果稱為滾無極限的scollview。
下面就來上源碼:
首先,最最最重要的就是判斷當(dāng)前視圖是否為空,你空視圖滾不滾好像沒啥區(qū)別,除了android 5.0的scrollview自帶了那種弧度。好像沒什么軟用~~~
//視圖不為空即可滾動
protected void onFinishInflate() {
if (getChildCount() > 0) {
childview = getChildAt(0);
}
}
這個屬性我也是剛知道沒多久,意思是當(dāng)所有的布局呈現(xiàn)完成之后調(diào)用這個方法。
我這邊附上view常用的方法,你們可以自行研究,有好多方法我也不知道~~~.
自定義 View的常用方法:
onFinishInflate() 當(dāng)View中所有的子控件 均被映射成xml后觸發(fā)
onMeasure(int, int) 確定所有子元素的大小
onLayout(boolean, int, int, int, int) 當(dāng)View分配所有的子元素的大小和位置時觸發(fā)
onSizeChanged(int, int, int, int) 當(dāng)view的大小發(fā)生變化時觸發(fā)
onDraw(Canvas) view渲染內(nèi)容的細(xì)節(jié)
onKeyDown(int, KeyEvent) 有按鍵按下后觸發(fā)
onKeyUp(int, KeyEvent) 有按鍵按下后彈起時觸發(fā)
onTrackballEvent(MotionEvent) 軌跡球事件
onTouchEvent(MotionEvent)觸屏事件
onFocusChanged(boolean, int, Rect) 當(dāng)View獲取 或失去焦點時觸發(fā)
onWindowFocusChanged(boolean) 當(dāng)窗口包含的view獲取或失去焦點時觸發(fā)
onAttachedToWindow() 當(dāng)view被附著到一個窗口時觸發(fā)
onDetachedFromWindow() 當(dāng)view離開附著的窗口時觸發(fā),提示該方法和 onAttachedToWindow() 是相反的。
onWindowVisibilityChanged(int) 當(dāng)窗口中包含的可見的view發(fā)生變化時觸發(fā)
以上是View實現(xiàn)的一些基本接口的回調(diào)方法,一般我們需要處理畫布的顯示時,重寫onDraw(Canvas)用的的是最多的。
接下來就是ontouch事件來判斷位移和回彈的效果啦:
if (childview != null) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_UP:
//判斷是否需要動畫
if (!normal.isEmpty()) {
animation();
isCount = false;
}
break;
case MotionEvent.ACTION_MOVE:
final float DownY = startY;
float moveY = event.getY();
int distance = (int) (DownY - moveY);
if (!isCount) {
distance = 0; // 在這里要歸0.
}
startY = moveY;
if (isNeedMove()) {
//頂部
if (normal.isEmpty()) {
normal.set(childview.getLeft(), childview.getTop(),
childview.getRight(), childview.getBottom());
}
//底部
childview.layout(childview.getLeft(), childview.getTop() - distance / 2,
childview.getRight(), childview.getBottom() - distance / 2);
}
isCount = true;
break;
}
后面就是判斷是否需要滾動和回彈的動畫效果了。
public void animation() {
// 開啟移動動畫
TranslateAnimation animation = new TranslateAnimation(0, 0, childview.getTop(),
normal.top);
animation.setDuration(200);
childview.startAnimation(animation);
// 設(shè)置回到正常的布局位置
childview.layout(normal.left, normal.top, normal.right, normal.bottom);
normal.setEmpty();
}
public boolean isNeedMove() {
int offset = childview.getHeight() - getHeight();
int scrollY = getScrollY();
// 0是頂部,后面那個是底部
if (scrollY == 0 || scrollY == offset) {
return true;
}
return false;
}
好了,一個滾,滾,滾,滾無極限的scrollview就誕生了。其實我感覺這個實用性不是很大,看個人需求了。其實也是蠻好玩的~
以上這篇android開發(fā)仿ios的UIScrollView實例代碼就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- Android高級UI特效仿直播點贊動畫效果
- Android 仿抖音的評論列表的UI和效果的實現(xiàn)代碼
- Android UI新組件學(xué)習(xí)和使用
- Android MIUI通知類短信權(quán)限的坑
- Android UI 中的 ListView列表控件的示例
- 淺談Android RecyclerView UI的滾動控件示例
- Android Build Variants 為項目設(shè)置變種版本的方法
- Android編程設(shè)計模式之Builder模式實例詳解
- Android UI控件之ImageSwitcher實現(xiàn)圖片切換效果
- Android UI控件之Gallery實現(xiàn)拖動式圖片瀏覽效果
- Android UI控件之ListView實現(xiàn)圓角效果
- Android UI控件之ProgressBar進(jìn)度條
- Android UI控件之Spinner下拉列表效果
- Android利用Espresso進(jìn)行UI自動化測試的方法詳解
- Android編程處理窗口控件大小,形狀,像素等UI元素工具類
- Android build文件的刪除的方法
- android studio 一直卡在Gradle:Build Running的幾種解決辦法
- 25個實用酷炫的Android開源UI框架
相關(guān)文章
Android自定義View實現(xiàn)九宮格圖形解鎖(Kotlin版)
這篇文章主要為大家詳細(xì)介紹了Android自定義View實現(xiàn)九宮格圖形解鎖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09
RecyclerView實現(xiàn)仿支付寶應(yīng)用管理
這篇文章主要為大家詳細(xì)介紹了RecyclerView實現(xiàn)仿支付寶應(yīng)用管理的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-04-04
Android開發(fā)中自定義ProgressBar控件的方法示例
這篇文章主要介紹了Android開發(fā)中自定義ProgressBar控件的方法,結(jié)合實例形式分析了自定義ProgressBar控件的定義與使用方法,需要的朋友可以參考下2017-10-10
Android ListView之setEmptyView正確使用方法
這篇文章主要介紹了Android ListView之setEmptyView正確使用方法的相關(guān)資料,希望通過本文能幫助到大家使用該方法,需要的朋友可以參考下2017-09-09
android 通過MediaRecorder實現(xiàn)簡單的錄音示例
本篇文章中主要介紹了android 通過MediaRecorder實現(xiàn)簡單的錄音示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-02-02
Android Kotlin開發(fā)實例(Hello World!)及語法詳解
這篇文章主要介紹了Android Kotlin開發(fā)實例及語法詳解的相關(guān)資料,需要的朋友可以參考下2017-05-05
Android利用ContentProvider讀取短信內(nèi)容
這篇文章主要為大家詳細(xì)介紹了Android利用ContentProvider讀取短信內(nèi)容,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11

