1. 程式人生 > >Scroller 的運用案例(一)

Scroller 的運用案例(一)

此類內容也不多,而我們經常用到的就更少了,

我在這裡記錄下我經常用到的幾個知識點 :

第一個知識點:
public void startScroll(int startX, int startY, int dx, int dy) {
    startScroll(startX, startY, dx, dy, DEFAULT_DURATION);
}
引數說明:startX開始變化時X的值,startY開始變化時Y的值,dx X的值變化的最大值,dy Y值變化的最大值

public void startScroll(int startX, int startY, int dx, int dy, int duration) {

}
比上一方法多了一個執行時間的引數;

第二個知識點:
public boolean computeScrollOffset() {

}
此方法返回的是一個boolean型的值,這個boolean的只有什麼用呢,看方法名我們應該可以猜到,
此boolean值就是判斷我們呼叫startScroll 方法執行是否已經結束。
特別注意 :======返回true表示還沒有結束============ 因為方法名的原因,這裡我搞錯好多次了
此方法的用處可不止這一個,根據官方文件介紹
    /**
     * Call this when you want to know the new location.  If it returns true,
     * the animation is not yet finished.
     */
大致意思是,呼叫此方法可以獲取新的位置,也就是想要獲取當前的X或Y的值嗎,就得先呼叫此方法;
那麼怎麼獲取當前的location呢,

 public final int getCurrX() {
        return mCurrX;
 }
 public final int getCurrX() {
        return mCurrX;
 }

 實戰一: 實現圖片移動動畫效果

 package moon.scrolldemo;

 import android.content.Context;
 import android.util.AttributeSet;
 import android.util.Log;
 import android.view.View;
 import android.widget.RelativeLayout;
 import android.widget.Scroller;

 /**
  * Created by moon.zhong on 2015/2/10.
  */
 public class ScrollLin extends RelativeLayout implements View.OnClickListener{

     private Scroller mScroll ;

     private View mView ;

     private View mButton ;

     private boolean isFirst = true ;

     public ScrollLin(Context context) {
         this(context, null);
     }

     public ScrollLin(Context context, AttributeSet attrs) {
         this(context, attrs, 0);
     }

     public ScrollLin(Context context, AttributeSet attrs, int defStyleAttr) {
         super(context, attrs, defStyleAttr);
         mScroll = new Scroller(getContext()) ;
     }

     @Override
     protected void onLayout(boolean changed, int l, int t, int r, int b) {
         super.onLayout(changed, l, t, r, b);
         if(isFirst){
             Log.v("zgy", "=========isFirst==========") ;
             mView = getChildAt(0) ;
             mButton = getChildAt(1) ;
             mButton.setOnClickListener(this);
         }
         isFirst = false ;
     }

     @Override
     public void computeScroll() {
         if(mScroll.computeScrollOffset()){
             int currentY = mScroll.getCurrY() ;
             /*這裡讓他平移*/
             mView.setTranslationY(currentY);
             /*currentY的變化範圍 0 ~ -mView.getTop() */
             Log.v("zgy", "=========mView=========="+currentY) ;
             invalidate();
         }
     }

     @Override
     public void onClick(View v) {

         Log.v("zgy", "=========onClick==========") ;
         /*開始執行資料變化*/
         mScroll.startScroll(0, 0, 0, -mView.getTop(), 2000);

         invalidate();
     }
 }
xml的程式碼:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >


    <moon.scrolldemo.ScrollLin
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:src="@drawable/ic_launcher"/>
        <Button
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:text="開始"
            android:layout_centerHorizontal="true"
            android:layout_alignParentBottom="true"/>
        </moon.scrolldemo.ScrollLin>
</RelativeLayout>

相關推薦

Scroller運用案例

此類內容也不多,而我們經常用到的就更少了, 我在這裡記錄下我經常用到的幾個知識點 : 第一個知識點: public void startScroll(int startX, int startY, int dx, int dy) { startScr

webpack開發案例

sele tle 參數說明 logs css 直接 [] ima -128 案例一(基本打包) 基本前置條件 步驟一: <!DOCTYPE html> <html> <head> <meta charset="ut

shell腳本案例批量創建用戶

shell 批量創建用戶 for linux 案例需求用shell腳本批量建立Linux用戶實現要求:創建用戶student1到student50,指定組為student組!而且每個用戶需要設定一個不同的密碼! 實現腳本 #!/bin/bash grep ‘student‘ /etc/grou

unity Socket TCP連線案例

非常清晰的demo 服務端 using System; using System.Collections; using System.Collections.Generic; using System.Net; using System.Net.Sockets; using Syste

unity Socket TCP連接案例

mon star connect color 服務器 void ipaddress field .get 非常清晰的demo 服務端 using System; using System.Collections; using System.Collectio

SpringBoot的IOC模組註解及簡單案例

本文將會講到SpringBoot的IOC模組下的註解進行總結,主要目的是為了方便之後查詢註解和快速應用。 將會以:元件註冊,生命週期,屬性賦值,自動裝配來進行區分。示例程式碼的註解很重要 一、元件註冊 1、@Configuration:標註在類上。主要是告訴 Sprin

HTML+CSS簡單的登陸+註冊介面仿照案例

是新手在練習html+css,所以裡面的很多程式碼會比較冗雜,不是很簡潔,會慢慢提高水平的。1.整體介面分為三大部分:導航、主要內容、尾部資訊內容;主要內容細分為:左側欄(頁面資訊部分)、右側欄(登陸板塊)2.導航:裡面有四個li標籤,每個li標籤裡面都有一個a標籤,讓其右浮

Python初學者好玩案例:最短的抓取網頁圖片程式碼,只有10行

這幾天閒來無事,又研究了一下Python的基礎內容,首先研究的是如何抓取網頁資料。 發現大神們通常在初級教程裡就要寫很多程式碼,真讓我們這些初學者無所適從。 加上Python的各種版本不同,也會讓初學者頭腦,在此提醒初學者,看資料一定要注意軟體版本號。 還是按照我的原則,凡

dataTables分頁展示資料注意事項(案例)

dataTables可以高效的提供大量資料的表格展示: 程式碼如: 前臺: table = $('#example').DataTable(             {                 "ajax" : "/c",                 "orde

【Clion-Ubuntu-dlib】執行一個dlib案例如何在clion編譯器中配置CMakeLists

目錄 第一步:新建一個dlib專案 第二步:執行一個案例hello world 第三步:配置CMakeList cmake_minimum_required(VERSION 2.8) project(cpp_eval) set(

說說EMC解決方案中的那些產品和案例

認識我們 由於工作和興趣關係,我們作為一個團隊,平時一直密切關注著儲存業界的相關產品和最新資訊,也會把一些好的諮詢和經驗整理成文分享出來。去年我們釋出的兩個系列,【網路基本功-細說網路那些事兒】和【一站式學習Wireshark】,獲得了很多人的好評。我們希望在不同的線上和社

Hadoop學習筆記—20.網站日誌分析專案案例專案介紹

網站日誌分析專案案例(一)專案介紹:當前頁面一、專案背景與資料情況1.1 專案來源  本次要實踐的資料日誌來源於國內某技術學習論壇,該論壇由某培訓機構主辦,匯聚了眾多技術學習者,每天都有人發帖、回帖,如圖1所示。圖1 專案來源網站-技術學習論壇  本次實踐的目的就在於通過對該

Jmeter效能測試案例

一、測試需求:測試20個使用者訪問網站在負載達到30QPS時的平均響應時間 二、QPS:Query Per Second 每秒查詢率。(一臺查詢伺服器每秒能夠處理的查詢次數,作為域名伺服器的效能經常用每秒查詢率來衡量) 三、測試步驟 1、新增執行緒組(執行

python進階—numpy案例

首先總結一下numpy如何讀取txt,excel,csv等格式的文件。 import numpy as np arr2 = np.arange(12).reshape(3,4) # 儲存資料到txt文件(fmt:資料格式,delimiter:分隔符) np.savetx

資料庫查詢案例 單表查詢 45 題

use `部門僱員`; DROP TABLE dept; CREATE TABLE `dept` ( `deptno` bigint(2) NOT NULL PRIMARY KEY, `dname` varchar(20) default NULL, `loc` VARCHAR(20) defa

增量更新環節案例

測試服(不限制ip)驗證完成,到正式服(限制ip)開白名單驗證,然後在線上灰度,正式對外,灰度是要看情況的。 測試要求: 要求是appversion1.0.2  resversion 1031 -> 升級後appversion不變,resversion 1032 當

ExtJs案例 ~~ Grid元件載入更多

目錄 一、需求 Grid元件載入更多 一、需求 最近,有個新的需求,用Ext Grid元件載入資料之後,點選“載入更多”按鈕,會在Grid表格後面追加新的內容。要求: 只返回後面追加的內容,不會返回原先的內容 設定Grid表格的滾動條在最下面

Javascript小案例:仿淘寶搜尋框使用者輸入事件的實現

淘寶是我們經常用的一個網上購物平臺,開啟淘寶網首頁,找到淘寶首頁的搜尋框,如下如所示: (截圖日期:2017年6月18日) 大家可以看到,當頁面一開啟,搜尋框中就可以看到灰色字型“少女高跟鞋”,還有閃爍的游標。當用戶點選輸入的時候,灰色字消失。當用戶清空

專案溝通案例

場景1: A專案經理是剛入職的新任專案經理,迫於專案壓力,A專案經理必須在入職後的第二天就投入到專案組中去,並被要求立即開展專案工作。為了幫助A專案經理順利開始工作,部門經理組織專案組開了個會,把新任專案經理介紹給了專案組。 A專案經理進入專案組後,面臨的第一個問題,也是最

XML解析之sax解析案例讀取contact.xml檔案,完整輸出文件內容

一、新建Demo2類: import java.io.File; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXP