熟女伦乱激情网一区二区,十八禁免费漫画在线观看,欲色欲香天天网综合久久,美女无遮挡隐私叼嗨网站

本章內(nèi)容是android.widget.HorizontalScrollView,譯為"橫向滾動(dòng)條",版本為Android 2.3 r1,翻譯來(lái)自"Tina",感謝"Tina"為大家?guī)?lái)精彩的翻譯稿 !期待你加入Android API 中文的翻譯,聯(lián)系我over140@gmail.com。

 

聲明

  歡迎轉(zhuǎn)載,但請(qǐng)保留文章原始出處:)

    JavaEye社區(qū):http://www.iteye.com/

    Android中文翻譯組:http://goo.gl/6vJQl

 

正文

  一、結(jié)構(gòu)

public class HorizontalScrollView extends FrameLayout

        

java.lang.Object

android.view.View

         android.view.ViewGroup

                   android.widget.FrameLayout

                            android.widget.HorizontalScrollView

 

  二、概述

      

  用于布局的容器,可以放置讓用戶使用滾動(dòng)條查看的視圖層次結(jié)構(gòu),允許視圖結(jié)構(gòu)比手機(jī)的屏幕大。HorizontalScrollView是一種FrameLayout(框架布局),其子項(xiàng)被滾動(dòng)查看時(shí)是整體移動(dòng)的,并且子項(xiàng)本身可以是一個(gè)有復(fù)雜層次結(jié)構(gòu)的布局管理器。一個(gè)常見的應(yīng)用是子項(xiàng)在水平方向中,用戶可以滾動(dòng)顯示頂層水平排列的子項(xiàng)(items)

  HorizontalScrollView不可以和ListView同時(shí)用,因?yàn)?/span>ListView有自己的滾動(dòng)條設(shè)置。最重要的是,如果在需要顯示很大的list的情況下,兩者同時(shí)用則會(huì)使ListView在一些重要的優(yōu)化上失效。出現(xiàn)這種失效的原因在于,HorizontalScrollView會(huì)強(qiáng)迫ListViewHorizontalScrollView本身提供的空間容器(infinite container)來(lái)顯示完整的列表。

   類似的情況,TextView也有自己的滾動(dòng)條,所以不需要ScrollView。但這兩者是可以同時(shí)使用的,使用的結(jié)果會(huì)是在一個(gè)更大的容器里顯示文本視圖。

HorizontalScrollView只支持水平方向的滾動(dòng)顯示。

 

  三、公共方法

public void addView (View child)

添加一個(gè)子視圖。若這個(gè)子視圖沒(méi)有被設(shè)置布局參數(shù),則使用ViewGroup的缺省參數(shù)。

參數(shù)

child         要添加的子視圖

 

public void addView (View child, int index)

添加一個(gè)子視圖。若這個(gè)子視圖沒(méi)有被設(shè)置布局參數(shù),則使用ViewGroup的缺省參數(shù)。

參數(shù)

child         要添加的子視圖

index        子視圖要加入的位置

 

public void addView (View child, int index, ViewGroup.LayoutParams params)

添加一個(gè)帶有指定布局參數(shù)的子視圖。

參數(shù)

child         要添加的子視圖

index        子視圖要加入的位置

params  子視圖的布局參數(shù)

 

public void addView (View child, ViewGroup.LayoutParams params)

添加一個(gè)帶有指定布局參數(shù)的子視圖。

參數(shù)

child         要添加的子視圖

params  子視圖的布局參數(shù)

 

public boolean arrowScroll (int direction)

響應(yīng)點(diǎn)擊左右箭頭時(shí)對(duì)滾動(dòng)條的處理。

參數(shù)

direction          The direction corresponding to the arrow key that was pressed箭頭按鍵所表示的方向

返回值

             若此事件成功完成,則返回true;否則返回false。

 

public void computeScroll ()

被父視圖調(diào)用,用于必要時(shí)候?qū)ζ渥右晥D的值(mScrollX和mScrollY)進(jìn)行更新。典型的情況如:父視圖中某個(gè)子視圖使用一個(gè)Scroller對(duì)象來(lái)實(shí)現(xiàn)滾動(dòng)操作,會(huì)使得此方法被調(diào)用。

 

public boolean dispatchKeyEvent (KeyEvent event)

按照可以獲得焦點(diǎn)的順序(從視圖樹的頂端到當(dāng)前獲得焦點(diǎn)的視圖),分派一個(gè)按鍵事件給下一個(gè)視圖。若此視圖為焦點(diǎn)視圖,事件將會(huì)分派給它自己。否則它將按照順序,分派給下一個(gè)節(jié)點(diǎn)。此方法同時(shí)觸動(dòng)所有按鍵監(jiān)聽器。

參數(shù)

event        被分派的事件.

返回值

             若事件被處理,則返回true;否則為false

 

public void draw (Canvas canvas)

手動(dòng)繪制視圖(及其子視圖)到指定的畫布(Canvas)。這個(gè)視圖必須在調(diào)用這個(gè)函數(shù)之前做好了整體布局。。當(dāng)實(shí)現(xiàn)一個(gè)視圖時(shí),不需要繼承這個(gè)方法;相反,你應(yīng)該實(shí)現(xiàn)onDraw(Canvas)方法。

參數(shù)

canvas     繪制視圖的畫布

 

public boolean executeKeyEvent (KeyEvent event)

需要通過(guò)按鍵事件來(lái)實(shí)現(xiàn)滾動(dòng)操作時(shí),可以調(diào)用此方法。效果類似于由視圖樹型結(jié)構(gòu)分派事件。

參數(shù)

event        需要執(zhí)行的事件

返回值

             若事件被處理,則返回true;否則為false

 

public void fling (int velocityX)

滾動(dòng)視圖的fling手勢(shì)。

參數(shù)

velocityX          方向的初始速率。正值表示手指/光標(biāo)向屏幕右邊滑動(dòng),而內(nèi)容相對(duì)向左滾動(dòng)。

 

public boolean fullScroll (int direction)

處理按下"home/end"快捷鍵之后的滾動(dòng)響應(yīng)。此方法會(huì)將視圖移左或移右,同時(shí)將焦點(diǎn)賦予移動(dòng)后可視的最左或最右的組件。如果沒(méi)有任何組件適合得到焦點(diǎn),此scrollview將收回焦點(diǎn)。

參數(shù)

direction          滾動(dòng)方向:FOCUS_LEFT表示向視圖的左邊移動(dòng),F(xiàn)OCUS_RIGHT表示向視圖的右邊移動(dòng)

返回值

             若此方法消耗(consumed)了按鍵事件則返回true,否則返回false。

 

public int getMaxScrollAmount ()

返回值

             按左右箭頭時(shí)視圖可以滾動(dòng)的最大值。

 

public boolean isFillViewport ()

表示此ScrollView的內(nèi)容是否被拉伸以適應(yīng)視口(viewport)的大小。

返回值

             若內(nèi)容填充了視口則返回true,否則返回false。

 

public boolean isSmoothScrollingEnabled ()

返回值

             按箭頭方向滾動(dòng)時(shí),是否顯示滾動(dòng)的平滑效果。

 

public boolean onInterceptTouchEvent (MotionEvent ev)

使用此方法可以攔截所有觸摸屏動(dòng)作引發(fā)的事件。這意味著你可以監(jiān)視分派給子項(xiàng)的事件,并且可以拿到任何當(dāng)前手勢(shì)的所有權(quán)。

使用此方法需謹(jǐn)慎。因?yàn)樗cView.onTouchEvent(MotionEvent)有相當(dāng)復(fù)雜的交互影響。這兩者都必須同時(shí)正確地實(shí)現(xiàn)。事件將按以下順序來(lái)被方法接收:

   1. 接收到down事件

   2. 事件將被視圖組的一個(gè)子視圖處理,或者被傳遞給自己的onTouchEvent()方法處理;這意味著你必須實(shí)現(xiàn)onTouchEvent(),并且返回 true,這樣才可以接著接受到其他的手勢(shì)(而不是尋求一個(gè)父視圖來(lái)處理它)。onTouchEvent()返回true后,你將不再接受到 onInterceptTouchEvent()的任何事件,同時(shí)所有對(duì)觸摸動(dòng)作的處理必須像往常一樣在onTouchEvent()中進(jìn)行。

   3. 如果返回false,則接下來(lái)的每個(gè)事件(所有的up事件,包含最后一個(gè)up)將會(huì)首先被傳遞到這里,然后到目標(biāo)對(duì)象view的onTouchEvent()。

   4. 如果返回ture,你將不會(huì)接收到以下任何事件:目標(biāo)view將會(huì)接收到相同的事件,但是帶著ACTION_CANCEL的動(dòng)作。所有在此之后的事件將會(huì)被傳遞到你的onTouchEvent()方法中,并且不再在這里出現(xiàn)。

參數(shù)

ev     沿著樹型結(jié)構(gòu)往下分派的動(dòng)作事件

         返回值

             若將動(dòng)作事件從子視圖中截獲并通過(guò)onTouchEvent()將他們分派給當(dāng)前ViewGroup,則返回true。當(dāng)前目標(biāo)將收到一個(gè)ACTION_CANCEL事件,并且不再會(huì)有其他消息被傳遞到這里。

 

public boolean onTouchEvent (MotionEvent ev)

此方法用于處理觸摸屏的動(dòng)作事件。

參數(shù)

ev     動(dòng)作事件

         返回值

             若事件被成功處理,則返回true;否則返回false

 

public boolean pageScroll (int direction)

處理按下"page up/down"快捷鍵之后的滾動(dòng)響應(yīng)。此方法會(huì)將視圖往左或往右滾動(dòng)一個(gè)頁(yè)面的距離,同時(shí)將焦點(diǎn)賦予移動(dòng)后可視的最左或最右的組件。如果沒(méi)有任何組件適合得到焦點(diǎn),此scrollview將收回焦點(diǎn)。

參數(shù)

direction          滾動(dòng)方向:FOCUS_LEFT表示向視圖的左邊移動(dòng)一個(gè)頁(yè)面FOCUS_RIGHT表示向視圖的右邊移動(dòng)一個(gè)頁(yè)面

      返回值

            若此方法處理(consumed)了按鍵事件則返回true,否則返回false。

 

public void requestChildFocus (View child, View focused)

當(dāng)父視圖的一個(gè)子視圖要獲得焦點(diǎn)時(shí),調(diào)用此方法。

參數(shù)

child         要獲得焦點(diǎn)的子視圖。此視圖將包含焦點(diǎn)視圖,但其本身不必為焦點(diǎn)。

focused  事實(shí)上擁有焦點(diǎn)的子視圖的下層視圖。

 

public boolean requestChildRectangleOnScreen (View child, Rect rectangle, boolean immediate)

當(dāng)組里的某個(gè)子視圖需要被定位在屏幕的某個(gè)矩形范圍時(shí),調(diào)用此方法。重載此方法的ViewGroup可確認(rèn)以下幾點(diǎn):

    * 子項(xiàng)目將是組里的直系子項(xiàng)

    * 矩形將在子項(xiàng)目的坐標(biāo)體系中

重載此方法的ViewGroup應(yīng)該支持以下幾點(diǎn):

    * 若矩形已經(jīng)是可見的,則沒(méi)有東西會(huì)改變

    * 為使矩形區(qū)域全部可見,視圖將可以被滾動(dòng)顯示

參數(shù)

child         發(fā)出請(qǐng)求的子視圖

rectangle         子項(xiàng)目坐標(biāo)系內(nèi)的矩形,即此子項(xiàng)目希望在屏幕上的定位

immediate      設(shè)為true,則禁止動(dòng)畫和平滑移動(dòng)滾動(dòng)條

      返回值

            進(jìn)行了滾動(dòng)操作的這個(gè)組(group),是否處理此操作

 

public void requestLayout ()

當(dāng)出現(xiàn)使視圖布局失效的改變時(shí),調(diào)用此方法。它將規(guī)劃一個(gè)視圖樹的布局路徑。

 

public void scrollTo (int x, int y)

設(shè)置視圖滾動(dòng)后的位置。這將引起onScrollChanged(int,int,int,int)的調(diào)用,同時(shí)使此視圖失效。

此版本同時(shí)將滾動(dòng)鎖定于子視圖的范圍。

參數(shù)

x       要滾動(dòng)到的x位置

y       要滾動(dòng)到的y位置

 

public void setFillViewport (boolean fillViewport)

設(shè)置此滾動(dòng)視圖是否將內(nèi)容寬度拉伸來(lái)適應(yīng)視口(viewport)。

參數(shù)

fillViewport      設(shè)置為true表示將拉伸內(nèi)容寬度;否則會(huì)設(shè)置為false。

 

public void setOverScrollMode (int mode)

為視圖設(shè)置over-scroll模式。有效的over-scroll模式有OVER_SCROLL_ALWAYS(缺省值),OVER_SCROLL_IF_CONTENT_SCROLLS(只允許當(dāng)視圖內(nèi)容大過(guò)容器時(shí),進(jìn)行over-scrolling)和OVER_SCROLL_NEVER。只有當(dāng)視圖可以滾動(dòng)時(shí),此項(xiàng)設(shè)置才起作用。

參數(shù)

mode        視圖的新over-scroll模式值

 

public void setSmoothScrollingEnabled (boolean smoothScrollingEnabled)

設(shè)置是否呈現(xiàn)按下箭頭后的平滑滾動(dòng)效果(動(dòng)畫效果)。

參數(shù)

smoothScrollingEnabled          設(shè)置是否呈現(xiàn)平滑滾動(dòng)效果

 

public final void smoothScrollBy (int dx, int dy)

類似scrollBy(int, int),但是呈現(xiàn)平滑滾動(dòng),而非瞬間滾動(dòng)(譯者注:瞬間滾動(dòng)——指不顯示滾動(dòng)過(guò)程,直接顯示滾動(dòng)后達(dá)到的位置)。

參數(shù)

dx     要滾動(dòng)的X軸像素差值(譯者注:橫向像素差值)

dy     要滾動(dòng)的Y軸像素差值(譯者注:縱向像素差值)

 

public final void smoothScrollTo (int x, int y)

類似scrollTo(int, int),但是呈現(xiàn)平滑滾動(dòng),而不是瞬間滾動(dòng)。

參數(shù)

x       滾動(dòng)要到達(dá)位置的X軸值

y      滾動(dòng)要到達(dá)位置的Y軸值

 

  四、受保護(hù)方法

      protected int computeHorizontalScrollOffset ()

計(jì)算水平方向滾動(dòng)條的滑塊的偏移值。此值用來(lái)計(jì)算滾動(dòng)時(shí)滑塊的位置。

偏移值的范圍可以以任何單位表示,但必須與computeHorizontalScrollRange()和computeHorizontalScrollExtent()的單位一致。

缺省的偏移值為視圖滾動(dòng)的偏移差值。

       返回值

             滾動(dòng)條滑塊在水平方向上的偏移值

 

protected int computeHorizontalScrollRange ()

scroll view 的可滾動(dòng)水平范圍是所有子視圖的寬度總合。

        返回值

              水平滾動(dòng)條表示的全部水平滾動(dòng)范圍

 

protected int computeScrollDeltaToGetChildRectOnScreen (Rect rect)

計(jì)算X方向滾動(dòng)的總合,以便在屏幕上顯示子視圖的完整矩形(或者,若矩形寬度超過(guò)屏幕寬度,至少要填滿第一個(gè)屏幕大小)。

參數(shù)

rect          矩形

            返回值

              滾動(dòng)差值

 

protected float getLeftFadingEdgeStrength ()

返回左漸變邊緣的強(qiáng)度或密集度。強(qiáng)度的值介于0.0(無(wú)漸變)到1.0(全漸變)之間。缺省實(shí)現(xiàn)只返回0.0或1.0,而不返回中間值。子類必須重載次方法來(lái)給滾動(dòng)動(dòng)作提供更平滑的漸變過(guò)程。

        返回值

              左漸變的強(qiáng)度,即介于0.0f和1.0f之間的浮點(diǎn)值

 

protected float getRightFadingEdgeStrength ()

返回右漸變邊緣的強(qiáng)度或密集度。強(qiáng)度的值介于0.0(無(wú)漸變)到1.0(全漸變)之間。缺省實(shí)現(xiàn)只返回0.0或1.0,而不返回中間值。子類必須重載此方法來(lái)給滾動(dòng)動(dòng)作提供更平滑的漸變過(guò)程。

                   返回值

                       右漸變的強(qiáng)度,即介于0.0f和1.0f之間的浮點(diǎn)值

 

protected void measureChild (View child, int parentWidthMeasureSpec, int parentHeightMeasureSpec)

要求子視圖測(cè)量自身,需要將視圖的MeasureSpec和其附加內(nèi)容同時(shí)考慮在內(nèi)。getChildMeasureSpec在其中承擔(dān)了重要角色,它計(jì)算出MeasureSpec,并傳遞給子視圖。

參數(shù)

child         要測(cè)量的子視圖

parentWidthMeasureSpec     此視圖的寬度要求

parentHeightMeasureSpec    此視圖的高度要求

 

protected void measureChildWithMargins (View child, int parentWidthMeasureSpec, int widthUsed, int parentHeightMeasureSpec, int heightUsed)

要 求子視圖測(cè)量自身,需要將視圖的MeasureSpec、附加內(nèi)容和邊緣部分同時(shí)考慮在內(nèi)。子項(xiàng)必須有MarginLayoutParams(邊緣布局參 數(shù))。getChildMeasureSpec在其中承擔(dān)了重要角色,它計(jì)算出MeasureSpec,并傳遞給子視圖。

參數(shù)

child         要測(cè)量的子視圖

parentWidthMeasureSpec     此視圖的寬度要求

widthUsed      被父視圖(也可能是其他子視圖)占用的橫向額外空間

parentHeightMeasureSpec    此視圖的高度要求

heightUsed     被父視圖(也可能是其他子視圖)占用的縱向額外空間

 

protected void onLayout (boolean changed, int l, int t, int r, int b)

當(dāng)此視圖要給每個(gè)子視圖賦值大小和位置時(shí),layout會(huì)調(diào)用此方法。子項(xiàng)的派生類應(yīng)當(dāng)重載此方法,并且調(diào)用各個(gè)子項(xiàng)的layout。

參數(shù)

changed           此視圖有新的大小或位置

l       左邊界位置,相對(duì)于父視圖

t      上邊界位置,相對(duì)于父視圖

r      右邊界位置,相對(duì)于父視圖

b      下邊界位置,相對(duì)于父視圖

 

protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)

調(diào)用此方法來(lái)確定本身和所包含內(nèi)容的大小(寬度和高度)。此方法被measure(int,int)喚起,而且必須被子類重載以得到所包含內(nèi)容的確切大小。

         注意:當(dāng)重載此方法時(shí),必須調(diào)用setMeasureDimension(int,int)來(lái)保存View的大小。如果沒(méi)有做到,將會(huì)引發(fā)一個(gè) measure(int,int)拋出的IllegalStateException(非法狀態(tài)錯(cuò)誤)。超類onMeasure(int,int)可以被 調(diào)用。

         編寫基類的確認(rèn)大小的方法,缺省情況下是根據(jù)其背景大小來(lái)確認(rèn),除非MeasureSepc允許有更大的高度或?qū)挾取W宇惐仨氈剌donMeasure(int,int)以得到對(duì)其內(nèi)容大小的更準(zhǔn)確的測(cè)量。

         若此方法被重載,它的子類需要確保其高度和寬度至少達(dá)到View所規(guī)定的最小值(可通過(guò)getSuggestedMinimumHeight()和getSuggestedMinimumWidth()得到)。

參數(shù)

widthMeasureSpec          受上一層大小影響下的對(duì)水平空間的要求??蓞⒖碫iew.MeasureSpec。

heightMeasureSpec         受上一層大小影響下的對(duì)垂直空間的要求??蓞⒖碫iew.MeasureSpec。

 

protected void onOverScrolled (int scrollX, int scrollY, boolean clampedX, boolean clampedY)

overScrollBy(int, int, int, int, int, int, int, int, boolean)調(diào)用,來(lái)對(duì)一個(gè)over-scroll操作的結(jié)果進(jìn)行響應(yīng)。

參數(shù)

scrollX      新的X滾動(dòng)像素值

scrollY      新的Y滾動(dòng)像素值

clampedX        當(dāng)scrollX被over-scroll的邊界限制時(shí),值為true

clampedY        當(dāng)scrollY被over-scroll的邊界限制時(shí),值為true

 

protected boolean onRequestFocusInDescendants (int direction, Rect previouslyFocusedRect)

當(dāng)在某個(gè)scroll view的子視圖中尋找焦點(diǎn)時(shí),需要小心不能讓屏幕之外的組件得到焦點(diǎn)。這比缺省ViewGroup的實(shí)現(xiàn)代價(jià)更高,否則此行為被設(shè)為缺省。

參數(shù)

direction          值可以為FOCUS_UP,F(xiàn)OCUS_DOWN,F(xiàn)OCUS_LEFT或 FOCUS_RIGHT

previouslyFocusedRect 能夠給出一個(gè)較好的提示的矩形(當(dāng)前視圖的坐標(biāo)系統(tǒng))表示焦點(diǎn)從哪里得來(lái)。如果沒(méi)有提示則為null。

返回值

             是否取到了焦點(diǎn)。

 

protected void onSizeChanged (int w, int h, int oldw, int oldh)

當(dāng)View的大小改變時(shí)此方法被調(diào)用。如果View是剛剛被加入,則視之前的值為0。

參數(shù)

w     View的當(dāng)前寬度

h      View的當(dāng)前高度

oldw        View大小改變之前的寬度

oldh         View大小改變之前的高度

 

  五、補(bǔ)充

    文章精選

      Android HorizontalScrollview Example

 

結(jié)束

  這是"Tina"翻譯的第二篇較長(zhǎng)的譯稿,上一篇為ListView,再次感謝她?。?/p>

 

  由于移動(dòng)設(shè)備物理顯示空間一般有限,不可能一次性的把所有要顯示的內(nèi)容都顯示在屏幕上。所以各大平臺(tái)一般會(huì)提供一些可滾動(dòng)的視圖來(lái)向用戶展示數(shù)據(jù)。 Android平臺(tái)框架中為我們提供了諸如ListView、GirdView、ScrollView等滾動(dòng)視圖控件,這幾個(gè)視圖控件也是我們平常使用最 多的。我下面介紹一下HorizontalScrollView的使用和需要注意的點(diǎn)

 

     HorizontalScrollView是一個(gè)FrameLayout   ,這意味著你只能在它下面放置一個(gè)子控件,這個(gè)子控件可以包含很多數(shù)據(jù)內(nèi)容。有可能這個(gè)子控件本身就是一個(gè)布局控件,可以包含非常多的其他用來(lái)展示數(shù)據(jù)的控件。這個(gè)布局控件一般使用的是一個(gè)水平布局的LinearLayout  。TextView也是一個(gè)可滾動(dòng)的視圖控件,所以一般不需要HorizontalScrollView

 

     下面介紹一個(gè)HorizontalScrollView中包含許多圖片,并且可以滾動(dòng)瀏覽的示例

[java] view plaincopy

  1.  @Override  

  2.  protected void onCreate(Bundle savedInstanceState) {  

  3.        super.onCreate(savedInstanceState);  

  4.       setContentView(R.layout. activity_main);  

  5.         

  6.        mLinearLayout = (LinearLayout) findViewById(R.id.mygallery);  

  7.         

  8.       File externalDir = Environment. getExternalStorageDirectory();  

  9.       String photosPath = externalDir.getAbsolutePath() + "/test/";  

  10.       File photosFile = new File(photosPath);  

  11.         

  12.        for (File photoFile : photosFile.listFiles()) {  

  13.               mLinearLayout.addView(getImageView(photoFile.getAbsolutePath()));  

  14.       }  

  15.         

  16. }  

  17.   

  18.  private View getImageView(String absolutePath) {  

  19.         

  20.       Bitmap bitmap = decodeBitmapFromFile(absolutePath, 200200);  

  21.     LinearLayout layout = new LinearLayout(getApplicationContext());  

  22.     layout.setLayoutParams( new LayoutParams(250250));  

  23.     layout.setGravity(Gravity. CENTER);  

  24.       

  25.       ImageView imageView = new ImageView(this);  

  26.       imageView.setLayoutParams( new LayoutParams(200,200));  

  27.       imageView.setScaleType(ImageView.ScaleType. CENTER_CROP);  

  28.       imageView.setImageBitmap(bitmap);  

  29.       layout.addView(imageView);  

  30.         

  31.        return layout;  

  32. }  

  33.   

  34.  private Bitmap decodeBitmapFromFile(String absolutePath, int reqWidth, int reqHeight) {  

  35.     Bitmap bm = null;  

  36.       

  37.      // First decode with inJustDecodeBounds=true to check dimensions  

  38.      final BitmapFactory.Options options = new BitmapFactory.Options();  

  39.      options. inJustDecodeBounds = true ;  

  40.      BitmapFactory. decodeFile(absolutePath, options);  

  41.       

  42.      // Calculate inSampleSize  

  43.      options. inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);  

  44.       

  45.      // Decode bitmap with inSampleSize set  

  46.      options. inJustDecodeBounds = false ;  

  47.      bm = BitmapFactory. decodeFile(absolutePath, options);  

  48.       

  49.      return bm;   

  50. }  

  51.   

  52.  private int calculateInSampleSize(Options options, int reqWidth,  

  53.               int reqHeight) {  

  54.      // Raw height and width of image  

  55.      final int height = options.outHeight;  

  56.      final int width = options.outWidth;  

  57.      int inSampleSize = 1;  

  58.          

  59.      if (height > reqHeight || width > reqWidth) {  

  60.       if (width > height) {  

  61.        inSampleSize = Math. round((float)height / ( float)reqHeight);    

  62.       } else {  

  63.        inSampleSize = Math. round((float)width / ( float)reqWidth);    

  64.       }    

  65.      }  

  66.       

  67.      return inSampleSize;   

  68. }  

 

     要顯示的圖片放在外置SDCard中test目錄下,上面的示例程序只是顯示了一張張大圖片的縮略版本,對(duì)這方面不懂的可以參看http://blog.csdn.net/tibib/article/details/8726486

     HorizontalScrollView還可以設(shè)置滾動(dòng)到一個(gè)指定的位置(x,0),它的子控件也會(huì)跟隨著滾動(dòng)。

 

[java] view plaincopy

  1. new Handler().postDelayed(new Runnable() {  

  2.     @Override  

  3.     public void run() {  

  4.         // 水平直接滾動(dòng)800px,如果想效果更平滑可以使用smoothScrollTo(int x, int y)  

  5.         hsv.scrollTo(8000);  

  6.     }  

  7. }, 2000); 

 

穩(wěn)定

產(chǎn)品高可用性高并發(fā)

貼心

項(xiàng)目群及時(shí)溝通

專業(yè)

產(chǎn)品經(jīng)理1v1支持

快速

MVP模式小步快跑

承諾

我們選擇聲譽(yù)

堅(jiān)持

10年專注高端品質(zhì)開發(fā)
  • 返回頂部
台湾省| 洪雅县| 鹰潭市| 鹤庆县| 武汉市| 玉门市| 桓仁| 应用必备| 长垣县| 监利县| 惠东县| 新安县| 禹城市| 高安市| 饶阳县| 隆安县| 安庆市| 米林县| 包头市| 安乡县| 托克逊县| 松阳县| 天全县| 沛县| 瑞昌市| 恩平市| 庆元县| 蒙自县| 休宁县| 双牌县| 江安县| 宣汉县| 阿克陶县| 丹东市| 镶黄旗| 合水县| 红河县| 洛扎县| 泸溪县| 望奎县| 抚宁县|