package com.carit.radioplayer; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; import android.view.View; public class MarkFaceView extends View { private Paint mPaint; public static float mFrequencyNum; private static final int FM_X_VALUE = 20; private static final int FM_Y_VALUE = 1675; private static final float AM_X_VALUE = (float) 0.4; private static final int AM_Y_VALUE = 174; private static final int POINTER_WIDTH = 3; private static final int POINTER_HEIGHT = 180; private boolean mIsAM; private float mRealNum; private boolean mIsInTouch; public MarkFaceView(Context context) { super(context); } public MarkFaceView(Context context, AttributeSet attrs) { super(context, attrs); mPaint = new Paint(); // setBackgroundResource(R.drawable.markface); } public MarkFaceView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override protected void onDraw(Canvas canvas) { Drawable myImage = getContext().getResources().getDrawable( R.drawable.markface); myImage.setBounds(0, 0, myImage.getIntrinsicWidth(), myImage.getIntrinsicHeight()); myImage.draw(canvas); mPaint.setColor(Color.parseColor("#808080")); mPaint.setTextSize(15); mPaint.setAntiAlias(true); if (mIsAM) { if(!mIsInTouch){ mRealNum = mFrequencyNum * AM_X_VALUE - AM_Y_VALUE + POINTER_WIDTH; } canvas.drawText("500", 18, 160, mPaint); canvas.drawText("750", 115, 160, mPaint); canvas.drawText("1000", 212, 160, mPaint); canvas.drawText("1250", 312, 160, mPaint); canvas.drawText("1500", 412, 160, mPaint); canvas.drawText("1750", 512, 160, mPaint); } else { if(!mIsInTouch){ mRealNum = mFrequencyNum * FM_X_VALUE - FM_Y_VALUE + POINTER_WIDTH; } canvas.drawText("85", 18, 160, mPaint); canvas.drawText("90", 118, 160, mPaint); canvas.drawText("95", 218, 160, mPaint); canvas.drawText("100", 315, 160, mPaint); canvas.drawText("105", 415, 160, mPaint); canvas.drawText("110", 515, 160, mPaint); } mPaint.setColor(Color.parseColor("#D42244")); canvas.drawRect(mRealNum - POINTER_WIDTH, 0, mRealNum, POINTER_HEIGHT, mPaint); mPaint.setColor(android.R.color.black); mPaint.setAlpha(80); canvas.drawLine(mRealNum, 0, mRealNum, POINTER_HEIGHT, mPaint); mPaint.setAlpha(50); canvas.drawLine(mRealNum + 1, 0, mRealNum + 1, POINTER_HEIGHT, mPaint); mPaint.setAlpha(10); canvas.drawLine(mRealNum + 2, 0, mRealNum + 2, POINTER_HEIGHT, mPaint); // super.onDraw(canvas); } public boolean ismIsAM() { return mIsAM; } public void setmIsAM(boolean mIsAM) { this.mIsAM = mIsAM; } @Override public boolean onTouchEvent(MotionEvent event) { final int action = event.getAction(); switch (action & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_DOWN: mIsInTouch = true; break; case MotionEvent.ACTION_MOVE: mRealNum = event.getX()+POINTER_WIDTH; short tmp_frequency; if(!mIsAM) tmp_frequency = (short)(((event.getX()+FM_Y_VALUE)/FM_X_VALUE)*100); else tmp_frequency = (short)((event.getX()+AM_Y_VALUE)/AM_X_VALUE); RadioActivity.setFrequencyNumber(tmp_frequency,false); postInvalidate(); break; case MotionEvent.ACTION_UP: short t_frequency; if(!mIsAM) tmp_frequency = (short)(((event.getX()+FM_Y_VALUE)/FM_X_VALUE)*100); else tmp_frequency = (short)((event.getX()+AM_Y_VALUE)/AM_X_VALUE); mIsInTouch = false; RadioActivity.setFrequencyNumber(tmp_frequency,true); //postInvalidate(); break; } return true; } }
ondrow
最新推荐文章于 2020-09-14 21:34:27 发布