1. ホーム
  2. アンドロイド

アンドロイドのHorizontalScrollViewの説明

2022-02-28 01:57:14

前文

  この章では、android.widget.HorizontalScrollViewについて、"HorizontalScrollBar"と翻訳、バージョンAndroid 2.3 r1、翻訳:"Tina"、素晴らしい翻訳ドラフトを持ってきてくれてありがとう"Tina"!、この章は、android.widget.HorizontalScrollViewについてのものです Android API中国語の翻訳に参加することを楽しみにして、联系我[email protected]

ステートメント

  転載は自由ですが、記事の原典は残しておいてください :)

    JavaEyeのコミュニティです。 http://www.iteye.com/

    Android中国語翻訳グループ。 http://goo.gl/6vJQl

全文

  I. 構造

パブリッククラス HorizontalScrollView extends フレームレイアウト

java.lang.Object(ジャバランゲージオブジェクト

android.view。

         android.view.ViewGroup(ビューグループ

                   android.widget.FrameLayout

                            android.widget.HorizontalScrollView。

  II. 概要

ユーザーがスクロールバーを使用して表示できるように、ビュー階層を保持するレイアウト用コンテナで、携帯電話の画面よりも大きなビュー構造を可能にします。 HorizontalScrollView FrameLayout (フレームレイアウト) で、その子はスクロールすると全体として移動し、その子自身は複雑な階層を持つレイアウトマネージャになることができます。よくある用途としては、子項目が水平方向に並んでいて、ユーザーがスクロールすることで、水平方向に並んだトップレベルの子項目が表示されるような場合です (アイテム) .

HorizontalScrollView とは比較できません。 リストビュー が同時に使用されるため リストビュー には独自のスクロールバー設定があります。最も重要なことは、非常に大きな リスト 両者を併用する場合は リストビュー は、いくつかの重要な最適化で失敗します。この失敗の原因は HorizontalScrollView は、強制的に リストビュー 使用方法 HorizontalScrollView 単体で提供されるスペースコンテナ( 無限コンテナ ) で全リストを表示します。

<スパン 同様にして TextView は独自のスクロールバーも持っているので スクロールビュー . しかし、この2つは一緒に使うことができ、その結果、より大きなコンテナの中にテキストビューを表示することができます。

HorizontalScrollView 水平方向のスクロールにのみ対応しています。

  III. パブリックメソッド

パブリックボイド 追加表示 (ビューの子)

子ビューを追加します。この子ビューがレイアウトパラメータで設定されていない場合は ビューグループ をデフォルトのパラメータで指定します。

パラメータ

子         追加する子ビュー

パブリックボイド アドビュー (ビュー子, intインデックス)

子ビューを追加します。この子ビューがレイアウトパラメータで設定されていない場合は ビューグループ をデフォルトのパラメータで指定します。

パラメータ

子         追加する子ビュー

インデックス       結合する子ビューの位置

パブリックボイド アドビュー (View child, int index, ViewGroup.LayoutParams params)

指定されたレイアウトパラメータを持つ子ビューを追加します。

<スパン パラメータ

子         追加する子ビュー

インデックス       結合する子ビューの位置

パラメータ   子ビューのレイアウトパラメータ

パブリックボイド アドビュー (ビュー子、ViewGroup.LayoutParams params)

指定されたレイアウトパラメータを持つ子ビューを追加します。

<スパン パラメータ

子         追加する子ビュー

パラメータ   子ビューのレイアウトパラメータ

public boolean arrowScroll (int 方向)

左右の矢印がクリックされたときのスクロールバーの処理に対応する。

<スパン パラメータ

方向 押された矢印キーに対応する方向 <スパン 押された矢印キーに対応する方向

戻り値

このイベントが正常に終了した場合、return それ以外の場合は false .

パブリックボイド computeScroll ()

親ビューから呼び出され、必要に応じてその子ビューに値を適用します ( mScrollX mScrollY ) が更新されます。通常、親ビューの中にある子ビューでは Scroller オブジェクトを作成してスクロール操作を実装すると、このメソッドが呼び出されます。

public boolean ディスパッチキーイベント (キーイベント)

フォーカスを得る事が出来る順番に、次のビューにキーイベントをディスパッチします(ビューツリーのトップから、現在フォーカスを持つビューまで)。このビューがフォーカスビューである場合、イベントはそれ自身にディスパッチされます。そうでなければ、イベントは次のノードにディスパッチされます。このメソッドは、すべてのキーストローク・リスナーを同時にタッチします。

<スパン パラメータ

イベント       割り当てられたイベント .

戻り値

イベントが処理された場合 そうでない場合は false

パブリックボイド ドロー (キャンバス)

指定されたキャンバスにビュー (およびそのサブビュー) を手動で描画します。 (キャンバス) . このビューは、この関数を呼び出す前に全体のレイアウトが完了している必要があります。ビューを実装する場合、このメソッドを継承する必要はありません。

onDraw(Canvas)

<スパン パラメータ

キャンバス    ビューを描画するキャンバス

public boolean executeKeyEvent (キーイベント)

このメソッドは、キーイベントによるスクロール操作を実装する必要がある場合に呼び出すことができます。ビューのツリー構造からイベントをディスパッチするのと同様の効果が得られます。

<スパン パラメータ

イベント       実行するイベント

戻り値

イベントが処理された場合 そうでない場合は false

パブリックボイド 投げる (int velocityX)

のスクロールビューが表示されます。 フライング ジェスチャーを行います。

<スパン パラメータ

ベロシティX          方向の初期速度。正の値は、指 / カーソルは画面の右側にスライドし、コンテンツは相対的に左側にスクロールする。

public boolean フルスクロール (int 方向)

を押したときの処理をします。 "ホーム/エンド"。 <スパン ショートカットキー その後のスクロールの応答。このメソッドはビューを左右に移動し、移動後に表示される一番左または一番右のコンポーネントにフォーカスを与えます。フォーカスを取得するのに適したコンポーネントがない場合は、この スクロールビュー はフォーカスを取り戻します。

<スパン パラメータ

方向          スクロールの方向。 フォーカス_レフト は、ビューの左側に移動することを示します。 フォーカス_ライト <スパン は、ビューの右側に移動することを意味します

戻り値

このメソッドが (消費される) キー押下イベントを返します。 を返し、それ以外の場合は false .

public int getMaxScrollAmount ()

戻り値

左右の矢印を押したときに、ビューがスクロールできる最大値。

public boolean isFillViewport ()

とは スクロールビュー はビューポートに合わせて引き伸ばされます ( ビューポート )サイズになります。

戻り値

コンテンツがビューポートを満たす場合は、次のようになります。 それ以外の場合は false .

public boolean isSmoothScrollingEnabled ()

戻り値

矢印の方向にスクロールする際に、スクロールを滑らかにする効果を表示するかどうか。

public boolean onInterceptTouchEvent (モーションイベント ev)

このメソッドを使用すると、タッチスクリーン操作によって発生するすべてのイベントをインターセプトできます。つまり、子アイテムに割り当てられたイベントを監視し、現在のジェスチャーの所有権を取得することができます。

<スパン このメソッドは慎重に使用してください。との互換性がないため View.onTouchEvent(MotionEvent) は、かなり複雑な相互作用の効果があります。どちらも同時に正しく実装する必要があります。イベントは、以下の順番でメソッドに受け取られます。

   1. を受信します。 ダウン イベント

   2. イベントは、ビューグループの子ビューで処理されるか、ビューグループ自身の onTouchEvent() メソッドを実装しなければならないことを意味します。 onTouchEvent() を返します。 他のジェスチャーを受け入れることができるようになります (処理するために親ビューを探すのではなく)。 onTouchEvent() 戻り値 を受け取ることができなくなります。 onInterceptTouchEvent() で、タッチアクションの処理はすべて通常通り行わなければなりません。 onTouchEvent() の中にある

   3. リターンした場合 false の場合、その後の各イベント (すべて アップ イベント(最後の アップ ) はまずここに渡され、その後ターゲットオブジェクトに渡されます ビュー onTouchEvent() .

   4. リターンした場合 テュア を指定した場合、以下のイベントは発生しません: ターゲット ビュー は同じイベントを受け取りますが ACTION_CANCEL アクションを実行します。これ以降のすべてのイベントは、あなたの onTouchEvent() メソッドを呼び出すと、ここに表示されなくなります。

<スパン パラメータ

ev    ツリー構造下にディスパッチされるアクションイベント

戻り値

アクションイベントが子ビューからインターセプトされて onTouchEvent() カレントに割り当てる ビューグループ を返します。 . 現在のターゲットには ACTION_CANCEL イベントが発生し、それ以降のメッセージはここに渡されません。

public boolean オンタッチイベント (モーションイベント ev)

このメソッドは、タッチスクリーン操作のイベントを処理するために使用されます。

パラメータ

ev    アクションイベント

戻り値

イベントの処理に成功した場合、以下の値を返します。 を返し、それ以外の場合は false

public boolean ページスクロール (int 方向)

を押したときの処理をします。 "ページアップ/ダウン"。 <スパン ショートカット その後のスクロールの応答。このメソッドは、ビューを左右に 1 ページ分スクロールし、移動後に表示される最も左または最も右のコンポーネントにフォーカスを与えます。フォーカスを得るのに適したコンポーネントがない場合、この スクロールビュー はフォーカスを取り戻します。

<スパン パラメータ

方向          スクロールの方向。 フォーカス_レフト ビューの左側に1ページ移動することを示す FOCUS_RIGHT ビューの右側に1ページ移動することを示す

戻り値

このメソッドが (消費される) キー押下イベントを返します。 を返し、それ以外の場合は false .

パブリックボイド requestChildFocus (子ビュー, フォーカスされたビュー)

このメソッドは、親ビューの子ビューがフォーカスを取得したいときに呼び出されます。

パラメータ

子         フォーカスを取得するための子ビュー。このビューは、フォーカスビューを含みますが、フォーカスそのものである必要はありません。

フォーカス   実際にフォーカスを持つ子ビューの下位ビュー。

public boolean requestChildRectangleOnScreen (リクエストチャイルドレクタングルオンスクリーン) (View child, Rect rectangle, boolean immediate)

このメソッドは、グループ内の子ビューが画面上の矩形内に配置される必要がある場合に呼び出されます。このメソッドをオーバーライドすると ビューグループ は以下のように確認できる。

    * サブアイテムはグループの直属の子になる

    * <スパン 矩形は、サブプロジェクトの座標系になります

このメソッドのオーバーロード ビューグループ は、以下をサポートする必要があります。

    矩形がすでに表示されている場合は、何も変更されません。

    * 矩形領域が完全に見えるようにするために、ビューはスクロール可能になります

パラメータ

子         リクエストを送信した子ビュー

長方形         サブプロジェクトの座標系内の矩形、すなわち、このサブプロジェクトが画面上に配置されることを望む場所

即時      に設定します。 アニメーションを無効にし、スクロールバーの動きを滑らかにする

戻り値

スクロール操作を行ったグループ ( グループ ) を処理するかどうか

パブリックボイド requestLayout ()

このメソッドは、ビューレイアウトを無効にするような変更があったときに呼び出されます。これは、ビューツリーのレイアウトパスを計画します。

パブリックボイド スクロールトゥ (int x, int y)

スクロール後のビューの位置を設定します。これにより onScrollChanged(int,int,int,int) を呼び出すと、このビューも無効になります。

このバージョンでは、スクロールを子ビューのスコープにロックするようにしました。

パラメータ

x      <スパン にスクロールするには x <スパン 所在地

y      <スパン にスクロールするには y 位置

パブリックボイド setFillViewport (boolean fillViewport)

ビューポートに合わせてコンテンツの幅を広げるかどうかを設定します。 ビューポート ).

<スパン パラメータ

フィルビューポート     に設定します。 はコンテンツの幅が引き伸ばされることを意味し、それ以外の場合は false .

パブリックボイド setOverScrollMode (int モード)

ビューに設定する オーバースクロール モードがあります。有効な オーバースクロール モードは method. (デフォルト値)であれば OVER_SCROLL_ALWAYS (ビューコンテンツがコンテナより大きい場合にのみ実行可能です オーバースクロール ) と OVER_SCROLL_IF_CONTENT_SCROLLS . この設定は、ビューがスクロール可能である場合にのみ機能します。

<スパン パラメータ

モード       ビューの新しい オーバースクロール モード値

パブリックボイド setSmoothScrollingEnabled (boolean smoothScrollingEnabled) です。

矢印が押されたときに、スムーズスクロール効果(アニメーション効果)をレンダリングするかどうかを設定します。

<スパン パラメータ

smoothScrollingEnabled          スムーズスクロール効果をレンダリングするかどうかを設定する

public final void smoothScrollBy (int dx, int dy)

と似ています。 OVER_SCROLL_NEVER スクロールはスムーズだが、瞬間的ではない(注:瞬間的なスクロールとは、スクロールの過程を表示せず、スクロール後に到達した位置を直接表示することを意味する)。

<スパン パラメータ

dx    <スパン をスクロールするには X <スパン 軸の画素差(訳者注:水平方向の画素差)。

ダイ    をスクロールするには Y <スパン 軸の画素差(訳者注:垂直方向の画素差)。

public final void smoothScrollTo (int x, int y)

と似ています。 scrollBy(int, int) が、インスタントスクロールではなく、スムーススクロールをレンダリングします。

<スパン パラメータ

x      の位置に到達するようにスクロールします。 x 軸の値

y      <スパン の位置までスクロールしてください。 Y <スパン 軸の値

  IV. プロテクトされたメソッド

プロテクトされたint computeHorizontalScrollOffset (水平スクロールオフセット) ()

水平スクロールバーのスライダーのオフセット値を計算します。この値は、スクロールする際のスライダーの位置を計算するために使用されます。

オフセット値の範囲は任意の単位で表現可能ですが、その範囲は computeHorizontalScrollRange() computeHorizontalScrollExtent() の単位を指定します。

デフォルトのオフセット値は、ビュースクロールのオフセット差分です。

戻り値

スクロールバー・スライダーの水平方向のオフセット値

protected int computeHorizontalScrollRange (水平スクロール範囲) ()

スクロールビュー スクロールビューのスクロール可能な水平方向の範囲は、すべての子ビューの幅の合計となります。

戻り値

水平スクロールバーで表される水平方向の全スクロール範囲

protected int computeScrollDeltaToGetChildRectOnScreen(スクロールデルタトゥゲットチャイルドレクトオンスクリーン (レクト rect)

を計算する。 X サブビューの矩形全体を画面に表示するための (または、矩形が画面幅より広い場合は、少なくとも最初の画面サイズを埋めるための) 方向スクロールの総和です。

<スパン パラメータ

レクト          矩形

戻り値

ローリング差分

protected float getLeftFadingEdgeStrength ()

左のグラデーションエッジの強度または密度を返します。強度の値は 0.0 (グラデーションなし)から 1.0 (フルフェード)の間にある。デフォルトの実装では 0.0 または 1.0 は、中間値を返すことなく サブクラスは、スクロール動作にスムーズなフェードを与えるために、サブメソッドをオーバーライドする必要があります。

戻り値

の間にある左グラデーションの強さを指定します。 0.0f 1.0f の間の浮動小数点値です。

protected float getRightFadingEdgeStrength ()

右側グラデーションのエッジの強度または密度を返します。強度の値は 0.0 (グラデーションなし)から 1.0 (フルグラデーション)。デフォルトの実装では 0.0 または 1.0 は、中間値を返すことなく サブクラスは、スクロール動作にスムーズなフェードを提供するために、このメソッドをオーバーライドする必要があります。

戻り値

の間にある、右のグラデーションの強さ。 0.0f 1.0f の間の浮動小数点値です。

protected void 子メジャー (View child, int parentWidthMeasureSpec, int parentHeightMeasureSpec)

子ビューに自分自身を測定するように要求するには、ビューの MeasureSpec とその追加内容を考慮する。 getChildMeasureSpec を計算することで、重要な役割を担っています。 MeasureSpec を作成し、子ビューに渡します。

<スパン パラメータ

子         測定する子ビュー

parentWidthMeasureSpec     <スパン このビューに必要な幅

parentHeightMeasureSpec    このビューの高さ要件

protected void マージン付き測定子 (View child, int parentWidthMeasureSpec, int widthUsed, int parentHeightMeasureSpec, int heightUsed)

子ビューに自分自身を測定するように要求するには、ビューの MeasureSpec や追加コンテンツ、エッジセクションも考慮する。子には MarginLayoutParams (マージンレイアウトパラメータ)を指定します。 getChildMeasureSpec を計算するため、重要な役割を担っています。 MeasureSpec を作成し、子ビューに渡します。

<スパン パラメータ

子         測定する子ビュー

parentWidthMeasureSpec     <スパン このビューに必要な幅

幅使用      親ビュー(および場合によっては他の子ビュー)によって占有される追加の水平スペース

parentHeightMeasureSpec    このビューの高さ要件

ハイトユーズド     親ビュー(および、場合によっては他の子ビュー)が占有する余分な垂直スペース

protected void オンレイアウト (boolean changed, int l, int t, int r, int b)

このビューが、各子ビューにサイズと位置を割り当てたい場合は レイアウト メソッドが呼び出されます。子項目の派生クラスはこのメソッドをオーバーライドして、それぞれの子項目の レイアウト .

パラメータ

変更           このビューのサイズまたは位置が変更されました

l       左境界線の位置、親ビューからの相対位置

t      <スパン 上境界線の位置、親ビューからの相対位置

r      <スパン 右境界線の位置、親ビューからの相対位置

b      <スパン ボーダーの下側の位置、親ビューからの相対位置

protected void オンメジャー (int widthMeasureSpec, int heightMeasureSpec)

このメソッドを呼び出すと、自分自身と含まれるコンテンツのサイズ(幅と高さ)が決定されます。このメソッドは メジャー(int,int) で、含まれるコンテンツの正確なサイズを取得するには、サブクラスでオーバーライドする必要があります。

注)このメソッドをオーバーライドする場合は、必ず setMeasureDimension(int,int) を保存するために 表示方法 のサイズを指定します。そうでない場合は メジャー(int,int) によって投げられた IllegalStateException (不正な状態のエラー)。スーパークラス onMeasure(int,int) を呼び出すことができる。

ベースクラスのサイズを確認するメソッドを書きます。デフォルトでは、その背景のサイズに基づき、以下の場合を除きます。 メジャーセップス は、より大きな高さまたは幅を許可する。サブクラスは onMeasure(int,int) を使用することで、より正確に内容の大きさを測定することができます。

このメソッドがオーバーライドされた場合、そのサブクラスはその高さと幅が少なくとも 表示 で指定された最小値に getSuggestedMinimumHeight() getSuggestedMinimumWidth() <スパン (取得)します。

パラメータ

widthMeasureSpec         <スパン 前のレイヤーのサイズに影響される水平方向のスペースの必要性。以下も参照。 View.MeasureSpec(ビューメジャースペック .

heightMeasureSpec        前のレイヤーのサイズに影響される垂直方向のスペースの必要性。以下も参照。 View.MeasureSpec(ビューメジャースペック .

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

されているオブジェクトの値です。 scrollTo(int, int) を適用するよう呼びかける。 オーバースクロール の結果に応じて

パラメータ

スクロールX     <スパン 新規 X スクロールピクセルの値

スクロールY     <スパン 新規 Y スクロールピクセル値

クランプX        いつ スクロールX オーバースクロール の境界で制約される場合

クランプY        いつ スクロールY オーバースクロール の境界で制約される場合

protected boolean onRequestFocusInDescendants (int 方向, Rect previouslyFocusedRect)

のとき スクロールビュー を使用する場合は、そのビューの子ビューでフォーカスを探すときに、画面外のコンポーネントにフォーカスを与えないように注意する必要があります。これは、デフォルトの ビューグループ の実装があり、そうでない場合はこの動作がデフォルトとして設定されます。

パラメータ

方向          を指定することができます。 FOCUS_UP FOCUS_DOWN , FOCUS_LEFT <スパン または FOCUS_RIGHT

前回フォーカスしたレクト フォーカスがどこから来るのかの良いヒント(現在のビューの座標系)を与える矩形。ヒントがない場合、それは ヌル .

戻り値

フォーカスが当たったのかどうか。

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

いつ 表示 がサイズを変更すると、このメソッドが呼び出されます。もし ビュー が追加されたばかりの場合、以前の値である 0 <スパン .

パラメータ

w ビュー の現在の幅を表示します。

h ビュー <スパン の現在の高さを示します。

oldw ビュー サイズ変更前の横幅

oldh ビュー サイズ変更前の高さ

  V. 追加事項

    論文紹介

AndroidのHorizontalScrollviewの例

終了

  今回で2回目の長文翻訳となるquot;Tina" 前回は リストビュー 今回もありがとうございました。


  Androidプラットフォームのフレームワークでは、ユーザーにデータを表示するために、ListView、GirdView、ScrollViewなどのスクロール可能なビューが提供されています。Androidプラットフォームのフレームワークでは、ListView, GirdView, ScrollViewなどのスクロールビューコントロールが提供されており、これらは通常最も多く使用されるものです。以下、HorizontalScrollViewの使い方と注意点を紹介します。


     HorizontalScrollViewは フレームレイアウト   と つまり、その下にしか子コントロールを置くことができません この子コントロールには、多くのデータコンテンツが含まれる可能性があります。この子コントロール自体がレイアウトコントロールであり、データを表示するために使用される非常に多くの他のコントロールを含むことが可能である。このレイアウト・コントロールは、通常、水平レイアウトの
overScrollBy(int, int, int, int, int, int, int, int, boolean)
 TextViewもスクロール可能なビューコントロールなので、HorizontalScrollViewは通常必要ありません。

     以下は、HorizontalScrollViewにたくさんの画像を入れて、スクロールさせる例です。
  1. オーバーライド
  2. プロテクト 無効  onCreate(Bundle savedInstanceState) {。  
  3. スーパー .onCreate(savedInstanceState)を実行します。  
  4.       setContentView(R.layout.activity_main)を設定します。  
  5.        mLinearLayout = (LinearLayout) findViewById(R.id.mygallery);  
  6.       ファイル externalDir = Environment.getExternalStorageDirectory()。  
  7.       文字列 photosPath = externalDir.getAbsolutePath() +。  "/test/" ;  
  8.       ファイル photosFile =  新しい  ファイル(photosPath)を指定します。  
  9. について  (ファイル photoFile : photosFile.listFiles()) {。  
  10.               mLinearLayout.addView(getImageView(photoFile.getAbsolutePath()));  
  11.       }  
  12. }  
  13. プライベート  View getImageView(String absolutePath) { (ビューの絶対パス)  
  14.       ビットマップ bitmap = decodeBitmapFromFile(absolutePath,  <スパン 200 ,  200 );  
  15.     LinearLayout レイアウト =  新規  LinearLayout(getApplicationContext())を使用します。  
  16.     layout.setLayoutParams(  新規  LayoutParams( 250 ,  <スパン 250 ));  
  17.     layout.setGravity(Gravity.CENTER)を実行します。  
  18.       イメージビュー imageView =  新しい  ImageView( この );  
  19.       imageView.setLayoutParams(  新規  LayoutParams( 200 , <スパン 200 ));  
  20.       imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);  
  21.       imageView.setImageBitmap(bitmap)を実行します。  
  22.       layout.addView(imageView)を実行します。  
  23. 戻る  のレイアウトになります。  
  24. }  
  25. プライベート  Bitmap decodeBitmapFromFile(String absolutePath,  int  reqWidth,  int  reqHeight) {  
  26.     ビットマップ bm =  ヌル ;  
  27. // 最初に inJustDecodeBounds=true でデコードし、寸法をチェックする。
  28. 最終  BitmapFactory.Options オプション =.  新規  BitmapFactory.Options()を使用します。  
  29.      オプションのinJustDecodeBounds =。   ;  
  30.      BitmapFactory.decodeFile(absolutePath,options)を実行します。  
  31. // inSampleSizeを計算する
  32.      inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);  
  33. // inSampleSizeが設定されたビットマップをデコードする。
  34.      オプション inJustDecodeBounds = 。  false  ;  
  35.      bm = BitmapFactory.decodeFile(absolutePath, options);  
  36. 戻る  bmです。   
  37. }  
  38. プライベート int  calculateInSampleSize(Options オプション,  int  reqWidth,  
  39. int  reqHeight) {  
  40. // 画像の生の高さと幅
  41. 最終 int  height = options.outHeight;  
  42. 最終 int  width = options.outWidth;  
  43. int  inSampleSize =  <スパン 1 ;  
  44. もし  (height > reqHeight || width > reqWidth) {。  
  45. もし  (幅 > 高さ) {  
  46.        inSampleSize = Math.round(( フロート ) 高さ / (  <スパン フロート )reqHeight)となります。    
  47.       }  さもなければ  {  
  48.        inSampleSize = Math.round(( フロート ) 幅 / (  <スパン フロート )reqWidth)となります。    
  49.       }    
  50.      }  
  51. 戻る  inSampleSizeを指定します。   
  52. }  

     表示する画像は、外部SDCardのtestディレクトリに配置します。上のサンプルプログラムでは、大きな画像のサムネイル版しか表示されませんが、これをご存じない方のために http://blog.csdn.net/tibib/article/details/8726486
HorizontalScrollViewは、指定した位置(x、0)にスクロールするように設定することもでき、その子コントロールはそれに追従します。
  1. 新しい  ハンドラ().postDelayed() 新しい  Runnable() {  
  2. オーバーライド
  3. パブリック ボイド  run() {  
  4. // 800px の水平スクロールを直接行うか、より滑らかな効果を得たい場合は smoothScrollTo(int x, int y) を使用します。
  5.         hsv.scrollTo( 800 ,  <スパン 0 );  
  6.     }  
  7. },  2000 );