これは、GridViewをギャラリー化するものなので、『GalleryAdapter』という名前にしました。
今回はこれの使い方をお届けします。
※このGalleryAdapterは現在バージョンアップされ、メソッド名等が変更されています。使い方につきましては基本的には同じですが、変更部分は GalleryAdapter をバージョンアップをご覧ください。
[実行テストの動画]
[出来ること] GridView を使って画像のサムネイルを統一したサイズで表示。さらに画像を読み込んでいる間はくるくる回るローディング画像を表示し、しかも非同期で実行。そして、メモリーが不足しないように読み込みも縮小して画像を取得する。
つまり、「できるだけ使うのが快適に^-^」というコンセプトです。
では、使い方です。
まずは、以下のようにレイアウトxmlの中に<GridView>を作成します。
[Xml]
<GridView
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:numColumns="auto_fit"
android:columnWidth="32dp"
android:stretchMode="columnWidth"
android:gravity="center" />
そして、次にActivity の中に以下のようにGridViewとGalleryAdapterのメンバ変数を作成してください。(これは後で書きますが、onItemClickイベント内からでも参照できるようにするためです。)
[Activity]
public class YourActivity extends Activity {
private GridView gridView;
private GalleryAdapter galleryAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {}
//以下省略
}
そして、次にonCreate()内で以下の3つの作業をします。
1.表示したい画像IDをArrayList<Integer>にセット。
2.それを使って GalleryAdapter のインスタンスをつくる。
3.さらにそれをGridViewにセット。
[onCreate]
// 1.表示したい画像IDをArrayList<Integer>にセット。
ArrayList<Integer> resourceIds = new ArrayList<Integer>();
resourceIds.add(R.drawable.example0);
resourceIds.add(R.drawable.example1);
resourceIds.add(R.drawable.example2);
// 2.それを使って GalleryAdapter のインスタンスをつくる。
galleryAdapter = new GalleryAdapter(this, resourceIds);
// 3.さらにそれをGridViewにセット。
gridView = (GridView) findViewById(R.id.gridview);
gridView.setAdapter(galleryAdapter);
これでオッケーです。
では、後の細かいところは以下の3つのメソッドで紹介しましょう。
[メソッド]
・setProgressBarStyle(int style)
画像が読み込まれるまでの間に表示するくるくる回るローディング画像を大きさを設定します。
パラメータは、以下の4つの定数を使ってください。
GalleryAdapter.PROGRESS_STYLE_NONE ・・・画像なし
GalleryAdapter.PROGRESS_STYLE_SMALL ・・・画像小GalleryAdapter.PROGRESS_STYLE_MEDIUM ・・・画像中
GalleryAdapter.PROGRESS_STYLE_LARGE ・・・画像大
・add(int resourceId)
・add(int resourceId, int index)
ギャラリーに画像を追加します。画像のIDを使います。
上のものはギャラリーの最後に、下は好きな位置に追加ができます。
・remove(index)
ギャラリーから画像を削除します。
注:ここは画像IDではなく、何番目の画像かを指定してください。
メソッドは以上です。
では、 onItemClickイベント時(ギャラリーの中の画像をタッチした時)の注意点を最後にサンプルを使って説明します。
[onItemClick]
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
galleryAdapter.add(R.drawable.select_player_rabbit_unavailable, position); //(1)
galleryAdapter.remove(position); //(2)
gridView.invalidateViews(); //(3)
}
});
まず、(1)(2)(3) で使われている galleryAdapter と gridView はActivityのメンバ変数にすることでイベント内からでも参照ができます。
そして、(3)の gridView.invalidateViews();。
これを呼ぶことで追加 or 削除した後の GridView をリフレッシュすることができます。
以上になります。
今後はBitmap からでも追加できるようにしたいと考えています。
では、ダウンロードはいつものごとくGitHubからどうぞ♪
[GitHub]
https://github.com/SUKOHI/GalleryAdapter
お疲れ様でした。
0 件のコメント:
コメントを投稿