真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

android怎么實(shí)現(xiàn)ios的UIScrollView-創(chuàng)新互聯(lián)

這篇文章主要介紹了android怎么實(shí)現(xiàn)ios的UIScrollView的相關(guān)知識,內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇android怎么實(shí)現(xiàn)ios的UIScrollView文章都會有所收獲,下面我們一起來看看吧。

成都服務(wù)器托管,成都創(chuàng)新互聯(lián)公司提供包括服務(wù)器租用、綿陽主機(jī)托管、帶寬租用、云主機(jī)、機(jī)柜租用、主機(jī)租用托管、CDN網(wǎng)站加速、域名申請等業(yè)務(wù)的一體化完整服務(wù)。電話咨詢:18980820575

首先,最最最重要的就是判斷當(dāng)前視圖是否為空,你空視圖滾不滾好像沒啥區(qū)別,除了android 5.0的scrollview自帶了那種弧度。好像沒什么軟用~~~

//視圖不為空即可滾動
  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)用的的是最多的。

接下來就是ontouch事件來判斷位移和回彈的效果啦:

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

后面就是判斷是否需要滾動和回彈的動畫效果了。

 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是頂部,后面那個(gè)是底部
    if (scrollY == 0 || scrollY == offset) {
      return true;
    }
    return false;
  }

關(guān)于“android怎么實(shí)現(xiàn)ios的UIScrollView”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“android怎么實(shí)現(xiàn)ios的UIScrollView”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


標(biāo)題名稱:android怎么實(shí)現(xiàn)ios的UIScrollView-創(chuàng)新互聯(lián)
鏈接地址:http://weahome.cn/article/gicsj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部