1. 程式人生 > >Android Scroller簡單用法

Android Scroller簡單用法

 Android裡Scroller類是為了實現View平滑滾動的一個Helper類。通常在自定義的View時使用,在View中定義一個私有成員mScroller = new Scroller(context)。設定mScroller滾動的位置時,並不會導致View的滾動,通常是用mScroller記錄/計算View滾動的位置,再重寫View的computeScroll(),完成實際的滾動。 

      相關API介紹如下

Java程式碼  收藏程式碼
  1. mScroller.getCurrX() //獲取mScroller當前水平滾動的位置  
  2. mScroller.getCurrY() //獲取mScroller當前豎直滾動的位置
      
  3. mScroller.getFinalX() //獲取mScroller最終停止的水平位置  
  4. mScroller.getFinalY() //獲取mScroller最終停止的豎直位置  
  5. mScroller.setFinalX(int newX) //設定mScroller最終停留的水平位置,沒有動畫效果,直接跳到目標位置  
  6. mScroller.setFinalY(int newY) //設定mScroller最終停留的豎直位置,沒有動畫效果,直接跳到目標位置  
  7. //滾動,startX, startY為開始滾動的位置,dx,dy為滾動的偏移量, duration為完成滾動的時間  
  8. mScroller.startScroll(int
     startX, int startY, int dx, int dy) //使用預設完成時間250ms  
  9. mScroller.startScroll(int startX, int startY, int dx, int dy, int duration)  
  10. mScroller.computeScrollOffset() //返回值為boolean,true說明滾動尚未完成,false說明滾動已經完成。這是一個很重要的方法,通常放在View.computeScroll()中,用來判斷是否滾動是否結束。  



      舉例說明,自定義一個CustomView,使用Scroller實現滾動: 

Java程式碼  收藏程式碼
  1. import android.content.Context;  
  2. import android.util.AttributeSet;  
  3. import android.util.Log;  
  4. import android.view.View;  
  5. import android.widget.LinearLayout;  
  6. import android.widget.Scroller;  
  7. public class CustomView extends LinearLayout {  
  8.     private static final String TAG = "Scroller";  
  9.     private Scroller mScroller;  
  10.     public CustomView(Context context, AttributeSet attrs) {  
  11.         super(context, attrs);  
  12.         mScroller = new Scroller(context);  
  13.     }  
  14.     //呼叫此方法滾動到目標位置  
  15.     public void smoothScrollTo(int fx, int fy) {  
  16.         int dx = fx - mScroller.getFinalX();  
  17.         int dy = fy - mScroller.getFinalY();  
  18.         smoothScrollBy(dx, dy);  
  19.     }  
  20.     //呼叫此方法設定滾動的相對偏移  
  21.     public void smoothScrollBy(int dx, int dy) {  
  22.         //設定mScroller的滾動偏移量  
  23.         mScroller.startScroll(mScroller.getFinalX(), mScroller.getFinalY(), dx, dy);  
  24.         invalidate();//這裡必須呼叫invalidate()才能保證computeScroll()會被呼叫,否則不一定會重新整理介面,看不到滾動效果  
  25.     }  
  26.     @Override  
  27.     public void computeScroll() {  
  28.         //先判斷mScroller滾動是否完成  
  29.         if (mScroller.computeScrollOffset()) {  
  30.             //這裡呼叫View的scrollTo()完成實際的滾動  
  31.             scrollTo(mScroller.getCurrX(), mScroller.getCurrY());  
  32.             //必須呼叫該方法,否則不一定能看到滾動效果  
  33.             postInvalidate();  
  34.         }  
  35.         super.computeScroll();  
  36.     }  
  37. }  

相關推薦

Android Scroller簡單用法

 Android裡Scroller類是為了實現View平滑滾動的一個Helper類。通常在自定義的View時使用,在View中定義一個私有成員mScroller = new Scroller(context)。設定mScroller滾動的位置時,並不會導致View的滾動,通

android Scroller簡單用法記錄

總體的流程:scroller儲存的是移動的資訊,這些資訊不針對任何的檢視,或者可以說是針對檢視樹。常用的最簡單的使用方法如下: 1、呼叫scroller的startScroll方法觸發滾動,但此時只是儲存了資訊,並沒有表明/指定哪些檢視需要滾動 2、startScroll呼

Android Scroller簡單用法

關於scroller 他是Androidview 移動的一個輔助類 首先來說一說View 的移動, View 有兩個移動的方法: View.scrollBy(x, y) View.scrollTo(x, y) 需要注意的 這兩個方法 移動的不是View 本身, View

Android動態添加布局LayoutInflater簡單用法

下面是關於 LayoutInflater 簡單用法: 直接看例子,我想在 activity_main 檔案中動態的新增一個佈局;下面是 activity_main 檔案中的程式碼: <RelativeLayout xmlns:android="http://schemas.and

Android中AsyncTask的簡單用法

在開發Android移動客戶端的時候往往要使用多執行緒來進行操作,我們通常會將耗時的操作放在單獨的執行緒執行,避免其佔用主執行緒而給使用者帶來不好的使用者體驗。但是在子執行緒中無法去操作主執行緒(UI 執行緒),在子執行緒中操作UI執行緒會出現錯誤。因此android提供

Android—— ListView 的簡單用法及定製ListView介面

一、ListView的簡單用法 2. 訓練目標 1) 掌握 ListView 控制元件的使用 2) 掌握 Adapter 橋樑的作用 實現步驟: 1)首先新建一個專案, 並讓ADT 自動幫我們建立好活動。然後修改activity_main.xml 中的程式碼,如下所示:

Android圖片載入框架Glide的簡單用法

一、概述 Glide是一款由Bump Technologies開發的圖片載入框架,可以在android平臺上以很簡單的方式載入和展示圖片。 目前,Glide最新的穩定版本是3.7.0,這個版本的

Android資料儲存之SQLite簡單用法

實現效果圖如下: activity_main.xml佈局檔案 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/a

android:layout_marginLeft等的簡單用法

靠右顯示:用 android:layout_marginLeft,意思是距離左邊框的距離; 靠左顯示:用android:layout_marginRight,意思是距離右邊框的距離。 同理, android:layout_marginTop: 距離上邊框 android:

android final關鍵字用法簡單總結

final: final修飾的變數為常量,只能賦值一次,賦值後不可修改。 final方法不能被子類重寫 final類不能被繼承 1、final變數 必須初始化,初始化必須在宣告時或者構造方法中直接賦值。不能通過函式賦值。 2、final方法 fin

Android中資原始檔中的字串陣列string-array簡單用法

在Android中,用string-array是一種簡單的提取XML資原始檔資料的方法。 例子如下: 把相應的資料放到values資料夾的strings.xml檔案裡,或是其他自定義的xml中都可以,以下操作方法相同。 <?xml version="1.0" encoding="utf-8"?

Android裡回撥(callback)的簡單用法

接觸Android這麼久,老是聽到回撥這個詞,覺得很高大上,一直很想弄明白這到底是個什麼鬼東東,同事只用了簡簡單單的一句話就讓我有了很直觀的理解:一個監聽器就是一個回撥方法的實現!不知道你看到這句話是不是瞬間也有了一個很直觀的理解呢! 於是我自己嘗試著寫了一個簡單的回撥de

python argpare 模塊的簡單用法

python1、實例:#!/usr/bin/python #coding:utf-8 import argparse parser = argparse.ArgumentParser() parser.add_argument(‘-s‘,‘--string‘,dest=‘string‘,nargs=1

mysqldumpslow簡單用法

data 正則匹配 查詢 語句 itl 數據 lac undefine mysql mysqldumpslow命令/path/mysqldumpslow -s c -t 10 /database/MySQL/slow-log這會輸出記錄次數最多的10條SQL語句,其中:

走入計算機的第十一天(shell的一些簡單用法

調用 gen 眼睛 加載 賦值 mem end 表示 簡單用法 一 BASH的屬性 BASH中會存儲一些自身屬性的參數,啟用或關閉某一項功能 例如控制* .字符是否為通配 查看參數 set -o 關閉noglob參數 set -o noglob ls * ls: *:

Android各種Adapter用法

app urn turn drawable key save 比較 logs display ArrayAdapter比較簡單,但它只能用於顯示文字。 1 public class MainActivity extends AppCompatActivity { 2

Android HttpLoggingInterceptor的用法簡介

nbsp -- ide evel clas 記錄 pla public andro 該攔截器用於記錄應用中的網絡請求的信息。 示例 OkHttpClient client = new OkHttpClient(); HttpLoggingInterceptor l

github超簡單用法

點贊 是你 cat 簡單用法 git push com 方便 改變 bug 參考: http://stormzhang.com/github/2016/05/25/learn-github-from-zero1/ 1. 為啥要用github 做一個項目會產生

popcorn-js視頻Video框架簡單用法

次數 update auto 框架 document web function lis 監聽 <div> <video class="video" id="ourvideobig" preload="auto" contr

python lambda表達式簡單用法

result 簡單的 函數 一個表 if else alex 內嵌 語句 代碼塊 條件運算時,對於簡單的 if else 語句,可以使用三元運算來表示,即: # 普通條件語句 if 1 == 1: name = ‘wupeiqi‘ else: name =