Открыть полноэкранное изображение при нажатии на вид сетки Android
// This is my On click function which opens New activity for image view.
@Override
public void onClick(View v) {
Intent intent = new Intent(activity, ImageDisplayActivity.class);
intent.putExtra("id", position+1);
Ниже я получаю путь к файлу, который нажимается.
intent.putExtra("position", String.valueOf(getItem(position)));
Log.d("ImageAdapter","Intent.putExtra ");
activity.startActivity(intent);
}
Это мой класс ImageDisplayActivity.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_imageview);
Получение пути к файлу, который нажимается в gridview.
path = getIntent().getExtras().getString("position");
Intent i1 = getIntent();
utils = new HelperUtils(this);
imagePaths = utils.getFilePaths();
imagePaths дает коллекцию изображений, которые внутри моей папки.
position = i1.getExtras().getInt("id");
Дает положение изображения.
pagerAdapter = new FullScreenImageAdapter(this, imagePaths);
pager = (ViewPager) findViewById(R.id.pager);
pager.setAdapter(pagerAdapter);
pager.setCurrentItem(position);
}
public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.display,menu);
MenuItem item = menu.findItem(R.id.menu_item_share);
shareActionProvider = (ShareActionProvider) item.getActionProvider();
Intent shareIntent = new Intent();
if(shareActionProvider != null){
imageFile = new File(path);
imageUri = Uri.fromFile(imageFile);
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, imageUri);
shareIntent.setType("image/jpeg");
if(shareActionProvider != null){
shareActionProvider.setShareIntent(shareIntent);
}
}
return true;
}
Класс FullScreenImageAdapter.
открытый класс FullScreenImageAdapter расширяет PagerAdapter {
private Activity activity;
private ArrayList<String> imagePaths;
private LayoutInflater inflater;
public FullScreenImageAdapter(Activity activity,ArrayList<String> imagePaths){
this.activity = activity;
this.imagePaths = imagePaths;
}
@Override
public int getCount() {
return this.imagePaths.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((RelativeLayout) object);
}
public Object instantiateItem(ViewGroup container, int position){
final TouchImageView imageView;
inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.layout_fullscreen_image, container,false);
imageView = (TouchImageView) view.findViewById(R.id.fullscreenimage);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap bitmap = BitmapFactory.decodeFile(imagePaths.get(position), options);
imageView.setImageBitmap(bitmap);
((ViewPager) container).addView(view);
return view;
}
public void destroyItem(ViewGroup container, int position, Object object){
(container).removeView((RelativeLayout) object);
}
}
Класс My Touch Image работает отлично.
Когда я щелкаю элемент на изображении в виде сетки, он отображает неправильное изображение на весь экран. На данный момент я использую ViewPager для прокрутки изображения. Я получаю путь изображения при открытии в полноэкранном режиме. Следовательно, только этот файл я получаю путь, которым я могу поделиться. Поэтому, когда я прокручиваю изображения, я не могу обмениваться ими. Потому что у меня нет пути к изображению.
Это файл XML, используемый для запуска действия просмотра изображений
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#000000">
<android.support.v4.view.ViewPager
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/pager"/>
</RelativeLayout>
For Full Screen Class
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.android.example.TouchImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/fullscreenimage"
android:scaleType="fitCenter"
/>
</RelativeLayout>
Всякий раз, когда я смахиваю изображение слева направо, мой приведенный ниже код выполняется из класса FullScreemImageAdapter.
public Object instantiateItem(ViewGroup container, int position){
final TouchImageView imageView;
inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.layout_fullscreen_image, container,false);
imageView = (TouchImageView) view.findViewById(R.id.fullscreenimage);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap bitmap = BitmapFactory.decodeFile(imagePaths.get(position), options);
Здесь я пытаюсь получить путь к изображению. Но его возвращают неправильный путь изображения.
path = String.valueOf(imagePaths.get(position));
Log.d("FullScreenImageAdapter", " path " + path);
imageView.setImageBitmap(bitmap);
((ViewPager) container).addView(view);
return view;
}
Так что, если я могу прочитать точный путь изображения. Я думаю, что я получу решение проблемы.
пожалуйста, помогите мне в решении вещей.