一度に1つの画像のみが表示されるようにギャラリービューを設定する方法はありますか?画像のサムネイル付きのギャラリービューを作成しました。ユーザーが画像をクリックすると、実際に選択した画像を新しいギャラリービューに表示する新しいアクティビティを開始したいと思います。これで、ユーザーが指をスワイプすると、次の画像を見ることができます。これを達成する方法はありますか?
3 に答える
私は同じ問題を抱えていて、うまくいく小さなハックをしました。私の場合、画像は静的だったので、一括名前変更を使用して画像に0から100の番号を付けました。対応するサムネイルでも同じことを行いました。1つはグリッドビューで2つのアクティビティを作成しました。 (ギャラリービューを使用できます)サムとギャラリービューを保持するためにグリッドビューのonclicklistenerを設定して、クリックされたサムのIDを取得し、それをギャラリービューをインテントエクストラとしてアクティビティに渡します。 idを入力し、指定されたidの画像にジャンプします。これを確認してください
getView (int position、View convertView、ViewGroup parent)メソッド で、画像ビューを使用してギャラリービューに「カスタムアダプタ」を使用し、カスタムアダプタの画像ビューの「LayoutParams」に「match_parent」または「fill_parent」を使用できます 。
public View getView(int position, View convertView, ViewGroup parent) {
imageView.setLayoutParams(...);
return imageView;
}
Webで検索しているときに、別の解決策を見つけました。より簡単な解決策は、Galleryクラスをサブクラス化し、onFlingを常にfalseを返すように設定することです。ソリューションへの参照は次のとおりです。
Androidギャラリーでのフリングをフリングごとに1つのアイテムに制限するにはどうすればよいですか?
上記のリンクにリストされているユーザー「SomeoneSomewhere」と「vmihalca」からの入力に基づく私の組み合わせた実装は次のとおりです。
public class SlowGallery extends Gallery {
public SlowGallery(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public SlowGallery(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SlowGallery(Context context) {
super(context);
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
return false;
}
}