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

原创 2015年11月20日 11:17:56
   问题描述:自己重写了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又回到界面初始化的位置。

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android实现浮动按钮半遮盖ImageView中的图片

利用LayoutParams进行布局调整(ImageView的ScaleType="fitStart"时anchor位置偏差问题)
  • Long_Long_Ago_
  • Long_Long_Ago_
  • 2016年08月04日 00:53
  • 1185

Android笔试题

Android面试题 1. 下列哪些语句关于内存回收的说明是正确的? (b )  A、 程序员必须创建一个线程来释放内存   B、 内存回收程序负责释放无用内存    C、 内存回...
  • lin646274404
  • lin646274404
  • 2016年01月18日 13:45
  • 1443

android 获取控件大小和设置调整控件的位置XY

网上很多人对设置控件的位置都使用      view.setPadding(left, top, right, bottom) ,其实这玩意很差劲,它是设置自己本身位置的偏移,我们很少需要这种效果,我...
  • ab6326795
  • ab6326795
  • 2013年06月19日 14:10
  • 16673

【Android】可移动的ImageView

可移动的ImageView 今天做了一个可移动的ImageView,要点如下: 1 ontouch 2 ongloballayout 3 image放置适当的位置 4 mat...
  • Taily_Duan
  • Taily_Duan
  • 2016年12月21日 18:38
  • 726

ASP.Net中menu控件使用

为了使用方便asp.net中提供了两类控件html控件与用户控件。这里不在详细介绍。menu属于用户控件。 menu最重要的是item属性,item包含了menu控件要显示的类表,几级菜单神马的,点...
  • jianxia_wzx
  • jianxia_wzx
  • 2013年05月22日 09:51
  • 3564

安卓简单自定义ImageView

最近在看何红辉老师的《Android开发进阶从小工到专家》,觉得挺不错的,对于想从初级安卓工程师走向高级工程师的人来说非常合适。现在想介绍下里面一个自定义View的入门例子,可以当做是笔记。 这是一...
  • sinat_23092639
  • sinat_23092639
  • 2016年08月07日 12:47
  • 1573

Android 在代码中设置imageview的大小和位置(满足单方向的放大缩小和任意位置的移动)

许久以前,在我还是初中的时候,有过一个当网络小说家的梦想,谁知到如今,却成一个程序员。享受生活,享受现在,做一个写博客的程序员,也算是了却当初的半个梦想。                      ...
  • qq_36188774
  • qq_36188774
  • 2017年12月29日 09:44
  • 131

自定义view重写触摸事件-imageview为例

package com.bdyl.view; import com.bdyl.constance.Logs; import android.content.Context; import androi...
  • qq_31116683
  • qq_31116683
  • 2016年02月17日 11:50
  • 862

toolbar中设置menu收起图标颜色以及popupwindow弹出位置

1、自定义menu菜单收起图标颜色 2、改变点击收起图标后popwindow弹出位置
  • soslinken
  • soslinken
  • 2016年09月20日 17:04
  • 4455

ImageView控件的基本用法

ImageView主要是用来显示图片的控件,可以对图片进行放大、缩小和旋转的功能。 android:scaleType属性指定ImageView控件显示图片的方式, 例如:center表示图像以不缩放...
  • tao0126
  • tao0126
  • 2016年04月07日 14:14
  • 1398
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:重写ImageView控件导致浮动menu位置为初始状态
举报原因:
原因补充:

(最多只允许输入30个字)