Я пытаюсь создать игру судоку на android и хочу убедиться, что пользователь может видеть, какую ячейку он выбрал. В настоящее время класс SudokuCell использует mPaint для рисования ячеек и чисел. Можно ли добавить OnCLickListner, чтобы фон ячейки динамически менял цвет или добавлял символ в ячейку, чтобы пользователю было ясно, какая ячейка была выбрана?
public class SudokuCell extends BaseSudokuCell{
private Paint mPaint;
public SudokuCell(Context context){
super(context);
mPaint =new Paint();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
drawNumber(canvas);
drawLines(canvas);
}
private void drawLines(Canvas canvas) {
mPaint.setColor(Color.CYAN);
mPaint.setStrokeWidth(5);
mPaint.setStyle(Paint.Style.STROKE);
canvas.drawRect(0,0,getWidth(), getHeight(), mPaint);
}
private void drawNumber(Canvas canvas) {
mPaint.setColor(Color.MAGENTA);
mPaint.setTextSize(60);
mPaint.setStyle(Paint.Style.FILL);
Rect bounds = new Rect();
mPaint.getTextBounds(String.valueOf(getValue()), 0, String.valueOf(getValue()).length(), bounds);
if (getValue() != 0) {
canvas.drawText(String.valueOf(getValue()), (getWidth() - bounds.width()) / 2, (getHeight() + bounds.height()) / 2, mPaint);
}
}
}
Нужно ли добавлять новый файл xml, чтобы показать, что выбрано? Нужно ли менять свой SudokuGridView?
public class SudokuGridView extends GridView {
private final Context context;
public SudokuGridView(final Context context, AttributeSet attr) {
super(context, attr);
this.context = context;
SudokuGridViewAdap gridViewAdap = new SudokuGridViewAdap(context);
setAdapter(gridViewAdap);
setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
int x = position % 9;
int y = position /9;
Game.getInstance().setSelectedPos(x,y);
}
});
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, widthMeasureSpec);
}
class SudokuGridViewAdap extends BaseAdapter {
private Context context;
public SudokuGridViewAdap(Context context){
this.context = context;
}
@Override
public int getCount() {
return 81;
}
@Override
public Object getItem(int pos) {
return null;
}
@Override
public long getItemId(int pos) {
return 0;
}
@Override
public View getView(int pos, View Convertview, ViewGroup parent) {
return Game.getInstance().getGrid().getItem(pos);
}
}
}
Вот это xml
<com.example.sudokuvarients.normalsudoku9x9.SudokuGrid.SudokuGridView
android:id="@+id/sudokuGridView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:numColumns="9"
android:horizontalSpacing="0dp"
android:verticalSpacing="0dp"
/>