這篇文章主要為大家展示了“android如何實(shí)現(xiàn)ios的UIScrollView”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“android如何實(shí)現(xiàn)ios的UIScrollView”這篇文章吧。
公司主營(yíng)業(yè)務(wù):做網(wǎng)站、網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)推出烏魯木齊免費(fèi)做網(wǎng)站回饋大家。
首先,最最最重要的就是判斷當(dāng)前視圖是否為空,你空視圖滾不滾好像沒啥區(qū)別,除了android 5.0的scrollview自帶了那種弧度。好像沒什么軟用~~~
//視圖不為空即可滾動(dòng) protected void onFinishInflate() { if (getChildCount() > 0) { childview = getChildAt(0); } }
這個(gè)屬性我也是剛知道沒多久,意思是當(dāng)所有的布局呈現(xiàn)完成之后調(diào)用這個(gè)方法。
我這邊附上view常用的方法,你們可以自行研究,有好多方法我也不知道~~~.
自定義 View的常用方法:
onFinishInflate() 當(dāng)View中所有的子控件 均被映射成xml后觸發(fā)
onMeasure(int, int) 確定所有子元素的大小
onLayout(boolean, int, int, int, int) 當(dāng)View分配所有的子元素的大小和位置時(shí)觸發(fā)
onSizeChanged(int, int, int, int) 當(dāng)view的大小發(fā)生變化時(shí)觸發(fā)
onDraw(Canvas) view渲染內(nèi)容的細(xì)節(jié)
onKeyDown(int, KeyEvent) 有按鍵按下后觸發(fā)
onKeyUp(int, KeyEvent) 有按鍵按下后彈起時(shí)觸發(fā)
onTrackballEvent(MotionEvent) 軌跡球事件
onTouchEvent(MotionEvent)觸屏事件
onFocusChanged(boolean, int, Rect) 當(dāng)View獲取 或失去焦點(diǎn)時(shí)觸發(fā)
onWindowFocusChanged(boolean) 當(dāng)窗口包含的view獲取或失去焦點(diǎn)時(shí)觸發(fā)
onAttachedToWindow() 當(dāng)view被附著到一個(gè)窗口時(shí)觸發(fā)
onDetachedFromWindow() 當(dāng)view離開附著的窗口時(shí)觸發(fā),提示該方法和 onAttachedToWindow() 是相反的。
onWindowVisibilityChanged(int) 當(dāng)窗口中包含的可見的view發(fā)生變化時(shí)觸發(fā)
以上是View實(shí)現(xiàn)的一些基本接口的回調(diào)方法,一般我們需要處理畫布的顯示時(shí),重寫onDraw(Canvas)用的的是最多的。
接下來(lái)就是ontouch事件來(lái)判斷位移和回彈的效果啦:
if (childview != null) { int action = event.getAction(); switch (action) { case MotionEvent.ACTION_DOWN: break; case MotionEvent.ACTION_UP: //判斷是否需要?jiǎng)赢? 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; // 在這里要?dú)w0. } 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; }
后面就是判斷是否需要滾動(dòng)和回彈的動(dòng)畫效果了。
public void animation() { // 開啟移動(dòng)動(dòng)畫 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是頂部,后面那個(gè)是底部 if (scrollY == 0 || scrollY == offset) { return true; } return false; }
以上是“android如何實(shí)現(xiàn)ios的UIScrollView”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
網(wǎng)站名稱:android如何實(shí)現(xiàn)ios的UIScrollView
本文網(wǎng)址:http://chinadenli.net/article6/jdssig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、軟件開發(fā)、外貿(mào)建站、小程序開發(fā)、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)