开关

在这里插入代码片
package com.bawei.myapplication.switch_button;

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ImageView;
import android.widget.RelativeLayout;

import com.bawei.myapplication.R;

/**
 * @author hasee
 */
public class CustomSwitchButtonViewGroup extends RelativeLayout{
    Context mContext;
    boolean isChecked = false;

    public CustomSwitchButtonViewGroup(Context context) {
        super(context);
        mContext = context;
        init();
    }

    public CustomSwitchButtonViewGroup(Context context, AttributeSet attrs) {
        super(context, attrs);
        mContext = context;
        init();
    }

    private void init() {
        final ImageView imageView = new ImageView(mContext);
        imageView.setBackgroundResource(R.drawable.off);

        imageView.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                if(isChecked){
                    imageView.setBackgroundResource(R.drawable.off);
                }else{
                    imageView.setBackgroundResource(R.drawable.on);
                }
                isChecked = !isChecked;
            }
        });

        addView(imageView);
    }
}

转盘

在这里插入代码片
package com.bawei.myapplication.turntable;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;

import com.bawei.myapplication.R;

/**
 * 转盘中间开始按钮和指针
 * @author hasee
 */
public class CustomTurntableInsideView extends View {
    /**
     * 画笔
     */
    Paint mPaint;
    RectF mRectF;
    String mStr;

    public CustomTurntableInsideView(Context context) {
        super(context);
        init();
    }

    public CustomTurntableInsideView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);

        //自定义属性,如何添加自定义属性如下(考点)
        //第一步:在values文件夹下创建attrs.xml
        //第二步:详见attrs.xml文件内部
        //第三步:在所在的布局文件的根layout中添加xmlns:app="http://schemas.android.com/apk/res-auto"
        //第四步:在布局文件的控件中添加app:"你在attrs中设置的attr name"="你的值"
        //第五步:调用下面这句话,最后的为R.styleable.你在attrs中设置的declare-styleable name
        TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.CustomTurntableView);
        //第六步:调用下面这句话,根据你在attrs中设置的format,选择getXXX方法,
        //入参为 R.styleable. 加上 你在attrs中设置的declare-styleable name 加上 _ 加上 你在attrs中设置的attr name
        mStr = typedArray.getString(R.styleable.CustomTurntableView_text);
        init();
    }

    private void init() {
        //以下注释请看CustomBingView里面
        mPaint = new Paint();
        mPaint.setColor(Color.RED);
        mPaint.setStrokeWidth(10);
        mPaint.setTextSize(60);
        mPaint.setStyle(Paint.Style.FILL);

        mRectF = new RectF();
        mRectF.top = 100;
        mRectF.bottom = 400;
        mRectF.right = 550;
        mRectF.left = 350;
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);

//        setMeasuredDimension(300, 300);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        //设置画笔颜色为黑色,
        mPaint.setColor(Color.BLACK);
        //画出指针,用一个扇形,然后盖住后面补分来简单表示
        canvas.drawArc(mRectF, 60, 60, true, mPaint);

        mPaint.setColor(Color.RED);
        //画一个红色的圆形,就是中间的大按钮
        canvas.drawCircle(450, 450, 150, mPaint);

        mPaint.setColor(Color.BLACK);
        //添加按钮上的文字
        canvas.drawText(mStr, 400, 450, mPaint);

        //画三角,第一步,创建路径
//        Path path = new Path();
        //第二步,moveTo第一个顶点
//        path.moveTo(300, 300);
        //后续相继lineTo其他顶点
//        path.lineTo(300, 400);
//        path.lineTo(400, 400);
        //闭合
//        path.close();
//      画
//        canvas.drawPath(path, mPaint);
    }
}


猜你喜欢

转载自blog.csdn.net/yin422706867/article/details/84648574