ギャラリービューのSDカードフォルダから画像を表示する(Android)
-
12-12-2019 - |
質問
私はAndroidアプリケーションを開発しています。私のアプリケーション私はギャラリービューのSDカードフォルダから画像を表示したいです。私はBaseApterを使っています。プロジェクトのResourcesフォルダの描画可能なフォルダから画像を表示しようとしました。 次のコードを試してみました:
public class ImageAdapter extends BaseAdapter {
private Context context;
public static Integer[] imageIDs={
R.drawable.sp1,R.drawable.sp2,
R.drawable.sp3,R.drawable.sp4,
R.drawable.sp5,R.drawable.sp6,
R.drawable.sp7,R.drawable.sp8,
R.drawable.sp9
};
public ImageAdapter(Context context){
this.context=context;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return imageIDs.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View
convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ImageView image=new ImageView(context);
image.setImageResource(imageIDs[position]);
image.setAdjustViewBounds(true);
image.setLayoutParams(new Gallery.LayoutParams(120,120));
image.setScaleType(ImageView.ScaleType.FIT_CENTER);
return image;
}
.
SDカードフォルダから画像を表示してギャラリー形式で表示したい。 そのために私はすべての画像を配列で取得しようとしましたが、それらを配列形式で取得する方法がわかりません。私は次の方法でSDフォルダ内の私の画像にアクセスすることができます。
File path = new File(Environment.getExternalStorageDirectory()+"/download/sp1.jpg");
.
アレイ形式でそれらをすべて取得し、それらをGallery View.orに表示する方法は、配列の代わりにそれらを表示する他の代替方法はありますか?
助けが必要......ありがとう......
解決
下記のコードを参照してください。
if (android.os.Environment.getExternalStorageState().equals(
android.os.Environment.MEDIA_MOUNTED)) {
// It have to be matched with the directory in SDCard
boolean exist = new File(Environment.getExternalStorageDirectory()
+ File.separator + "download").exists();
if (exist) {
File f = new File(Environment.getExternalStorageDirectory()
+ File.separator + "download");
File[] files = f.listFiles();
File file;
for (int i = 0; i < files.length; i++) {
file = files[i];
Bitmap bitmap = decodeFile(file);
return bitmap;
}
}
}
.
このようにすることができます
@Override
public int getCount() {
// TODO Auto-generated method stub
return files.length;
}
@Override
public View getView(int position, View
convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ImageView image=new ImageView(context);
//image.setImageResource(imageIDs[position]);
File file = files[position]
Bitmap bitmap = decodeFile(file);
image.setImageBitmap(bitmap);
image.setAdjustViewBounds(true);
image.setLayoutParams(new Gallery.LayoutParams(120,120));
image.setScaleType(ImageView.ScaleType.FIT_CENTER);
return image;
}
. 他のヒント
画像をビットマップとしてロードする必要があります。
getView(...){
File f = new File(directory, filename);
Bitmap bitmap = BitmapFactory.decodeFile(f.getPath());
...
ImageView image=new ImageView(context);
image.setImageBitmap(bitmap);
}
. 所属していません StackOverflow