自定义一个带箭头旋转的圆圈 , 配置服务器后台

来源:互联网 发布:开淘宝网店策划书范文 编辑:程序博客网 时间:2024/05/19 02:42
public class MainActivity extends AppCompatActivity {    private MyCustom mycustom;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mycustom = (MyCustom) findViewById(R.id.mycustom);    }    public void onClick(View view) {        mycustom.seColor(Color.BLUE);    }    public void add(View view) {        mycustom.speed();    }    public void slow(View view) {        mycustom.slowDown();    }    public void pauseOrStart(View view) {        mycustom.pauseOrStart();    }}

public class MyCustom extends View { //xml中获取的颜色 private int circleBoundColor; private float circleBoundWidth; //当前画笔画圆的颜色 private int CurrenCircleBoundColor; private Paint paint; public MyCustom(Context context) { super(context); initView(context); } public MyCustom(Context context, @Nullable AttributeSet attrs) { super(context, attrs); initView(context); TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.MyCustom); for (int i=0;i<typedArray.getIndexCount();i++){ int index = typedArray.getIndex(i); switch (index){ case R.styleable.MyCustom_custom_color: circleBoundColor= typedArray.getColor(index, Color.RED); CurrenCircleBoundColor=circleBoundColor; break; case R.styleable.MyCustom_custom_width: circleBoundWidth=typedArray.getDimension(index,3); break; } } } private void initView(Context context) { paint = new Paint(); } public void seColor(int color){ if (CurrenCircleBoundColor!=color) { CurrenCircleBoundColor=color; }else { CurrenCircleBoundColor=circleBoundColor; } } //圆心 private float pionX; private float pionY; //圆点 private float yuanxin=130; //圆框迅速转 private float currentDegree = 0; @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); paint.setAntiAlias(true); paint.setColor(CurrenCircleBoundColor); paint.setStrokeWidth(circleBoundWidth); paint.setStyle(Paint.Style.STROKE); pionX=getWidth()/2; pionY=getHeight()/2; canvas.drawCircle(pionX,pionY,yuanxin,paint); canvas.save(); //旋转画布 , 如果旋转的的度数大的话,视觉上看着是旋转快的 canvas.rotate(currentDegree,pionX,pionY); //提供了一些api可以用来画线(画路径) Path path=new Path(); //从哪开始画 从A开始画 path.moveTo(pionX+yuanxin,pionY); //A点画一个直线到D path.lineTo(pionX + yuanxin - 20, pionY - 20); //D点画一个直线到B path.lineTo(pionX + yuanxin, pionY + 20); //B点画一个直线到C path.lineTo(pionX + yuanxin + 20, pionY - 20); //闭合 -- C点画一个直线到A path.close(); paint.setStyle(Paint.Style.FILL); paint.setColor(Color.BLACK); canvas.drawPath(path, paint); canvas.restore(); //旋转的度数一个一个度数增加, 如果乘以一个速度的话,按一个速度速度增加 currentDegree += 1 * currentSpeed; if (!isPause) { invalidate(); } } private int currentSpeed = 1; private boolean isPause = false; public void speed() { ++currentSpeed; if (currentSpeed >= 10) { currentSpeed = 10; Toast.makeText(getContext(), "我比闪电还快", Toast.LENGTH_SHORT).show(); } } public void slowDown() { --currentSpeed; if (currentSpeed <=1) { currentSpeed = 1; } } public void pauseOrStart() { //如果是开始状态的话去重新绘制 if (isPause) { isPause = !isPause; invalidate(); } else { isPause = !isPause; } }}
XML:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="com.example.fanyishuo.daijiantou_view.MainActivity">    <Button        android:id="@+id/set_color_btn"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_centerHorizontal="true"        android:onClick="onClick"        android:text="设置颜色" />    <Button        android:id="@+id/add"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_below="@id/set_color_btn"        android:layout_centerHorizontal="true"        android:onClick="add"        android:text="加速" />    <Button        android:id="@+id/slow"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_below="@+id/add"        android:layout_centerHorizontal="true"        android:onClick="slow"        android:text="减速" />    <Button        android:id="@+id/pause_or_start"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_below="@+id/slow"        android:layout_centerHorizontal="true"        android:onClick="pauseOrStart"        android:text="暂定/开始" /><com.example.fanyishuo.daijiantou_view.MyCustom    android:id="@+id/mycustom"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    app:custom_color="@color/colorAccent"    app:custom_width="3dp"    android:layout_gravity="center"    /></LinearLayout>
values下attrs:
<resources>    <declare-styleable name="MyCustom">        <attr name="custom_color" format="color"></attr>        <attr name="custom_width" format="dimension"></attr>    </declare-styleable>

 
阅读全文
0 0
原创粉丝点击