DrawingCache与摩托罗拉设备的奇怪行为

时间:2012-08-16 21:55:49

标签: c# java android bitmap xamarin.android

我在某些摩托罗拉设备上遇到一个奇怪的问题,我在Bitmap内收到ImageView被裁剪和缩放的内容。这是用于Android 4.2.4的单声道编程。

基本上我的问题是DrawingCache在某些设备上返回null,即Motorola设备。我一直在寻找解决方案,并没有提出任何方法。我只是不明白为什么这个工作在某些设备上而不在其他设备上?

我可以使用ImageView.Drawable拉出整个图像,但是缺少对它进行的所有操作,所以这不是真的需要。

任何人都有任何关于为什么会发生这种情况或可能解决问题的建议?

        try
        {
            //pictureView is an ImageView
            pictureView.DrawingCacheEnabled = true;
            using (var bmp = pictureView.DrawingCache)
            {
                if (bmp != null)
                {

                }
            }
        }
        finally
        {
            _pictureView.DrawingCacheEnabled = false;
        }

我们的应用程序是用Mono for Android编写的,但欢迎Java答案。

更新:我创建了一个Android应用程序来显示我遇到的问题。我正在使用的开源项目是this,允许用户放大图像。使用Motorola模拟器无法显示位图,而x86模拟器在显示位图时正常工作。

public class TouchImageViewActivity extends Activity implements OnClickListener{
/** Called when the activity is first created. */
Button mButton;
TouchImageView mImage;
ImageView mImageView;
Bitmap mBmp;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

   // ImageView img = new ImageView(this);
    Bitmap snoop = BitmapFactory.decodeResource(getResources(), R.drawable.snoopy);
    setContentView(R.layout.main);
    mButton = (Button)findViewById(R.id.button1);
    mButton.setOnClickListener(this);

    mImage = (TouchImageView)findViewById(R.id.imageButton1);
    mImage.setImageBitmap(snoop);
    mImage.setMaxZoom(4f);

    mImageView = (ImageView)findViewById(R.id.imageView1);
}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    if(v.getId() == mButton.getId())
    {
        try
        {
            mImage.setDrawingCacheEnabled(true);

            mBmp = mImage.getDrawingCache(false);

            if(mBmp != null && !mBmp.isRecycled())
            {
                Toast toast = Toast.makeText(v.getContext(), "BITMAP NOT NULL! ZOMG", Toast.LENGTH_LONG);
                toast.show();
                mImageView.setImageBitmap(mBmp);
                mImageView.invalidate();
            }
            else
            {
                Toast toast = Toast.makeText(v.getContext(), "BITMAP IS NULL! BOOO", Toast.LENGTH_LONG);
                toast.show();
            }
        }
        catch(Exception exc)
        {
            Log.e("Test", exc.getMessage());
        }
    }
}

}

0 个答案:

没有答案