我一直在寻求帮助这样做,我正在尝试创建一个蛇游戏,我需要做的是在点击按钮时绘制到位图或图像视图中,这就是问题:每次我画一个形状,然后布局被删除,我的目标是绘制到任何对象,而我仍然可以单击一个按钮,我已经做的是绘制布局和显示图像,这是我的代码:
public class DisplayMessage extends Activity {
ImageView image;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_message);
Intent intent = getIntent();
String message = intent.getStringExtra("Hola Jorge");
DrawView drawView;
drawView = new DrawView(this);
setContentView(drawView);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.display_message, menu);
return true;
}
}
package mipaca;
public class DrawView extends View {
Paint paint = new Paint();
public DrawView(Context context) {
super(context);
paint.setColor(Color.BLACK);
}
@Override
public void onDraw(Canvas canvas) {
//canvas.drawColor(Color.GREEN);
canvas.drawLine(0, 0, 20, 20, paint);
canvas.drawLine(20, 0, 0, 20, paint);
Bitmap compara = Bitmap.createBitmap(100, 100, Config.ARGB_8888);
canvas.drawBitmap(compara, 0, 0, paint);
Rect rectangle = new Rect(0,0,100,100);
canvas.drawBitmap(compara, 0,0,null);
}
}
public class MainActivity extends Activity {
CharSequence[] items = {"Google","Apple","Microsoft"};
boolean[] itemsChecked = new boolean[items.length];
ImageView image;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void onClick2(View v)
{
Intent intent = new Intent(this, DisplayMessage.class);
startActivity(intent);
}
public void onClick(View v)
{
//image.setImageResource(R.drawable.ferrari_458_italia_1);
showDialog(0);
DrawView2 alpha;
}
@Override
protected Dialog onCreateDialog(int id){
switch(id){
case 0:
return new AlertDialog.Builder(this)
.setIcon(R.drawable.ic_launcher)
.setTitle("Este es un diálogo con algo de texto")
.setPositiveButton("OK",
new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int whichButton)
{
Toast.makeText(getBaseContext(), "bien, click!", Toast.LENGTH_SHORT).show();
}
}
)
.setNegativeButton("Cancel", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int whichButton)
{
Toast.makeText(getBaseContext(), "bien, click!", Toast.LENGTH_SHORT).show();
}
}
).create();
}
return null;
}
public void onDraw(Canvas canvas)
{
Paint p = new Paint();
p.setColor(Color.BLUE);
p.setAntiAlias(true);
canvas.drawColor(Color.CYAN);
canvas.drawCircle(200, 200, 50, p);
}
}
答案 0 :(得分:0)
我希望这有助于某人,我忘记了这个问题,直到我遇到这个想法:我们可以使用ImageView然后使用位图用画布绘制任何形状,我更容易用这种方式绘制而不是使用OnPaint函数和invalidate因为只是修改位图并显示它我们可以在图像上移动一个对象,但仍然有按钮,文本框等。这就是我所做的:
(亚麻是我们的ImageView)
Bitmap bMap = BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
android.graphics.Bitmap.Config bitmapConfig = bMap.getConfig();
if(bitmapConfig == null) {
bitmapConfig = android.graphics.Bitmap.Config.ARGB_8888;
}
bMap = bMap.copy(bitmapConfig, true);
Canvas canvas = new Canvas(bMap);
paint.setColor(Color.rgb(61, 61, 61));
canvas.drawCircle(10, 10, 5, paint);
linen = (ImageView)findViewById(R.id.View1);
linen.setImageBitmap(bMap);