祁云龙的点滴记载

请乘理想之马,挥鞭从此起程;路上春色正好,天上太阳正晴。

重写ImageView控件导致浮动menu位置为初始状态
   问题描述:自己重写了ImageView控件,增加了OnTouch事件,使用矩阵操作实现了放大缩小,偏移等操作,当图片缩放至小于窗口的大小时居中显示,当多张图片之间相互切换时,当在ImageView上设置第二张图片时,之前移动的浮动menu的位置返回到了初始位置。带着问题我们一起深入。。。。。。

对于问题我们排除我们自己代码的问题导致此问题,再次我就不分析我的代码了,我明确知道是因为设置ImageView上的图片导致我的程序出现此问题。我们先看设置ImageView图片的源码:

/**
     * Sets a Bitmap as the content of this ImageView.
     * 
     * @param bm The bitmap to set
     */
    @android.view.RemotableViewMethod
    public void setImageBitmap(Bitmap bm) {
        // Hacky fix to force setImageDrawable to do a full setImageDrawable
        // instead of doing an object reference comparison
        mDrawable = null;
        if (mRecycleableBitmapDrawable == null) {
            mRecycleableBitmapDrawable = new ImageViewBitmapDrawable(
                    mContext.getResources(), bm);
        } else {
            mRecycleableBitmapDrawable.setBitmap(bm);
        }
        setImageDrawable(mRecycleableBitmapDrawable);
    }


------------------------------------------------------------
下面看setImageDrawable函数:
/**
     * Sets a drawable as the content of this ImageView.
     * 
     * @param drawable the Drawable to set, or {@code null} to clear the
     *                 content
     */
    public void setImageDrawable(@Nullable Drawable drawable) {
        if (mDrawable != drawable) {
            mResource = 0;
            mUri = null;

            final int oldWidth = mDrawableWidth;
            final int oldHeight = mDrawableHeight;

            updateDrawable(drawable);

            if (oldWidth != mDrawableWidth || oldHeight != mDrawableHeight) {
                requestLayout();
            }
            invalidate();
        }
    }

一眼就能看到调用了requestLayout函数,浮动menu又回到界面初始化的位置。

未完待续。。。。。。。。。。。。。。。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/over_qqqq/article/details/49944707
个人分类: android
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

重写ImageView控件导致浮动menu位置为初始状态

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭