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

棋盘不居中,偏上是怎么回事?代码附上请大神帮忙

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 mPanelWidth;
    private float mLineHight;
    private int MAX_LINE = 10;

    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 heighSize = MeasureSpec.getSize(heightMeasureSpec);
        int heighMode = MeasureSpec.getMode(heightMeasureSpec);

        int width = Math.min(widthSize, heighSize);

        if (widthMode == MeasureSpec.UNSPECIFIED) {
            width = heighSize;
        } else if (heighMode == MeasureSpec.UNSPECIFIED) {
            width = widthSize;
        }
        setMeasuredDimension(width, width);
    }

    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
// TODO Auto-generated method stub
        super.onSizeChanged(w, h, oldw, oldh);
        mPanelWidth = w;
        mLineHight =mPanelWidth* 1.0f / MAX_LINE;
    }

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

    private void drawBoard(Canvas canvas) {
        int w = mPanelWidth;
        float lineHeight =mLineHight ;
        //绘制棋盘的横线和竖线
        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 回答

你在xml中设置了centerInparent=true了没有

0 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

棋盘不居中,偏上是怎么回事?代码附上请大神帮忙

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