Android 使用不可绘制图像的文件路径创建图像库时出现问题

Android 使用不可绘制图像的文件路径创建图像库时出现问题,android,Android,因此,我试图建立一个画廊,显示从SD卡上的文件夹,而不是我的绘图文件夹中的图像的图像。我有一个文件路径数组,我试图使用图库中每个图像的文件uri,但我遇到一个运行时错误,导致应用程序在这一行崩溃: iView.setImageURI(Uri.fromFile(新文件(files.get(arg0))) 这里是LogCat中的部分错误:(它是巨大的,所以我没有包括全部内容) 下面是我的代码,有人知道我做错了什么吗 ImageSwitcher iSwitcher; private A

因此,我试图建立一个画廊,显示从SD卡上的文件夹,而不是我的绘图文件夹中的图像的图像。我有一个文件路径数组,我试图使用图库中每个图像的文件
uri
,但我遇到一个运行时错误,导致应用程序在这一行崩溃:

iView.setImageURI(Uri.fromFile(新文件(files.get(arg0)))

这里是LogCat中的部分错误:(它是巨大的,所以我没有包括全部内容)

下面是我的代码,有人知道我做错了什么吗

    ImageSwitcher iSwitcher;
    private ArrayList<String> files = new ArrayList<String>();
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    setContentView(R.layout.media);
     files.add("/mnt/sdcard/DCIM/Camera/IMG_20111124_130713.jpg");
            files.add("/mnt/sdcard/DCIM/Camera/IMG_20111031_072817.jpg");
            files.add("/mnt/sdcard/DCIM/Camera/IMG_20111031_072750.jpg");
    iSwitcher = (ImageSwitcher) findViewById(R.id.ImageSwitcher01);
            iSwitcher.setFactory(this);
            iSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,
                    android.R.anim.fade_in));
            iSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,
                    android.R.anim.fade_out));

            Gallery gallery = (Gallery) findViewById(R.id.Gallery01);
            gallery.setAdapter(new ImageAdapter(this));
            gallery.setOnItemClickListener(new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                        long arg3) {
                    //iSwitcher.setImageResource(Uri.fromFile(new File(files.get(arg2))));
                    iSwitcher.setImageURI(Uri.fromFile(new File(files.get(arg2))));
                }
            });
    }

    public class ImageAdapter extends BaseAdapter {

            private Context ctx;

            public ImageAdapter(Context c) {
                ctx = c; 
            }

            @Override
            public int getCount() {

                return files.size();
            }

            @Override
            public Object getItem(int arg0) {

                return arg0;
            }

            @Override
            public long getItemId(int arg0) {

                return arg0;
            }

            @Override
            public View getView(int arg0, View arg1, ViewGroup arg2) {

                ImageView iView = new ImageView(ctx);

//THE LINE BELOW IS THE LINE THAT CAUSES THE ERROR IN LOGCAT
                iView.setImageURI(Uri.fromFile(new File(files.get(arg0))));
                iView.setScaleType(ImageView.ScaleType.FIT_XY);
                iView.setLayoutParams(new Gallery.LayoutParams(150, 150));
                return iView;
            }

        }

        @Override
        public View makeView() {
            ImageView iView = new ImageView(this);
            iView.setScaleType(ImageView.ScaleType.FIT_CENTER);
            iView.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
            iView.setBackgroundColor(0xFF000000);
            return iView;
        }
ImageSwitcher是开关;
私有ArrayList文件=新建ArrayList();
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.media);
添加(“/mnt/sdcard/DCIM/Camera/IMG_20111124_130713.jpg”);
添加(“/mnt/sdcard/DCIM/Camera/IMG_20111031_072817.jpg”);
添加(“/mnt/sdcard/DCIM/Camera/IMG_20111031_072750.jpg”);
iSwitcher=(ImageSwitcher)findViewById(R.id.ImageSwitcher01);
iSwitcher.setFactory(本);
iSwitcher.setInAnimation(AnimationUtils.loadAnimation)(此,
android.R.anim.fade_in);
iSwitcher.setOutAnimation(AnimationUtils.loadAnimation)(此,
android.R.anim.fade_out);
画廊画廊=(画廊)findViewById(R.id.Gallery01);
gallery.setAdapter(新的ImageAdapter(本));
gallery.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共链接(AdapterView arg0、视图arg1、内部arg2、,
长arg3){
//iSwitcher.setImageResource(Uri.fromFile(新文件(files.get(arg2)));
iSwitcher.setImageURI(Uri.fromFile(新文件(files.get(arg2)));
}
});
}
公共类ImageAdapter扩展了BaseAdapter{
私有上下文ctx;
公共图像适配器(上下文c){
ctx=c;
}
@凌驾
public int getCount(){
返回文件.size();
}
@凌驾
公共对象getItem(int arg0){
返回arg0;
}
@凌驾
公共长getItemId(int arg0){
返回arg0;
}
@凌驾
公共视图getView(int arg0、视图arg1、视图组arg2){
ImageView iView=新的ImageView(ctx);
//下面的行是导致LOGCAT中出现错误的行
iView.setImageURI(Uri.fromFile(新文件(files.get(arg0)));
iView.setScaleType(ImageView.ScaleType.FIT_XY);
iView.setLayoutParams(新图库.LayoutParams(150150));
返回iView;
}
}
@凌驾
公共视图makeView(){
ImageView iView=新的ImageView(本);
iView.setScaleType(ImageView.ScaleType.FIT_CENTER);
iView.setLayoutParams(新的ImageSwitcher.LayoutParams(LayoutParams.FILL\u父级,LayoutParams.FILL\u父级));
iView.setBackgroundColor(0xFF000000);
返回iView;
}

这个想法是从SD卡上的文件创建一个更亮的位图。查看此链接:

对不起,这是什么意思?我们的想法是从SD卡上的文件创建一个更亮的位图。请查看此链接:。谢谢您链接到的SO问题中的代码!当你有机会让其他人看到这一点时,请修改你的答案。再次感谢!
    ImageSwitcher iSwitcher;
    private ArrayList<String> files = new ArrayList<String>();
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    setContentView(R.layout.media);
     files.add("/mnt/sdcard/DCIM/Camera/IMG_20111124_130713.jpg");
            files.add("/mnt/sdcard/DCIM/Camera/IMG_20111031_072817.jpg");
            files.add("/mnt/sdcard/DCIM/Camera/IMG_20111031_072750.jpg");
    iSwitcher = (ImageSwitcher) findViewById(R.id.ImageSwitcher01);
            iSwitcher.setFactory(this);
            iSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,
                    android.R.anim.fade_in));
            iSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,
                    android.R.anim.fade_out));

            Gallery gallery = (Gallery) findViewById(R.id.Gallery01);
            gallery.setAdapter(new ImageAdapter(this));
            gallery.setOnItemClickListener(new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                        long arg3) {
                    //iSwitcher.setImageResource(Uri.fromFile(new File(files.get(arg2))));
                    iSwitcher.setImageURI(Uri.fromFile(new File(files.get(arg2))));
                }
            });
    }

    public class ImageAdapter extends BaseAdapter {

            private Context ctx;

            public ImageAdapter(Context c) {
                ctx = c; 
            }

            @Override
            public int getCount() {

                return files.size();
            }

            @Override
            public Object getItem(int arg0) {

                return arg0;
            }

            @Override
            public long getItemId(int arg0) {

                return arg0;
            }

            @Override
            public View getView(int arg0, View arg1, ViewGroup arg2) {

                ImageView iView = new ImageView(ctx);

//THE LINE BELOW IS THE LINE THAT CAUSES THE ERROR IN LOGCAT
                iView.setImageURI(Uri.fromFile(new File(files.get(arg0))));
                iView.setScaleType(ImageView.ScaleType.FIT_XY);
                iView.setLayoutParams(new Gallery.LayoutParams(150, 150));
                return iView;
            }

        }

        @Override
        public View makeView() {
            ImageView iView = new ImageView(this);
            iView.setScaleType(ImageView.ScaleType.FIT_CENTER);
            iView.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
            iView.setBackgroundColor(0xFF000000);
            return iView;
        }