So deaktivieren Sie das Klickereignis Framelayout hinter der Ansicht

Hier habe ich eine Ansichtspageraktivität, die eine Bildansicht und 2 Überlagerungsleisten hat. Es gibt Overlay-Bars, die ich mit Android XML-Datei-Layout selbst gemacht habe.

Hier ist meine Anforderung so

1) Tippen Sie das erste Mal auf die Bildansicht des View-Pagers = Overlay-Leiste für oberes und unteres Rechteck anzeigen. 2) Einmaliges Tippen auf die Bildansicht des View Pagers zum zweiten Mal = Diese Overlays ausblenden.

Dies sind Funktionen wie Android Gallary View-Typ.

Aber hier, wenn diese obere und untere Layoutleiste zu diesem Zeitpunkt angezeigt wird, möchte ich nur Schaltflächen verwenden. Klicken Sie nur, welche Schaltflächen in diesem Layout deklariert sind.

Aber ich bekomme keinen Erfolg, um diese Sache zu erreichen.

Probleme

1) wanntop or bottom bar ist da, wenn ich darauf klicken kannnext or previous Taste, als es ein Ereignis für ein hinter der Bildansicht liegendes Berührungsereignis auslöst. Und meine Leiste wird unsichtbar. 2) Nur Schaltflächen deklarieren, nur Ereignis 3) Vermeiden Sie das Klicken auf die Bildansicht, wenn Sie auf die Überlagerungsleiste tippen.

Kurz gesagt, wenn meine obere und untere Bildleiste zu diesem Zeitpunkt angezeigt wird, findet kein weiteres Ereignis für die Bildansicht von der oberen und unteren Bildleiste aus statt. Ich kann auf Bildansicht klicken, aber nicht anklickbar machen, wenn ich auf den nächsten oder vorherigen oder gemeinsamen Button klicke.

Das sind also die Probleme, mit denen ich konfrontiert bin. Bitte hilf mir.

Quellcode :

activity_pager_image.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

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

    <RelativeLayout
        android:id="@+id/rl_top_overlay"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/slideshow_bar"
        android:visibility="gone" >

        <TextView
            android:id="@+id/tv_top_overlay"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:textIsSelectable="false" />
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/rl_bottom_overlay"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:background="@drawable/slideshow_bar"
        android:visibility="visible" >

        <Button
            android:id="@+id/btn_left_arrow"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:layout_marginLeft="35dp"
            android:background="@drawable/ic_left_arrow" />

        <Button
            android:id="@+id/btn_below_share"
            style="@style/normalText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="35dp"
            android:background="@drawable/ic_share"
            android:visibility="visible" />

        <Button
            android:id="@+id/btn_right_arrow"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:layout_marginLeft="50dp"
            android:layout_toRightOf="@id/btn_left_arrow"
            android:background="@drawable/ic_right_arrow" />
    </RelativeLayout>

</FrameLayout>

item_pager_image.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <demo.android.library.imagezoom.ImageViewTouch
        android:id="@+id/image"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:adjustViewBounds="true"
        android:contentDescription="@string/descr_image"
        android:scaleType="fitXY" />

</FrameLayout>

JAVA-Code

public class ImagePagerActivity extends BaseActivity {

    private static final String STATE_POSITION = "STATE_POSITION";
    private DisplayImageOptions options;
    private String[] imageUrls;
    private ViewPager pager;

    private static int sCounter = 0;

    private RelativeLayout mRlTopOverlayBar = null;
    private RelativeLayout mRlBottomOverlayBar = null;
    private TextView mPageNumberText = null;
    private Button mLeftArrow = null;
    private Button mRightArrow = null;

    int mPageCounter = 0;
    int mTotalImages = 0;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_image_pager);

        mRlTopOverlayBar = (RelativeLayout) findViewById(R.id.rl_top_overlay);
        mRlBottomOverlayBar = (RelativeLayout) findViewById(R.id.rl_bottom_overlay);

        mPageNumberText = (TextView) findViewById(R.id.tv_top_overlay);
        mLeftArrow = (Button) findViewById(R.id.btn_left_arrow);
        mRightArrow = (Button) findViewById(R.id.btn_right_arrow);

        Bundle bundle = getIntent().getExtras();
        String[] imageUrls = bundle
                .getStringArray(Constants.GALLARY_IMAGES_IMAGE_BUNDLE_KEY);

        mTotalImages = imageUrls.length;

        mPageCounter = bundle.getInt(
                Constants.GALLARY_IMAGE_POSITION_BUNDLE_KEY, 0);

        Log.d("TAG", "Pre Poistion " + mPageCounter);

        if (savedInstanceState != null) {
            mPageCounter = savedInstanceState.getInt(STATE_POSITION);
        }

        options = new DisplayImageOptions.Builder()
                .showImageForEmptyUri(R.drawable.photo_default)
                .showImageOnFail(R.drawable.ic_error).resetViewBeforeLoading()
                .cacheOnDisc().imageScaleType(ImageScaleType.EXACTLY)
                .bitmapConfig(Bitmap.Config.RGB_565)
                .displayer(new FadeInBitmapDisplayer(300)).build();

        pager = (ViewPager) findViewById(R.id.pager);
        pager.setAdapter(new ImagePagerAdapter(imageUrls));
        pager.setCurrentItem(mPageCounter);

        mLeftArrow.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // int setCounter = mPageCounter - 1;
                // if (setCounter >= 0) {

                // }
                pager.setCurrentItem(pager.getCurrentItem() - 1);

            }
        });

        mRightArrow.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                pager.setCurrentItem(pager.getCurrentItem() + 1);
                /*
                 * int setCounter = mPageCounter + 1; if (setCounter <
                 * mTotalImages) { pager.setCurrentItem(mPageCounter + 1); }
                 */
            }
        });
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        outState.putInt(STATE_POSITION, pager.getCurrentItem());
    }

    private class ImagePagerAdapter extends PagerAdapter {

        private String[] images;
        private LayoutInflater inflater;

        ImagePagerAdapter(String[] images) {
            this.images = images;
            inflater = getLayoutInflater();
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            ((ViewPager) container).removeView((View) object);
        }

        @Override
        public void finishUpdate(View container) {
        }

        @Override
        public int getCount() {
            return images.length;
        }

        @Override
        public Object instantiateItem(ViewGroup view, int position) {
            View imageLayout = inflater.inflate(R.layout.item_pager_image,
                    view, false);

            Log.d("TAG", "Poistion " + position);
            final ImageViewTouch imageView = (ImageViewTouch) imageLayout
                    .findViewById(R.id.image);

            final DeactivableViewPager viewPager = new DeactivableViewPager(
                    ImagePagerActivity.this);
            imageView.setOnScaleListener(new OnPageScaleListener() {

                @Override
                public void onScaleBegin() {
                    viewPager.deactivate();
                }

                @Override
                public void onScaleEnd(float scale) {
                    if (scale > 1.0) {
                        viewPager.deactivate();
                    } else {
                        viewPager.activate();
                    }
                }
            });

            imageView
                    .setSingleTapListener(new OnImageViewTouchSingleTapListener() {

                        @Override
                        public void onSingleTapConfirmed() {
                            Log.d("TAG", "setSingleTapListener");

                            sCounter++;
                            if (sCounter % 2 == 0) {
                                mRlTopOverlayBar.setVisibility(View.GONE);
                                mRlBottomOverlayBar.setVisibility(View.GONE);
                            } else {
                                mRlTopOverlayBar.setVisibility(View.VISIBLE);
                                mRlBottomOverlayBar.setVisibility(View.VISIBLE);
                                mRlBottomOverlayBar.setClickable(false);
                                mRlTopOverlayBar.setClickable(false);
                            }
                        }
                    });

            imageLoader.displayImage(images[position], imageView, options,
                    new SimpleImageLoadingListener() {
                        @Override
                        public void onLoadingStarted(String imageUri, View view) {
                            // spinner.setVisibility(View.VISIBLE);
                        }

                        @Override
                        public void onLoadingFailed(String imageUri, View view,
                                FailReason failReason) {
                            String message = null;
                            switch (failReason.getType()) {
                            case IO_ERROR:
                                message = "Input/Output error";
                                break;
                            case DECODING_ERROR:
                                message = "Image can't be decoded";
                                break;
                            case NETWORK_DENIED:
                                message = "Downloads are denied";
                                break;
                            case OUT_OF_MEMORY:
                                message = "Out Of Memory error";
                                break;
                            case UNKNOWN:
                                message = "Unknown error";
                                break;
                            }
                            Toast.makeText(ImagePagerActivity.this, message,
                                    Toast.LENGTH_SHORT).show();

                            // spinner.setVisibility(View.GONE);
                        }

                        @Override
                        public void onLoadingComplete(String imageUri,
                                View view, Bitmap loadedImage) {
                            // spinner.setVisibility(View.GONE);
                        }
                    });

            ((ViewPager) view).addView(imageLayout, 0);
            return imageLayout;
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view.equals(object);
        }

        @Override
        public void restoreState(Parcelable state, ClassLoader loader) {
        }

        @Override
        public Parcelable saveState() {
            return null;
        }

        @Override
        public void startUpdate(View container) {
        }

    }
}

Bild :

Vielen Dank

Antworten auf die Frage(8)

Ihre Antwort auf die Frage