Android 将图像添加到蜂巢视图

Android 将图像添加到蜂巢视图,android,Android,我有这个代码,它允许我在单击每个单元格时更改其颜色。首先,我希望能够在我单击的每个单元格中放置一个图像。在那之后,我将尝试制作一个带有图像的列表视图,当我点击一些ceel时,可以选择我想放在那里的图像!谢谢大家! package com.example.cosmin.catanadvice; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory;

我有这个代码,它允许我在单击每个单元格时更改其颜色。首先,我希望能够在我单击的每个单元格中放置一个图像。在那之后,我将尝试制作一个带有图像的列表视图,当我点击一些ceel时,可以选择我想放在那里的图像!谢谢大家!

package com.example.cosmin.catanadvice;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;

import com.squareup.picasso.Picasso;

  public class HoneycombView extends View 
{
private Paint wallPaint = new Paint();
private Paint fillPaint = new Paint();
private Paint cachePaint = new Paint();
private Path combPath;
private Bitmap cacheBmp;
private Canvas cacheCan;

private int cellWidth;
private int columns;
private int rows;
private boolean[][] cellSet;

private OnCellClickListener listener;

 public HoneycombView(Context context)
{
    this(context, null);
}

public HoneycombView(Context context, AttributeSet attrs)
{
    super(context, attrs);

    wallPaint.setColor(Color.YELLOW);
    wallPaint.setStyle(Paint.Style.STROKE);
    wallPaint.setStrokeWidth(5f);

    fillPaint.setStyle(Paint.Style.FILL);
    cachePaint.setStyle(Paint.Style.FILL);
}

public void initialize(int columns, int rows)
{
    this.columns = columns;
    this.rows = rows;

    this.cellSet = new boolean[columns][rows];
}

public interface OnCellClickListener
{
    public void onCellClick(int column, int row);
}

public void setOnCellClickListener(OnCellClickListener listener)
{
    this.listener = listener;
}

public void setCell(int column, int row, boolean isSet)
{
    cellSet[column][row] = isSet;
    invalidate();
}

public boolean isCellSet(int column, int row)
{
    return cellSet[column][row];
}

@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh)
{
    super.onSizeChanged(w, h, oldw, oldh);

    cacheBmp = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
    cacheCan = new Canvas(cacheBmp);

    cellWidth = 2 * w / (2 * columns + columns - 1);
}

@Override
protected void onDraw(Canvas canvas)
{
    super.onDraw(canvas);

    canvas.drawColor(Color.GREEN);

    boolean oddRow;
    int xOff;

    combPath = getHexPath(cellWidth / 2f, cellWidth / 2f, (float) (cellWidth * Math.sqrt(3) / 4));
int verific =0;
    int verific2=0;
    for (int r = 0; r < rows; r++)
    {
        oddRow = (r & 1) == 1;
        xOff = 0;


        for (int c = 0; c < columns; c++)
        {
            if (!(oddRow && c == columns -1))
            {
                verific++;
                if(verific!=1&&verific!=3&&verific!=21&&verific!=23) {

                    fillPaint.setColor(cellSet[c][r] ? Color.BLUE : Color.WHITE);
                    canvas.drawPath(combPath, fillPaint);
wallPaint.setColor(Color.YELLOW);
                    canvas.drawPath(combPath, wallPaint);
                //    Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.airplane);


                    cachePaint.setColor(Color.argb(255, 1, c, r));
                    cacheCan.drawPath(combPath, cachePaint);

                    combPath.offset((int) (1.5f * cellWidth), 0);
                    xOff += 1.5f * cellWidth;
                }else{
                    fillPaint.setColor(cellSet[c][r] ? Color.GREEN : Color.GREEN);
                    canvas.drawPath(combPath, fillPaint);
                    wallPaint.setColor(Color.GREEN);

                    canvas.drawPath(combPath, wallPaint);

                    cachePaint.setColor(Color.argb(100, 1, c, r));
                    cacheCan.drawPath(combPath, cachePaint);

                    combPath.offset((int) (1.5f * cellWidth), 0);
                    xOff += 1.5f * cellWidth;
                }
            }
        }

        combPath.offset(-xOff + (oddRow ? -1 : 1) * 3 * cellWidth / 4, (float) (cellWidth * Math.sqrt(3) / 4));
    }
}

@Override
public boolean onTouchEvent(MotionEvent event)
{
    if (event.getAction() != MotionEvent.ACTION_DOWN)
        return true;

    int pixel = cacheBmp.getPixel((int) event.getX(), (int) event.getY());

    int r = Color.red(pixel);
    if (r == 1)
    {
        int g = Color.green(pixel);
        int b = Color.blue(pixel);

        if (listener != null)
        {
            listener.onCellClick(g, b);
        }
    }
    return true;
}

private Path getHexPath(float size, float centerX, float centerY)
{
    Path path = new Path();

    for (int j = 0; j <= 6; j++)
    {
        double angle = j * Math.PI / 3;
        float x = (float) (centerX + size * Math.cos(angle));
        float y = (float) (centerY + size * Math.sin(angle));
        if (j == 0)
        {
            path.moveTo(x, y);
        }
        else
        {
            path.lineTo(x, y);
        }
    }

    return path;
}

}

您现在面临的最紧迫的问题是什么?请更具体一点!我想在我点击某个单元格时添加一个随机图像,就像我点击某个单元格以更改图像中的单元格内容时使用的颜色一样!
public class Activitate extends Activity
    implements HoneycombView.OnCellClickListener {
HoneycombView honey;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().requestFeature(Window.FEATURE_NO_TITLE);

    honey = new HoneycombView(this);
    honey.initialize(3, 9);
    honey.setOnCellClickListener(this);

    setContentView(honey);
}

@Override
public void onCellClick(int column, int row) {
    honey.setCell(column, row, !honey.isCellSet(column, row));
}