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