@Override public Object instantiateItem(ViewGroup container, final int position) { View itemView = mLayoutInflater.inflate(R.layout.pager_item, container, false); final PhotoView pvComic = (PhotoView) itemView.findViewById(R.id.ivComic); itemView.setTag(position); final TextView tvAlt = (TextView) itemView.findViewById(R.id.tvAlt); if (PrefHelper.altByDefault()) { tvAlt.setVisibility(View.VISIBLE); } tvAlt.setText(PrefHelper.getAlt(sFavorites[position])); // fix for issue #2 pvComic.setOnDoubleTapListener( new GestureDetector.OnDoubleTapListener() { @Override public boolean onDoubleTap(MotionEvent e) { if (pvComic.getScale() < 0.5f * pvComic.getMaximumScale()) { pvComic.setScale(0.5f * pvComic.getMaximumScale(), true); } else if (pvComic.getScale() < pvComic.getMaximumScale()) { pvComic.setScale(pvComic.getMaximumScale(), true); } else { pvComic.setScale(1.0f, true); } return true; } @Override public boolean onSingleTapConfirmed(MotionEvent e) { if (!PrefHelper.altLongTap()) { if (PrefHelper.classicAltStyle()) { toggleVisibility(tvAlt); } else { android.support.v7.app.AlertDialog.Builder mDialog = new android.support.v7.app.AlertDialog.Builder(getActivity()); mDialog.setMessage(tvAlt.getText()); mDialog.show(); } } return false; } @Override public boolean onDoubleTapEvent(MotionEvent e) { if (e.getAction() == MotionEvent.ACTION_UP) { fingerLifted = true; } if (e.getAction() == MotionEvent.ACTION_DOWN) { fingerLifted = false; } return false; } }); // Setup alt text and LongClickListener pvComic.setOnLongClickListener( new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { if (fingerLifted && PrefHelper.altLongTap()) { if (PrefHelper.altVibration()) { Vibrator vi = (Vibrator) getActivity().getSystemService(MainActivity.VIBRATOR_SERVICE); vi.vibrate(10); } // tvAlt.setText(PrefHelper.getAlt(sFavorites[sFavoriteIndex])); if (PrefHelper.classicAltStyle()) { toggleVisibility(tvAlt); } else { android.support.v7.app.AlertDialog.Builder mDialog = new android.support.v7.app.AlertDialog.Builder(getActivity()); mDialog.setMessage(tvAlt.getText()); mDialog.show(); } } return true; } }); // setup the title text view TextView tvTitle = (TextView) itemView.findViewById(R.id.tvTitle); tvTitle.setText(PrefHelper.getTitle(sFavorites[position])); if (PrefHelper.invertColors()) { float[] colorMatrix_Negative = { -1.0f, 0, 0, 0, 255, // red 0, -1.0f, 0, 0, 255, // green 0, 0, -1.0f, 0, 255, // blue 0, 0, 0, 1.0f, 0 // alpha }; ColorFilter cf = new ColorMatrixColorFilter(colorMatrix_Negative); pvComic.setColorFilter(cf); } // load the image pvComic.setImageBitmap(mComicMap.get(position).getBitmap()); if (Arrays.binarySearch( mContext.getResources().getIntArray(R.array.large_comics), sFavorites[sFavoriteIndex]) >= 0) { pvComic.setMaximumScale(7.0f); } // Disable ViewPager scrolling when the user zooms into an image pvComic.setOnMatrixChangeListener( new PhotoViewAttacher.OnMatrixChangedListener() { @Override public void onMatrixChanged(RectF rectF) { if (pvComic.getScale() > 1.4) { mPager.setLocked(true); } else { mPager.setLocked(false); } } }); container.addView(itemView); return itemView; }