android 雷达UI
public class BaseView extends RelativeLayout{ public Context context; public BaseView(Context context) { super(context); this.context = context; } public BaseView(Context context, AttributeSet attrs) { super(context, attrs); this.context = context; } public BaseView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); this.context = context; } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); } }
public class SearchDevicesView extends BaseView{ public static final String TAG = "SearchDevicesView"; public static final boolean D = BuildConfig.DEBUG; @SuppressWarnings("unused") private long TIME_DIFF = 1500; int[] lineColor = new int[]{0x7B, 0x7B, 0x7B}; int[] innerCircle0 = new int[]{0xb9, 0xff, 0xFF}; int[] innerCircle1 = new int[]{0xdf, 0xff, 0xFF}; int[] innerCircle2 = new int[]{0xec, 0xff, 0xFF}; int[] argColor = new int[]{0xF3, 0xf3, 0xfa}; private float offsetArgs = 0; private boolean isSearching = false; private Bitmap bitmap; private Bitmap bitmap1; private Bitmap bitmap2; public boolean isSearching() { return isSearching; } public void setSearching(boolean isSearching) { this.isSearching = isSearching; offsetArgs = 0; invalidate(); } public SearchDevicesView(Context context) { super(context); initBitmap(); } public SearchDevicesView(Context context, AttributeSet attrs) { super(context, attrs); initBitmap(); } public SearchDevicesView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); initBitmap(); } private void initBitmap(){ if(bitmap == null){ bitmap = Bitmap.createBitmap(BitmapFactory.decodeResource(context.getResources(), R.drawable.gplus_search_bg)); } if(bitmap1 == null){ bitmap1 = Bitmap.createBitmap(BitmapFactory.decodeResource(context.getResources(), R.drawable.locus_round_click)); } if(bitmap2 == null){ bitmap2 = Bitmap.createBitmap(BitmapFactory.decodeResource(context.getResources(), R.drawable.gplus_search_args)); } } @SuppressLint("DrawAllocation") @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawBitmap(bitmap, getWidth() / 2 - bitmap.getWidth() / 2, getHeight() / 2 - bitmap.getHeight() / 2, null); if(isSearching){ Rect rMoon = new Rect(getWidth()/2-bitmap2.getWidth(),getHeight()/2,getWidth()/2,getHeight()/2+bitmap2.getHeight()); canvas.rotate(offsetArgs,getWidth()/2,getHeight()/2); canvas.drawBitmap(bitmap2,null,rMoon,null); offsetArgs = offsetArgs + 3; }else{ canvas.drawBitmap(bitmap2, getWidth() / 2 - bitmap2.getWidth() , getHeight() / 2, null); } canvas.drawBitmap(bitmap1, getWidth() / 2 - bitmap1.getWidth() / 2, getHeight() / 2 - bitmap1.getHeight() / 2, null); if(isSearching) invalidate(); } @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: handleActionDownEvenet(event); return true; case MotionEvent.ACTION_MOVE: return true; case MotionEvent.ACTION_UP: return true; } return super.onTouchEvent(event); } private void handleActionDownEvenet(MotionEvent event){ RectF rectF = new RectF(getWidth() / 2 - bitmap1.getWidth() / 2, getHeight() / 2 - bitmap1.getHeight() / 2, getWidth() / 2 + bitmap1.getWidth() / 2, getHeight() / 2 + bitmap1.getHeight() / 2); if(rectF.contains(event.getX(), event.getY())){ if(D) Log.d(TAG, "click search device button"); if(!isSearching()) { setSearching(true); }else{ setSearching(false); } } } }
下载地址:http://download.csdn.net/detail/u014600432/8248689
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。