2017-09-25 10 views
1

私はアンドロイドのアプリケーション開発には本当に新しく、ImageGalleryアプリケーションを作成しました。ギャラリーで画像をピンチしたりズームしたりしています。私はズームとピンチを実装するためにhttps://github.com/chrisbanes/PhotoViewを使用しています。今問題は、ビューポケットベルで正しく動作しないことです。コードからphotoView.setVisibility(View.GONE);を削除すると、画像をズームすることができますが、ビューページャーは機能しなくなり、画像をスワイプできなくなります。 photoView.setVisibility(View.GONE);を追加すると画像をスワイプできますが、ズームすることはできません。これをどうすれば解決できますか?ピンチズームとビューページャーが同時に動作しない

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; 


    } 
} 

答えて

0

画像をスライドさせ、その画像をViewPagerで拡大したい場合は、ビューページでいくつかのカスタマイズを行う必要があります。他の点は、ビューページとイメージビューのタッチを維持しなければならないことです。 how you can create viewpager with zoom-in image?を確認してください。私はそれがあなたのために役立つことを願って、あなたの解決策を得るでしょう

関連する問題