1

Je suis vraiment nouveau pour le développement d'applications android et j'ai créé une application ImageGallery. J'essaie de mettre en œuvre pincer et zoomer pour les images dans la galerie. J'utilise https://github.com/chrisbanes/PhotoView pour implémenter le zoom et pincer.Maintenant, le problème est, son ne fonctionne pas correctement avec pager de vue. Si je supprime photoView.setVisibility(View.GONE); du code, je suis en mesure de zoomer les images, mais viewpager cesse de fonctionner et je ne suis pas en mesure de glisser des images. Si j'ajoute photoView.setVisibility(View.GONE); en arrière, je suis capable de balayer des images, mais pas capable de zoomer. Comment puis-je réparer cela ?Pincer le zoom et viewpager ne fonctionne pas en même temps

FullImageActivity.java:

public class FullImageActivity extends AppCompatActivity { 
    ImageView images; 
    int position; 
    int folderPosition; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_full_image); 
     Intent i = getIntent(); 
     PhotoView photoView = (PhotoView) findViewById(R.id.photo_view); 
     photoView.setVisibility(View.GONE); 

     // Selected image id 
     position = i.getExtras().getInt("id"); 
     folderPosition = i.getExtras().getInt("folderPosition"); 
     Bundle extras = getIntent().getExtras(); 
     String value = extras.getString("abc"); 

     Glide.with(FullImageActivity.this) 
       .load(value) 
       .skipMemoryCache(false) 
       .into(photoView); 

     ViewPager mViewPager = (ViewPager) findViewById(R.id.viewpager); 
     mViewPager.setAdapter(new TouchImageAdapter(this,al_images, folderPosition)); 
     mViewPager.setCurrentItem(position); 
    } 
} 

activity_full_image.xml:

<?xml version="1.0" encoding="utf-8"?> 

    <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/jazzy_pager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

    <com.github.chrisbanes.photoview.PhotoView 
     android:id="@+id/photo_view" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_gravity="center" 
     android:scaleType="centerCrop"/> 


    <android.support.v4.view.ViewPager 
     android:id="@+id/viewpager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

</LinearLayout> 

TouchImageAdapter.java:

class TouchImageAdapter extends PagerAdapter { 
    Context context; 
    String filename; 
    ArrayList<Model_images> al_menu = new ArrayList<>(); 
    int position,int_position; 

    public TouchImageAdapter(Context context,ArrayList<Model_images> al_menu, int position){ 
     this.al_menu = al_menu; 
     this.context = context; 
     this.int_position = position; 
    } 

    @Override 
    public int getCount() { 
     return al_menu.get(int_position).getAl_imagepath().size(); 
    } 

    @Override 
    public View instantiateItem(ViewGroup container, int position) { 

     ImageView img = new ImageView(container.getContext()); 
     ViewGroup.LayoutParams lp= new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); 
     img.setLayoutParams(lp); 
     img.setImageDrawable(getImageFromSdCard(filename,position)); 
     container.addView(img, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); 
     return img; 
    } 

    public int getItemPosition(Object object) { 
     return POSITION_NONE; 
    } 

    @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 Drawable getImageFromSdCard(String imageName,int position) { 
     Drawable d = null; 
     try { 
      String path = al_menu.get(int_position).getAl_imagepath().get(position) 
        + "/"; 
      Bitmap bitmap = BitmapFactory.decodeFile(path); 
      d = new BitmapDrawable(context.getResources(),bitmap); 
     } catch (IllegalArgumentException e) { 
      // TODO: handle exception 
     } 

     return d; 


    } 
} 

Répondre

0

Si vous souhaitez faire glisser les images et zoomer sur cette image en utilisant ViewPager, vous devez effectuer une personnalisation avec viewpager. D'autres thins est que vous devez maintenir la touche de viewpager et imageview. Vérifiez que how you can create viewpager with zoom-in image?. J'espère que cela vous sera utile et vous obtiendrez votre solution