package com.example.testt; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.view.View; public class DrawlT extends View { public DrawlT(Context context) { super(context); } // 0xFFFFFFFF 白色 int l = 0 ; int r = 120 ; int t = 0; int b = 120; int count = 0; @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //定义画笔 Paint paint = new Paint(); //设置颜色 黑色 最开始的时候 paint.setColor(0xFF000000); //设置画笔类型 paint.setStyle(Paint.Style.FILL); //画第一个 canvas.drawRect(0,0,120,120,paint); for (t = 0,b = 120; t < 960 && b < 1080; t += 120,b += 120){//纵向改变的是上下 for (r = 0,l = 120; l < 1800 && r < 1920; r +=120, l += 120,count++){//横向改变的是左右 if (count % 2 == 0){ //偶数时 黑色 paint.setColor(0xFF000000); }else { //奇数时 白色 paint.setColor(0xFFFFFFFF); } canvas.drawRect(l, t, r, b, paint); } count++; } } }
再通过MainActivity来实现
package com.example.testt; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.KeyEvent; import android.widget.FrameLayout; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); FrameLayout frameLayout = (FrameLayout) findViewById(R.id.forever); frameLayout.addView(new DrawlT(this)); } }
我设置的是1920 x 1080 的分辨率,每个部分分为120 x 120。
期中left和right主要是横向的改变会发生变化;
top和bottom是纵向的改变会发生变化。
我在循环体内部使用了count两次
①第一次是判断奇数偶数,通过奇偶来设置横向的黑白色块;
②第二次我真的认为是神来之笔了,它的作用就是将本来规则的黑白设置成棋格的形式
其实两次的原理都差不多。
public void drawRect(float left, float top, float right, float bottom, @NonNull Paint paint) { super.drawRect(left, top, right, bottom, paint); }
介系最后的成果啦 嘻嘻の-の