亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

android開發(fā)仿ios的UIScrollView實例代碼

 更新時間:2018年01月20日 12:16:26   作者:馬云飛的博客  
下面小編就為大家分享一篇android開發(fā)仿ios的UIScrollView實例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

今天重新裝了編譯器,結(jié)果崩無極限,真是日了狗了了。剛剛才知道問題在哪邊。

好了,說正事,對于ios開發(fā)我沒接觸,不是很了解,百度了半天,差不多就是UIScrollView的把。如果不對,請指證。具體什么效果呢,我剛才拿朋友的iphone手機看了下,iphone的設(shè)置界面,第一個列表往下拉可以繼續(xù)滾,上拉同理。不過android好像沒有自帶的這種情況。

我把這種效果稱為滾無極限的scollview。

下面就來上源碼:

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

//視圖不為空即可滾動
  protected void onFinishInflate() {
    if (getChildCount() > 0) {
      childview = getChildAt(0);
    }
  }

這個屬性我也是剛知道沒多久,意思是當所有的布局呈現(xiàn)完成之后調(diào)用這個方法。

我這邊附上view常用的方法,你們可以自行研究,有好多方法我也不知道~~~.

自定義 View的常用方法:  

onFinishInflate() 當View中所有的子控件 均被映射成xml后觸發(fā)   

onMeasure(int, int) 確定所有子元素的大小   

onLayout(boolean, int, int, int, int) 當View分配所有的子元素的大小和位置時觸發(fā)   

onSizeChanged(int, int, int, int) 當view的大小發(fā)生變化時觸發(fā)

onDraw(Canvas) view渲染內(nèi)容的細節(jié)

onKeyDown(int, KeyEvent) 有按鍵按下后觸發(fā)

onKeyUp(int, KeyEvent) 有按鍵按下后彈起時觸發(fā)  

onTrackballEvent(MotionEvent) 軌跡球事件

onTouchEvent(MotionEvent)觸屏事件

onFocusChanged(boolean, int, Rect) 當View獲取 或失去焦點時觸發(fā)

onWindowFocusChanged(boolean) 當窗口包含的view獲取或失去焦點時觸發(fā)

onAttachedToWindow() 當view被附著到一個窗口時觸發(fā)

onDetachedFromWindow() 當view離開附著的窗口時觸發(fā),提示該方法和 onAttachedToWindow() 是相反的。   

onWindowVisibilityChanged(int) 當窗口中包含的可見的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)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android狀態(tài)欄的適配匯總

    Android狀態(tài)欄的適配匯總

    這篇文章主要給大家介紹了關(guān)于Android狀態(tài)欄適配的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Android類加載ClassLoader雙親委托機制詳解

    Android類加載ClassLoader雙親委托機制詳解

    這篇文章主要為大家介紹了Android類加載ClassLoader雙親委托機制詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • Android使用MediaRecorder實現(xiàn)錄像功能

    Android使用MediaRecorder實現(xiàn)錄像功能

    這篇文章主要為大家詳細介紹了Android使用MediaRecorder實現(xiàn)錄像功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Android12四大組件之Activity生命周期變化詳解

    Android12四大組件之Activity生命周期變化詳解

    雖然說我們天天都在使用Activity,但是你真的對Activity的生命機制完全了解了嗎?Activity的生命周期方法只有七個,但是其實那只是默認的情況。也就是說在其他情況下,Activity的生命周期可能不會是按照我們以前所知道的流程,本章著重講解Activity的生命周期變化
    2022-07-07
  • 仿墨跡天氣在Android App中實現(xiàn)自定義zip皮膚更換

    仿墨跡天氣在Android App中實現(xiàn)自定義zip皮膚更換

    這篇文章主要介紹了仿墨跡天氣在Android App中實現(xiàn)自定義zip皮膚更換的方法,即讓用戶可以自行通過自制或者下載的zip皮膚包進行換膚,需要的朋友可以參考下
    2016-02-02
  • 解決Android Studio導(dǎo)入項目非常慢的辦法

    解決Android Studio導(dǎo)入項目非常慢的辦法

    在使用Android studio的時候常常遇到這樣的問題,從其他地方導(dǎo)入項目,Android studio呈現(xiàn)非常慢的現(xiàn)象!當遇到這種情況時,可以看看是下面這篇文章,再按照方法來解決!
    2016-09-09
  • flutter消息推送客戶端集成方案詳解

    flutter消息推送客戶端集成方案詳解

    這篇文章主要為大家介紹了flutter消息推送客戶端集成方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • Activity isFinishing()判斷Activity的狀態(tài)實例

    Activity isFinishing()判斷Activity的狀態(tài)實例

    下面小編就為大家分享一篇Activity isFinishing()判斷Activity的狀態(tài)實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • Android 開發(fā)之Dialog,Toast,Snackbar提醒

    Android 開發(fā)之Dialog,Toast,Snackbar提醒

    這篇文章主要介紹了Android 開發(fā)之Dialog,Toast,Snackbar提醒的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • android實現(xiàn)百度地圖自定義彈出窗口功能

    android實現(xiàn)百度地圖自定義彈出窗口功能

    這篇文章主要介紹了android實現(xiàn)百度地圖自定義彈出窗口的功能,大家參考使用吧
    2013-11-11

最新評論