我想在Android上执行以下操作:
实现这一目标的最佳方法是什么?
据我所知,图像可以设置为onClickListener / onTouchListener,一旦onClick / onTouch被调用,我应该能够在该位置添加一个图标,其中图标是图像,并设置为onTouchListener为好。 当我点击该图像时,会出现一个edittext - 不知道如何让它动态扩展? 输入文本并单击一个按钮后,应保存整个图像(包含edittext中的文本) - 我该怎么做?画在画布上?
帮助将非常感谢! :)
答案 0 :(得分:1)
第1步
您的视图应位于RelativeLayout中,以便将它们放在彼此之上。按ImageView时,小的将设置为Visible(它必须在xml文件中不可见或以编程方式隐藏)。
imgV.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
imageViewButton.setVisibility(View.VISIBLE);
}
});
第2步
按小图片时,EditText将变为可见。与上面设定的相同。
imageViewButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
editText.setVisibility(View.VISIBLE);
}
});
第3步
如果将width设置为match_parent并将height设置为wrap_content,则EditText会在键入时自动扩展。
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10" >
</EditText>
第4步
如果要保存布局,请在onClick事件中实现此功能。 (在下面的例子中,它是一个LinearLayout,但你会有一个RelativeLayout,我想你可以根据你的需要改变它)
根据How to save the layout view as image or pdf to sd card in android?
的答案在清单文件中添加权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
使用以下代码
LinearLayout content = findViewById(R.id.rlid);
content.setDrawingCacheEnabled(true);
Bitmap bitmap = content.getDrawingCache();
File file,f;
if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))
{
file =new File(android.os.Environment.getExternalStorageDirectory(),"TTImages_cache");
if(!file.exists())
{
file.mkdirs();
}
f = new File(file.getAbsolutePath()+file.seperator+ "filename"+".png");
}
FileOutputStream ostream = new FileOutputStream(f);
bitmap.compress(CompressFormat.PNG, 10, ostream);
ostream.close();
}
catch (Exception e){
e.printStackTrace();
}