使用默认 android 图片查看器显示图片
Using the default android image Viewer to show pics
我知道我可以使用默认 android 图片查看器打开图片,例如 new Intent(Intent.ACTION_VIEW)
等
如果我打开图片然后滑动 left/right 我会看到设备上保存的其他图片。
例如,如果我打开其中一张 whatsapp 图片,滑动 left/right 我会看到保存在 whatsapp 文件夹中的所有其他图片。
有没有办法将默认的android图片查看器传递一个List
/Array
的uri,以防止用户刷left/right看到全部设备上的图像?
我希望用户滑动 left/right 并且只看到我允许他看到的图像。
提前致谢
最好的情况是您可以将 viewpager
与您的图像数组或图像列表一起使用,并且您可以获得向左或向右滑动的功能,您无需执行更多操作,只需实施 viewpager
并创建调用 getItem 事件时获取图像的一个适配器,
试试这个你可以使用 android.support.v4.view.ViewPager
Layout manager that allows the user to flip left and right through pages of data. You supply an implementation of a PagerAdapter to generate the pages that the view shows.
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.v4.view.ViewPager>
演示代码
ViewPager viewPager;
ArrayList<String> imageArray;
imageArray = new ArrayList<>();
viewPager = findViewById(R.id.cspl_viewPager);
imageArray.add(R.drawable.bg);
imageArray.add(R.drawable.bg);
imageArray.add(R.drawable.bg);
imageArray.add(R.drawable.bg);
imageArray.add(R.drawable.bg);
imageArray.add(R.drawable.bg);
ImageAdapter adapter = new ImageAdapter(this, imageArray);
viewPager.setAdapter(adapter);
现在像这样创建ImageAdapter
public class ImageAdapter extends PagerAdapter {
Context context;
ArrayList<String> imageArray;
public ImageAdapter(Context context, ArrayList<String> imageArray) {
this.context = context;
this.imageArray = imageArray;
}
@Override
public int getCount() {
return imageArray.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((ImageView) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView imageView = new ImageView(context);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(WindowManager.LayoutParams.WRAP_CONTENT, 50);
imageView.setLayoutParams(layoutParams);
int padding = context.getResources().getDimensionPixelSize(R.dimen.font_size_10);
imageView.setPadding(padding, padding, padding, padding);
// imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
Glide.with(ProfileActivity.this)
.load(R.drawable.bg)
.into(imageView);
((ViewPager) container).addView(imageView, 0);
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((ImageView) object);
}
}
我知道我可以使用默认 android 图片查看器打开图片,例如 new Intent(Intent.ACTION_VIEW)
等
如果我打开图片然后滑动 left/right 我会看到设备上保存的其他图片。
例如,如果我打开其中一张 whatsapp 图片,滑动 left/right 我会看到保存在 whatsapp 文件夹中的所有其他图片。
有没有办法将默认的android图片查看器传递一个List
/Array
的uri,以防止用户刷left/right看到全部设备上的图像?
我希望用户滑动 left/right 并且只看到我允许他看到的图像。
提前致谢
最好的情况是您可以将 viewpager
与您的图像数组或图像列表一起使用,并且您可以获得向左或向右滑动的功能,您无需执行更多操作,只需实施 viewpager
并创建调用 getItem 事件时获取图像的一个适配器,
试试这个你可以使用 android.support.v4.view.ViewPager
Layout manager that allows the user to flip left and right through pages of data. You supply an implementation of a PagerAdapter to generate the pages that the view shows.
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.v4.view.ViewPager>
演示代码
ViewPager viewPager;
ArrayList<String> imageArray;
imageArray = new ArrayList<>();
viewPager = findViewById(R.id.cspl_viewPager);
imageArray.add(R.drawable.bg);
imageArray.add(R.drawable.bg);
imageArray.add(R.drawable.bg);
imageArray.add(R.drawable.bg);
imageArray.add(R.drawable.bg);
imageArray.add(R.drawable.bg);
ImageAdapter adapter = new ImageAdapter(this, imageArray);
viewPager.setAdapter(adapter);
现在像这样创建ImageAdapter
public class ImageAdapter extends PagerAdapter {
Context context;
ArrayList<String> imageArray;
public ImageAdapter(Context context, ArrayList<String> imageArray) {
this.context = context;
this.imageArray = imageArray;
}
@Override
public int getCount() {
return imageArray.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((ImageView) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView imageView = new ImageView(context);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(WindowManager.LayoutParams.WRAP_CONTENT, 50);
imageView.setLayoutParams(layoutParams);
int padding = context.getResources().getDimensionPixelSize(R.dimen.font_size_10);
imageView.setPadding(padding, padding, padding, padding);
// imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
Glide.with(ProfileActivity.this)
.load(R.drawable.bg)
.into(imageView);
((ViewPager) container).addView(imageView, 0);
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((ImageView) object);
}
}