/******************************************************************************* * Copyright 2013 Sergey Tarasevich * * 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.smartandroid.sa.zUImageLoader.core.imageaware; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.view.View; import com.smartandroid.sa.zUImageLoader.core.assist.ViewScaleType; /** * Represents image aware view which provides all needed properties and behavior * for image processing and displaying through * {@link com.nostra13.universalimageloader.core.ImageLoader ImageLoader}. It * can wrap any Android {@link android.view.View View} which can be accessed by * {@link #getWrappedView()}. Wrapped view is returned in * {@link com.nostra13.universalimageloader.core.listener.ImageLoadingListener * ImageLoadingListener}'s callbacks. * * @author Sergey Tarasevich (nostra13[at]gmail[dot]com) * @see ViewAware * @see ImageViewAware * @see NonViewAware * @since 1.9.0 */ public interface ImageAware { /** * Returns width of image aware view. This value is used to define scale * size for original image. Can return 0 if width is undefined.<br /> * Is called on UI thread if ImageLoader was called on UI thread. Otherwise * - on background thread. */ int getWidth(); /** * Returns height of image aware view. This value is used to define scale * size for original image. Can return 0 if height is undefined.<br /> * Is called on UI thread if ImageLoader was called on UI thread. Otherwise * - on background thread. */ int getHeight(); /** * Returns * {@linkplain com.nostra13.universalimageloader.core.assist.ViewScaleType * scale type} which is used for scaling image for this image aware view. * Must <b>NOT</b> return <b>null</b>. */ ViewScaleType getScaleType(); /** * Returns wrapped Android {@link android.view.View View}. Can return * <b>null</b> if no view is wrapped or view was collected by GC.<br /> * Is called on UI thread if ImageLoader was called on UI thread. Otherwise * - on background thread. */ View getWrappedView(); /** * Returns a flag whether image aware view is collected by GC or whatsoever. * If so then ImageLoader stop processing of task for this image aware view * and fires * {@link com.nostra13.universalimageloader.core.listener.ImageLoadingListener#onLoadingCancelled(String, android.view.View) * ImageLoadingListener#onLoadingCancelled(String, View)} callback.<br /> * Mey be called on UI thread if ImageLoader was called on UI thread. * Otherwise - on background thread. * * @return <b>true</b> - if view is collected by GC and ImageLoader should * stop processing this image aware view; <b>false</b> - otherwise */ boolean isCollected(); /** * Returns ID of image aware view. Point of ID is similar to Object's * hashCode. This ID should be unique for every image view instance and * should be the same for same instances. This ID identifies processing task * in ImageLoader so ImageLoader won't process two image aware views with * the same ID in one time. When ImageLoader get new task it cancels old * task with this ID (if any) and starts new task. * <p/> * It's reasonable to return hash code of wrapped view (if any) to prevent * displaying non-actual images in view because of view re-using. */ int getId(); /** * Sets image drawable into this image aware view.<br /> * Displays drawable in this image aware view * {@linkplain com.nostra13.universalimageloader.core.DisplayImageOptions.Builder#showImageForEmptyUri(android.graphics.drawable.Drawable) * for empty Uri}, * {@linkplain com.nostra13.universalimageloader.core.DisplayImageOptions.Builder#showImageOnLoading(android.graphics.drawable.Drawable) * on loading} or * {@linkplain com.nostra13.universalimageloader.core.DisplayImageOptions.Builder#showImageOnFail(android.graphics.drawable.Drawable) * on loading fail}. These drawables can be specified in * {@linkplain com.nostra13.universalimageloader.core.DisplayImageOptions * display options}.<br /> * Also can be called in * {@link com.nostra13.universalimageloader.core.display.BitmapDisplayer * BitmapDisplayer}.< br /> * Is called on UI thread if ImageLoader was called on UI thread. Otherwise * - on background thread. * * @return <b>true</b> if drawable was set successfully; <b>false</b> - * otherwise */ boolean setImageDrawable(Drawable drawable); /** * Sets image bitmap into this image aware view.<br /> * Displays loaded and decoded image {@link android.graphics.Bitmap} in this * image view aware. Actually it's used only in * {@link com.nostra13.universalimageloader.core.display.BitmapDisplayer * BitmapDisplayer}.< br /> * Is called on UI thread if ImageLoader was called on UI thread. Otherwise * - on background thread. * * @return <b>true</b> if bitmap was set successfully; <b>false</b> - * otherwise */ boolean setImageBitmap(Bitmap bitmap); }