Android 如何使用URI';使用imageAdapter进行复制

Android 如何使用URI';使用imageAdapter进行复制,android,Android,我有一个Uri的数组列表,我想在ViewPager中显示 这就是我的代码的外观,我已经展示了如何将URi放入位图和可绘制文件中: public class ImageViewActivity extends Activity { private List<String> selectedItems; private Uri uri1; private Drawable drawable1; private Bitmap bitmap1; @Override public void

我有一个Uri的数组列表,我想在ViewPager中显示

这就是我的代码的外观,我已经展示了如何将URi放入位图和可绘制文件中:

public class ImageViewActivity extends Activity {

private List<String> selectedItems;
private Uri uri1;
private Drawable drawable1;
private Bitmap bitmap1;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_image_view);
    ExtendedViewPager mViewPager = (ExtendedViewPager) findViewById(R.id.view_pager);
    mViewPager.setAdapter(new TouchImageAdapter());

    selectedItems = new ArrayList<String>();

    Intent intent = getIntent();
    selectedItems = intent.getStringArrayListExtra("selectedItems");
    Log.d(ImageViewActivity.class.getSimpleName(), "" + selectedItems.get(0));

    uri1 = Uri.parse( selectedItems.get(0));

    try {
        InputStream inputStream = getContentResolver().openInputStream(uri1);
        drawable1 = Drawable.createFromStream(inputStream, uri1.toString());
    } catch (FileNotFoundException e) {
        drawable1 = getResources().getDrawable(R.drawable.image_for_empty_url);
    }


    Bitmap myBitmap = BitmapFactory.decodeFile(selectedItems.get(0));

    bitmap1 = myBitmap;


}
static class TouchImageAdapter extends PagerAdapter {
    private static int[] images = {};
    @Override
    public int getCount() {
        return images.length;
    }
    @Override
    public View instantiateItem(ViewGroup container, int position) {
        TouchImageView img = new TouchImageView(container.getContext());
        img.setImageResource(images[position]);
        container.addView(img, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
        return img;
    }
    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View) object);
    }
    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == object;
    }
}
public class ViewPagerExampleActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_viewpager_example);
    ExtendedViewPager mViewPager = (ExtendedViewPager) findViewById(R.id.view_pager);
    mViewPager.setAdapter(new TouchImageAdapter());
}

static class TouchImageAdapter extends PagerAdapter {

    private static int[] images = { R.drawable.nature_1, R.drawable.nature_2, R.drawable.nature_3, R.drawable.nature_4, R.drawable.nature_5 };

    @Override
    public int getCount() {
        return images.length;
    }

    @Override
    public View instantiateItem(ViewGroup container, int position) {
        TouchImageView img = new TouchImageView(container.getContext());
        img.setImageResource(images[position]);
        container.addView(img, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
        return img;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View) object);
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == object;
    }

}
}


我想在ImageAdapter中使用我的每个URI,我只是不知道如何将它们“放入”ImageAdapter。

首先从URI获取图像的绝对路径,因为我们无法使用图像URI将图像转换为位图,所以只需借助下面的代码就可以获得绝对路径

  Uri ImageURI = "your image uri goes here";    
  String   selectedImagePath = ImageFilePath.getPath(getApplicationContext(), ImageURI);

  File imageFile =   new File(selectedImagePath);
  Bitmap bitmap  =   BitmapFactory.decodeFile(imageFile.getAbsolutePath());
然后在ImageView中设置图像位图

imageView.setImageBitmap (bitmap);
希望这能解决你的问题