Java Android上的随机黑白网格

Java Android上的随机黑白网格,java,android,image,matrix,Java,Android,Image,Matrix,我从Android开始,我从事图像处理。 我想创建一个随机黑白像素的网格。我试过使用位图,但我不知道它是如何工作的 我尝试使用以下代码,但它显示: 表达式的类型必须是数组类型,但已解析为矩阵 即使没有这个错误,我也不确定这是正确的方法。所以如果你有任何想法 谢谢大家! import java.util.Random; import android.support.v7.app.ActionBarActivity; import android.graphics.Bitmap; import an

我从Android开始,我从事图像处理。 我想创建一个随机黑白像素的网格。我试过使用位图,但我不知道它是如何工作的

我尝试使用以下代码,但它显示: 表达式的类型必须是数组类型,但已解析为矩阵

即使没有这个错误,我也不确定这是正确的方法。所以如果你有任何想法

谢谢大家!

import java.util.Random;
import android.support.v7.app.ActionBarActivity;
import android.graphics.Bitmap;
import android.graphics.Matrix;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;

public class MainActivity extends ActionBarActivity {       

    private ImageView img;           

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        img = (ImageView)findViewById(R.id.imageView1);                     
    }

    public void RandomImage (View view)
    {
        Random rand = new Random(); 

        Matrix mat = new Matrix();
        for (int i=0; i<100; i++)
        {
            for (int j=0;  j<100 ; j++)
            {                       
                mat[i][j]=rand.nextInt(1);
                img.setImageMatrix(mat);                                     
            }                                               
        }                                   
    }                   
}
import java.util.Random;
导入android.support.v7.app.ActionBarActivity;
导入android.graphics.Bitmap;
导入android.graphics.Matrix;
导入android.graphics.drawable.BitmapDrawable;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.ImageView;
公共类MainActivity扩展了ActionBarActivity{
私有图像视图img;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
img=(ImageView)findViewById(R.id.imageView1);
}
公共图像(视图)
{
Random rand=新的Random();
矩阵矩阵=新矩阵();

对于(inti=0;i我个人建议您选择GridView,并根据您的需要进行定制


希望这有帮助。

您可以使用位图来实现这一点,首先创建一个具有首选大小的位图(本例中为100*100):

使用黑色或白色像素为位图上色(遍历每个像素并指定“随机颜色”):

在全球范围内,您的活动应如下所示:

public class MainActivity extends ActionBarActivity {       

    private ImageView img;           

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        img = (ImageView)findViewById(R.id.imageView1); 
        createAndSetRandomImage();                    
    }

    public void createAndSetRandomImage(){
        Random rand = new Random();

        for (int i=0; i<width; i++){
            for (int j=0;  j<height ; j++){
            // default color : Black
            int colorToPut = Color.BLACK;

            // If lucky get a white pixel ;)
            if(rand.nextInt(2)==0){
                colorToPut = Color.WHITE;
            }

            // Set color to (i,j) pixel
            randomGridBitmap.setPixel(i,j,colorToPut);
            }
        }
        imv.setImageBitmap(randomGridBitmap);                        
    }                   
}
公共类MainActivity扩展了ActionBarActivity{
私有图像视图img;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
img=(ImageView)findViewById(R.id.imageView1);
createAndSetRandomImage();
}
public void createAndSetRandomImage(){
Random rand=新的Random();

for(int i=0;我不认为
img.setImageMatrix(mat);
应该在
for
循环中。但这是一个单独的问题啊,你是对的。这不是故意的。我会更改它。另一点是
nextInt(1)
将只返回0,我认为(你应该检查这个)。
nextInt(2)将返回0或1。考虑绘制正方形(或取决于你想要的刻度的像素)。在自定义画布上。实现类似网格的绘图。或使用画布在位图上返回网格图像..更多信息请参阅我想要的结果更像二维码。因此GridView并不真正合适。这正是我建议的,但没有示例:)+1.我认为还有绘制小正方形的空间,而不仅仅是像素。这取决于要求。所以我尝试了你的建议。我真的很喜欢这个想法!没有错误,但当我运行应用程序时,什么都没有发生…你的方法RandomImage是如何调用的?onCreate中与此无关
Random rand = new Random();

for (int i=0; i<width; i++){
    for (int j=0;  j<height ; j++){
        // default color : Black
        int colorToPut = Color.BLACK;

        // If lucky get a white pixel ;)
        if(rand.nextInt(2)==0){
            colorToPut = Color.WHITE;
        }

        // Set color to (i,j) pixel
        randomGridBitmap.setPixel(i,j,colorToPut);
    }
}
imv.setImageBitmap(randomGridBitmap);
public class MainActivity extends ActionBarActivity {       

    private ImageView img;           

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        img = (ImageView)findViewById(R.id.imageView1); 
        createAndSetRandomImage();                    
    }

    public void createAndSetRandomImage(){
        Random rand = new Random();

        for (int i=0; i<width; i++){
            for (int j=0;  j<height ; j++){
            // default color : Black
            int colorToPut = Color.BLACK;

            // If lucky get a white pixel ;)
            if(rand.nextInt(2)==0){
                colorToPut = Color.WHITE;
            }

            // Set color to (i,j) pixel
            randomGridBitmap.setPixel(i,j,colorToPut);
            }
        }
        imv.setImageBitmap(randomGridBitmap);                        
    }                   
}