为了账号安全,请及时绑定邮箱和手机立即绑定

按老师的做棋盘只有横竖各一条线,各位大神帮忙看一下。代码已提供。

package com.imooc_wuziqi;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewTreeObserver;


public class WuziqiPanel extends View {
    private int mPanelWidgh;
    private int MAX_LINE=10;
    private float mLineHeight;

    private Paint mPaint=new Paint();

    public WuziqiPanel(Context context, AttributeSet attrs) {
        super(context, attrs);
        setBackgroundColor(0x44ff0000);
        init();}
    private void init()
    {mPaint.setColor(0X88000000);
        mPaint.setAntiAlias(true);
        mPaint.setDither(true);
        mPaint.setStyle(Paint.Style.STROKE);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int widthSize=MeasureSpec.getSize(widthMeasureSpec);
        int widthMode=MeasureSpec.getMode(widthMeasureSpec);

        int heightSize=MeasureSpec.getSize(heightMeasureSpec);
        int heightMode=MeasureSpec.getMode(heightMeasureSpec);
                int width=Math.min(widthSize,heightSize);
                if(widthMode==MeasureSpec.UNSPECIFIED) {
                    width = heightSize;
                }else if(heightMode==MeasureSpec.UNSPECIFIED){
                    width=widthSize;
                }
setMeasuredDimension(width,width);
    }

    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);
        mPanelWidgh=w;
        mLineHeight=mPanelWidgh*1.0f/MAX_LINE;
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
       drawBoard(canvas);
    }
    private void drawBoard(Canvas canvas) {
        int w = mPanelWidgh;
        float lineHeight = mLineHeight;
        for (int i = 0; i < MAX_LINE; i++) {
            int startX = (int) (lineHeight / 2);
            int endX = (int) (w - lineHeight / 2);
            int y = (int) ((0.5 + i) + lineHeight);
            canvas.drawLine(startX, y, endX, y,mPaint);
            canvas.drawLine(y,startX,y, endX, mPaint);
        }

    }


}


正在回答

1 回答

//绘制棋盘的横线和竖线
for (int i = 0; i < MAX_LINE; i++) {
    int startX = (int) (lineHeight * 0.5);
    int endX = w - startX;
    int y = (int) (lineHeight * (0.5 + i));//倍数增长,如果是加,长度就会是完全错误的
    //绘制横线
    canvas.drawLine(startX, y, endX, y, mPaint);
    //绘制竖线
    canvas.drawLine(y, startX, y, endX, mPaint);
}


1 回复 有任何疑惑可以回复我~
#1

慕九州4868525 提问者

非常感谢!
2016-09-03 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android-五子连珠
  • 参与学习       39012    人
  • 解答问题       166    个

Android游戏开发-五子连珠,本教程通过UI与逻辑实现双人对战

进入课程

按老师的做棋盘只有横竖各一条线,各位大神帮忙看一下。代码已提供。

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信