9*9的方格的界面(数独)可能会想到用GridView来实现,但是无法绘制分隔线,边框颜色,宫背景等。所以需要自己实现自定义的View,用来显示数独界面。
先看下这篇博文,了解下绘制View的机制。Android中View的绘制过程 onMeasure方法简述 附有自定义View例子
先看下效果图:
对应的布局文件fragment_sudoku_view.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context = ".core.SudokuViewFragment"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingLeft="10dp"
android:paddingRight="10dp"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="最佳用时:"
/>
<TextView
android:id="@+id/bestTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="无"
/>
<TextView
android:id="@+id/timerText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:textStyle="bold"
android:text="0:0"/>
</LinearLayout>
<com.sudoku.jack.sudoku.core.SudokuView
android:id="@+id/sudokuView"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<GridView
android:id="@+id/operateGridView"
android:layout_marginTop="5dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:horizontalSpacing="3dp"
android:verticalSpacing="3dp"
android:gravity="center"