お世話になります。
MainActivityに
java
1public class MainActivity extends Activity { 2 @Override 3 protected void onCreate(Bundle savedInstanceState) { 4 super.onCreate(savedInstanceState); 5 } 6 7 @Override 8 protected void onResume() 9 { 10 11 super.onResume(); 12 //ナビゲーションバー等を引っ込める 13 int visibility = View.SYSTEM_UI_FLAG_FULLSCREEN |View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION ; 14 Window window = getWindow(); 15 View view = window.getDecorView(); 16 view.setSystemUiVisibility(visibility); 17 } 18}
と置き、ナビゲーションバーを引っ込めました。
次に、activity_main.xmlにオリジナルビューを配置し、このクラスの定義を、
java
1 2public class originalView extends View { 3 4 Paint paint=new Paint(); 5 private float val=0; 6 7 public originalView(Context context) { 8 super(context); 9 } 10 11 public originalView(Context context, AttributeSet attrs) { 12 super(context, attrs); 13 } 14 15 public originalView(Context context, AttributeSet attrs, int defStyleAttr) { 16 super(context, attrs, defStyleAttr); 17 18 // このへんで初期化処理 19 20 } 21 @Override 22 protected void onDraw(Canvas canvas) { 23 if(val==0) 24 { 25 val=canvas.getHeight()/16.0f; 26 } 27 paint.setColor(Color.WHITE); 28 canvas.drawRect(0,0,canvas.getWidth(),canvas.getHeight(),paint); 29 int x,y; 30 paint.setColor(Color.RED); 31 32 //正方形を描き、画面に敷き詰める。画面の際に線を引かない 33 for(y=1;y<16;y++) 34 canvas.drawLine(0,y*val,canvas.getWidth(),y*val,paint); 35 36 for(y=1;y<9;y++) 37 canvas.drawLine(y*val,0,y*val,canvas.getHeight(),paint); 38 39 //各グリッドに×を描画 40 for(y=0;y<16;y++) 41 { 42 for(x=0;x<9;x++) 43 { 44 canvas.drawLine(x*val,y*val,(x+1)*val,(y+1)*val,paint); 45 canvas.drawLine((x+1)*val,y*val,x*val,(y+1)*val,paint); 46 } 47 } 48 } 49}
と置いて、正方形で画面を敷き詰め、各マスに×を描画しました。
しかし、なぜか、最下段と最も右の列の×が、画面際と接することがありません。
誤差が発生しているようです。
しかも、色むらがあり、線の色が均等ではありません。
上記のスクリーンショットは、下記の図の通りです。
valの型をdoubleにしても同じでした。
どうすれば、この誤差を解消し、正方形で敷き詰めることができますか。
プログラムを走らせた実機はHUAWEI mate9です。
宜しくお願い申し上げます。
回答1件
あなたの回答
tips
プレビュー