English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Androidプログラミングで大画面のスクロール表示を実装する方法

このAndroidプログラミングの例では、大規模な画像のスクロール表示を実現する方法について説明しています。皆さんに参考にしていただくために、以下のようにご紹介します:

問題:

大きい画像があります。例えば、長さと幅がスクリーンの2倍の大きさです。実現したい機能は、まず画像を中央に表示し、大きいために一時的に一部しか表示されないため、ドラッグすることで滑らかなスクロール(スクロールのリフレッシュの跡が見えにくい)を実現することです。

Googleマップのように、mapViewこのコントロールを使用すると、スクリーン上で全体の地図をドラッグすることができますが、地図の情報量が大きいため、一度にドラッグが速すぎると、スクリーン上に一時的にリフレッシュの跡(灰色の格子)が表示されます。

既存の画像をmapViewで読み込むことを試みましたが、成功しませんでした。その後、Srollviewコントロールと最も一般的なimageViewを使用しても、成功しませんでした。

解決策:

多くの資料を調べた結果、imageViewとonTouchイベントを組み合わせることで解決しました。

重要なコード:

レイアウトファイル内のimageViewコントロールは以下の通りです

<ImageView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:id="@"+id/img"
  android:scaleType="center"
  android:background="#fff"
  android:src="@drawable/picName"
/>

アクティビティファイルの主なコードは以下の通りです

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.xml_name_layout);
  final ImageView switcherView = (ImageView) this.findViewById(R.id.img);
  switcherView.setOnTouchListener(new View.OnTouchListener() {
    public boolean onTouch(View arg0, MotionEvent event) {
      float curX, curY;
      switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
          mx = event.getX();
          my = event.getY();
          break;
        case MotionEvent.ACTION_MOVE:
          curX = event.getX();
          curY = event.getY();
          switcherView.scrollBy((int) (mx - (int) (my - curY));
          mx = curX;
          my = curY;
          break;
        case MotionEvent.ACTION_UP:
          curX = event.getX();
          curY = event.getY();
          switcherView.scrollBy((int) (mx - (int) (my - curY));
          break;
      }
      return true;
    }
  });
}

実現効果は以下の通りです:

元画像:

エミュレータ内の効果:

Androidに関するさらに詳しい内容に興味を持つ読者は、以下の本サイトの特集を参照してください:《Androidグラフィックと画像処理技術の要約》、《Android開発入門と進階チュートリアル》、《Androidデバッグ技術と一般的な問題解決方法のまとめ》、《Androidメディア操作技術の要約(オーディオ、ビデオ、録音など)》、《Android基本コンポーネントの使用方法の要約》、《AndroidビューView技術の要約》、《Androidレイアウトlayout技術の要約》および《Androidコントロールの使用方法の要約》

本文の内容が皆様のAndroidプログラムデザインに役立つことを願っています。

声明:本文の内容はインターネットから取得しており、著作権者に帰属します。インターネットユーザーにより自発的に貢献し、自己でアップロードされたものであり、本サイトは所有権を持ちません。また、人工的な編集は行われておらず、関連する法的責任も負いません。著作権侵害を疑う内容がある場合は、メールを送信してください:notice#oldtoolbag.com(メール送信時、#を@に変更してください。報告を行い、関連する証拠を提供してください。一旦確認がついたら、本サイトは即座に侵害疑いのコンテンツを削除します。)

おすすめ