package net.coding.program.common.widget; import android.content.Context; import android.graphics.Canvas; import android.graphics.Rect; import android.graphics.drawable.BitmapDrawable; import android.util.AttributeSet; import android.widget.ImageView; import net.coding.program.R; /** * Created by chenchao on 15/7/10. * 可以在显示 GIF 标示的 ImageView */ public class GifMarkImageView extends ImageView { private boolean showFlag; private int flagWidth = 20; private int flagHeigh = 10; private int flagMerge = 3; public GifMarkImageView(Context context, AttributeSet attrs) { super(context, attrs); float scal = context.getResources().getDisplayMetrics().density; flagWidth = (int) (scal * flagWidth); flagHeigh = (int) (scal * flagHeigh); flagMerge = (int) (scal * flagMerge); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); if (showFlag) { int cavasWidth = canvas.getWidth(); int cavasHeight = canvas.getHeight(); Rect lineRect = new Rect(0, 0, 50, 50); lineRect.left = cavasWidth - flagWidth - flagMerge; lineRect.right = cavasWidth - flagMerge; lineRect.top = cavasHeight - flagHeigh - flagMerge; lineRect.bottom = cavasHeight - flagMerge; canvas.drawBitmap(((BitmapDrawable) (getResources().getDrawable(R.drawable.ic_flag_gif))).getBitmap(), null, lineRect, null); } } public void showGifFlag(boolean show) { if (show == showFlag) { return; } showFlag = show; invalidate(); } public void showGifFlag(String url) { showGifFlag(url.toLowerCase().endsWith(".gif")); } }