亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

按老師的做棋盤只有橫豎各一條線,各位大神幫忙看一下。代碼已提供。

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-五子連珠
  • 參與學習       38999    人
  • 解答問題       174    個

Android游戲開發-五子連珠,本教程通過UI與邏輯實現雙人對戰

進入課程

按老師的做棋盤只有橫豎各一條線,各位大神幫忙看一下。代碼已提供。

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號