Android 如何将文本添加到图像并另存为新图像
我正在尝试创建一个Android应用程序,在图像中添加随机引用 一般过程如下:Android 如何将文本添加到图像并另存为新图像,android,android-layout,Android,Android Layout,我正在尝试创建一个Android应用程序,在图像中添加随机引用 一般过程如下: 从启动应用程序时显示的自定义给定图像开始 从这个图像中,用户所能做的就是点击它,生成一个新的随机“引号”,覆盖在图像上 用户可以使用所选的报价保存新创建的图像,并将其设置为墙纸 我已经到了可以在ImageView中显示图像的程度 我的引号列表存储在我的strings.xml文件中。我知道几年前我用imagemagick为PC做了这件事(用文本保存图像) 看起来imagemagick已经移植到android上了,所以我
我的引号列表存储在我的
strings.xml
文件中。我知道几年前我用imagemagick为PC做了这件事(用文本保存图像)
看起来imagemagick已经移植到android上了,所以我会开始深入研究他们的文档
我在应用程序中执行类似操作。使用画布 我编辑了一段代码,实际上在背景上添加了一些其他的图片 代码的核心:
private static Bitmap getPoster(...) {
Bitmap background = BitmapFactory.decodeResource(res, background_id)
.copy(Bitmap.Config.ARGB_8888, true);
Canvas canvas = new Canvas(background);
Typeface font = Typeface.createFromAsset(res.getAssets(), FONT_PATH);
font = Typeface.create(font, Typeface.BOLD);
Paint paint = new Paint();
paint.setTypeface(font);
paint.setAntiAlias(true);
paint.setColor(Color.WHITE);
paint.setStyle(Style.FILL);
paint.setShadowLayer(2.0f, 1.0f, 1.0f, Color.BLACK);
float fontSize = getFontSize(background.getWidth(), THE_QUOTE, paint); //You'll have to define a way to find a size that fits, or just use a constant size.
paint.setTextSize(fontSize);
canvas.drawText(THE_QUOTE, (background.getWidth() - paint.measureText(THE_QUOTE)) / 2,
background.getHeight() - FILLER_HEIGHT, paint); //You might want to do something different. In my case every image has a filler in the bottom which is 50px.
return background;
}
将您自己的版本放在一个类中,并向它提供图像id和其他任何内容。它会返回一个位图供您使用(在imageview中显示,让用户保存并设置为Wallpap)。确定!弗朗西斯科,我的朋友,我有一个想法,虽然不是一个有效的代码('因为我不是很擅长它)。这就是: 在
ImageView
上实现一个onClickListener()
,如下所示:
ImageView iv = (ImageView)findViewById(R.id.imageview1);
iv.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
/** When I say do your stuff here, I mean read the user input and set your wallpaper here. I'm sorry that I don't really know how to save/set the wallpaper */
}
});
在阅读用户输入/生成随机引号时,您可以执行以下操作:
您说过您已经在strings.xml
文件中保存了引号。使用这些字符串的ID,我认为您可以实现一个切换
案例场景,其中它使用java导入
-java.util.Scanner
和java.util.Random
。最终,在ImageView
onClickListener
中使用这些可以/应该得到所需的输出
我知道我的答案太模糊了,但我有一个微弱的希望,那就是它给了你一分钟的时间,让你知道你可以实施什么。我真的希望有比这更好的答案。如果没有,那么我希望这对你有所帮助,我也希望我没有把你引向错误的方向,因为这只是一个猜测。对不起,我只有这些了 对不起,太长了,不太清楚,谢谢托马斯。这只是一张图片还是多张图片?我理解字符串/引号部分。我只是想澄清一下图片部分。谢谢你的回复。图像总是一样的,可以改变的是打印在图像上的引用,这应该在用户点击图像时发生。你的回答其实很好,因为我也想到了同样的事情。使用随机变量生成一个介于1和N之间的数字(其中N是引号的数量)并将文本打印与OnClick事件关联:)但我也移动了我的项目逻辑,让应用程序安装一个新的实时墙纸,它将完成所有工作,而不是使用应用程序-->生成新引号-->保存图像…每次只有一个引号有什么意义:)酷!那么接受我的答案并投票表决怎么样