重写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又回到界面初始化的位置。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值