在画布上加载图片并在图片上叠加文本并保存

时间:2014-05-14 03:44:05

标签: java android android-image

我想创建一个应用程序,只需将选定的图像加载到画布上,用户就可以使用freedon在图像上的任何位置覆盖图像上的文本。即,在他在图像上叠加文字后,他应该能够移动文本,编辑文本。 如何实现这一目标。是我必须加载框架布局,然后我必须动态放置文本视图以获得文本叠加或其他任何事情都可以完成。 我想实现类似下面给出的图片 enter image description here 从操作栏单击“添加文本”时,我想将文本添加到用户加载的图片中。 搜索了很多,但无法得到任何答案。 我只想知道如何在图像上获取此文本并将其移动到图片上的任何位置。 此外,将保存在设备上的最终图像将与文本重叠在图像上。图片中出现的框不应出现在图像中。 所有的专家都请他们指导我。

1 个答案:

答案 0 :(得分:1)

您可以将ImageView和EditText添加到FrameLayout,然后EditText将覆盖您的图像。 To drag查看您应该设置OnTouchListner:

     mEditText.setOnTouchListener(new OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
    final int action = event.getAction();

    mLastTouchX = event.getRawX();
    mLastTouchY = event.getRawY();

    switch (action) {
    case MotionEvent.ACTION_DOWN: {
    RelativeLayout.LayoutParams lParams = (RelativeLayout.LayoutParams) getLayoutParams();
    mDeltaX = mLastTouchX - lParams.leftMargin;
    mDeltaY = mLastTouchY - lParams.topMargin;

    break;
    }
    case MotionEvent.ACTION_MOVE: {
    mLastTouchX = event.getRawX();
    mLastTouchY = event.getRawY();

    final RelativeLayout.LayoutParams params = (LayoutParams) getLayoutParams();
    params.leftMargin = (int) (mLastTouchX - mDeltaX);
    params.topMargin = (int) (mLastTouchY - mDeltaY);
    setLayoutParams(params);

    break;
    }
    }
    invalidate();

    return true;
    }
});

要创建最终图像,您可以在画布上绘制 原始图像和文字。

<强>更新: 您可以使用addView添加视图:

final EditText et  = new EditText(getContext());
et.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
mFramLayout.addView(et);

也可以用边距调整位置。