package org.aisen.weibo.sina.ui.widget; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.drawable.Drawable; import android.text.TextUtils; import android.util.AttributeSet; import android.widget.ImageView; import org.aisen.android.common.context.GlobalContext; import org.aisen.android.common.utils.Utils; import org.aisen.android.component.bitmaploader.BitmapLoader; import org.aisen.weibo.sina.R; import org.aisen.weibo.sina.base.AppSettings; import org.aisen.weibo.sina.support.utils.ThemeUtils; public class GifHintImageView extends ImageView { private boolean showGif = false; private boolean cut = false; private boolean midExist = false; private String url; public static Bitmap gif = null; public static Bitmap cutBitmap = null; private int gap = 0; private Paint paint; private Paint dotPaint; private int theme = -1; public GifHintImageView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public GifHintImageView(Context context, AttributeSet attrs) { super(context, attrs); } public GifHintImageView(Context context) { super(context); } public void setHint(String url) { showGif = !TextUtils.isEmpty(url) && url.toLowerCase().endsWith(".gif"); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); if (getWidth() > 0 && getHeight() > 0) { if (showGif) { if (gif == null) { gif = BitmapFactory.decodeResource(getResources(), R.drawable.ic_gif); paint = new Paint(); } canvas.drawBitmap(gif, getWidth() - gif.getWidth(), getHeight() - gif.getHeight(), paint); } else if (cut){ if (cutBitmap == null) { cutBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_cut); paint = new Paint(); } canvas.drawBitmap(cutBitmap, getWidth() - cutBitmap.getWidth(), getHeight() - cutBitmap.getHeight(), paint); } // 如果高清图已下载,显示提示 if (AppSettings.midPicHint() && midExist) { if (dotPaint == null) { dotPaint = new Paint(); gap = Utils.dip2px(getContext(), 8); } if (theme != AppSettings.getThemeColor()) { dotPaint.setColor(GlobalContext.getInstance().getResources().getColor(ThemeUtils.themeColorArr[AppSettings.getThemeColor()][0])); theme = AppSettings.getThemeColor(); } canvas.drawRect(getWidth() - gap, 0, getWidth(), gap, dotPaint); } } } @Override public void setImageDrawable(Drawable drawable) { super.setImageDrawable(drawable); if (getParent() instanceof TimelinePicsView) ((TimelinePicsView) getParent()).checkPicSize(); } public void setMidHint(String url, boolean large) { this.url = url; String midUrl = url.replace("thumbnail", "bmiddle"); midExist = BitmapLoader.getInstance().getCacheFile(midUrl).exists() && !large; } public void setCut(boolean cut) { this.cut = cut; } }