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"
android:numColumns="7"
android:isScrollContainer="false"
android:stretchMode="columnWidth"/>

本文介绍如何在Android中使用自定义View来创建数独界面,因为GridView无法满足绘制分隔线和定制背景的需求。通过学习View的绘制过程,我们可以创建一个SudokuView。文章提供了一个实例,展示如何在布局文件中使用这个自定义View,并在SudokuView.java中设置了宽高,以确保界面正确显示。最后,通过invalidate()触发重绘。
最低0.47元/天 解锁文章
1234

被折叠的 条评论
为什么被折叠?



