From 9c6ac19d4a3d39b7c2992060957920118ff56a65 Mon Sep 17 00:00:00 2001 From: Mark Wei Date: Thu, 24 Oct 2013 14:51:54 -0700 Subject: Relax BasicBitmapView to allow non-BasicBitmapDrawables to be assigned to it. Rename BasicBitmapView to BitmapDrawableImageView. Allow asynchronous creating of file. Change-Id: I0407bf0bf36ae92ce45d2175121a15483f8f72f2 --- src/com/android/bitmap/view/BasicImageView.java | 94 ------------------- .../bitmap/view/BitmapDrawableImageView.java | 103 +++++++++++++++++++++ 2 files changed, 103 insertions(+), 94 deletions(-) delete mode 100644 src/com/android/bitmap/view/BasicImageView.java create mode 100644 src/com/android/bitmap/view/BitmapDrawableImageView.java (limited to 'src/com/android/bitmap/view') diff --git a/src/com/android/bitmap/view/BasicImageView.java b/src/com/android/bitmap/view/BasicImageView.java deleted file mode 100644 index 3e48af5..0000000 --- a/src/com/android/bitmap/view/BasicImageView.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright (C) 2013 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.bitmap.view; - -import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.drawable.Drawable; -import android.net.Uri; -import android.util.AttributeSet; -import android.widget.ImageView; - -import com.android.bitmap.drawable.BasicBitmapDrawable; - -/** - * A helpful ImageView replacement that can generally be used in lieu of ImageView. - * BasicImageView has logic to unbind its BasicBitmapDrawable when it is detached from the window. - */ -public class BasicImageView extends ImageView { - private BasicBitmapDrawable mDrawable; - - public BasicImageView(final Context context) { - this(context, null); - } - - public BasicImageView(final Context context, final AttributeSet attrs) { - this(context, attrs, 0); - } - - public BasicImageView(final Context context, final AttributeSet attrs, final int defStyle) { - super(context, attrs, defStyle); - } - - /** - * Set the given BasicBitmapDrawable as the source for this BasicImageView. - * @param drawable The source drawable. - */ - public void setDrawable(BasicBitmapDrawable drawable) { - super.setImageDrawable(drawable); - mDrawable = drawable; - } - - public BasicBitmapDrawable getDrawable() { - return mDrawable; - } - - @Override - protected void onDetachedFromWindow() { - super.onDetachedFromWindow(); - - mDrawable.unbind(); - } - - @Override - public void setImageDrawable(final Drawable drawable) { - throw new UnsupportedOperationException( - "BasicImageView is only compatible with BasicBitmapDrawable. Use setDrawable() " - + "instead."); - } - - @Override - public void setImageResource(final int resId) { - throw new UnsupportedOperationException( - "BasicImageView is only compatible with BasicBitmapDrawable. Use setDrawable() " - + "instead."); - } - - @Override - public void setImageURI(final Uri uri) { - throw new UnsupportedOperationException( - "BasicImageView is only compatible with BasicBitmapDrawable. Use setDrawable() " - + "instead."); - } - - @Override - public void setImageBitmap(final Bitmap bm) { - throw new UnsupportedOperationException( - "BasicImageView is only compatible with BasicBitmapDrawable. Use setDrawable() " - + "instead."); - } -} diff --git a/src/com/android/bitmap/view/BitmapDrawableImageView.java b/src/com/android/bitmap/view/BitmapDrawableImageView.java new file mode 100644 index 0000000..a55b864 --- /dev/null +++ b/src/com/android/bitmap/view/BitmapDrawableImageView.java @@ -0,0 +1,103 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.bitmap.view; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.drawable.Drawable; +import android.net.Uri; +import android.util.AttributeSet; +import android.widget.ImageView; + +import com.android.bitmap.drawable.BasicBitmapDrawable; + +/** + * A helpful ImageView replacement that can generally be used in lieu of ImageView. + * BitmapDrawableImageView has logic to unbind its BasicBitmapDrawable when it is detached from the + * window. + */ +public class BitmapDrawableImageView extends ImageView { + private BasicBitmapDrawable mDrawable; + + public BitmapDrawableImageView(final Context context) { + this(context, null); + } + + public BitmapDrawableImageView(final Context context, final AttributeSet attrs) { + this(context, attrs, 0); + } + + public BitmapDrawableImageView(final Context context, final AttributeSet attrs, + final int defStyle) { + super(context, attrs, defStyle); + } + + /** + * Get the source BasicBitmapDrawable for this BitmapDrawableImageView. + * @return The source drawable. + */ + public BasicBitmapDrawable getBasicBitmapDrawable() { + return mDrawable; + } + + /** + * Set the given BasicBitmapDrawable as the source for this BitmapDrawableImageView. + * @param drawable The source drawable. + */ + public void setBasicBitmapDrawable(BasicBitmapDrawable drawable) { + super.setImageDrawable(drawable); + unbindDrawable(); + mDrawable = drawable; + } + + private void unbindDrawable() { + if (mDrawable != null) { + mDrawable.unbind(); + mDrawable = null; + } + } + + @Override + public void setImageResource(final int resId) { + super.setImageResource(resId); + unbindDrawable(); + } + + @Override + public void setImageURI(final Uri uri) { + super.setImageURI(uri); + unbindDrawable(); + } + + @Override + public void setImageDrawable(final Drawable drawable) { + super.setImageDrawable(drawable); + unbindDrawable(); + } + + @Override + public void setImageBitmap(final Bitmap bm) { + super.setImageBitmap(bm); + unbindDrawable(); + } + + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + unbindDrawable(); + } +} -- cgit v1.2.3