当用户输入文本时,在下次单击时,图像上的先前文本消失了。如何在所有点击事件上将所有文本输入保存在可绘制的位图上。请建议。
onCreate() {
ImageView mView = (ImageView) findViewById(R.id.dstImageView);
Drawable myDrawable = getResources().getDrawable(R.drawable.pic2);
mView.setImageDrawable(myDrawable);
mView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
float x = event.getX();
float y = event.getY();
showNameDialog();
}
}
private void showNameDialog() {
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Photo Tag");
alert.setMessage("Tag Message");
// Set an EditText view to get user input
final EditText input = new EditText(this);
alert.setView(input);
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
Editable value = input.getText();
// Do something with value!
ImageView mView3 = (ImageView) findViewById(R.id.dstImageView);
myDrawable test= writeTextOnDrawable(R.drawable.pic2,value.toString(),touchxpos,touchypos);
mView3.setImageDrawable(myDrawabletest);
}
});
// write text on drawable
private BitmapDrawable writeTextOnDrawable(int drawableId, String text,float xPos,float yPos)
{
Bitmap bm = BitmapFactory.decodeResource(getResources(), drawableId).copy(Bitmap.Config.ARGB_8888, true);
Typeface tf = Typeface.create("Helvetica", Typeface.BOLD);
Paint paint = new Paint();
paint.setStyle(Style.FILL);
paint.setColor(Color.RED);
paint.setTypeface(tf);
paint.setTextAlign(Align.CENTER);
paint.setTextSize(11);
Rect textRect = new Rect();
paint.getTextBounds(text, 0, text.length(), textRect);
Canvas canvas = new Canvas(bm);
canvas.drawText(text, xPos, yPos, paint);
return new BitmapDrawable(getResources(), bm);
}
如何为每次单击将文本保存在 bitmapdrawable 上。每次以前的文本都被最新的替换?