我正在开发一个简单的水印应用,用户可以上传图片,并且可以使用Seekbar编辑水印文本视图的不透明度和文本大小。完成编辑后,用户将按保存按钮保存编辑后的文本视图。最终结果应该是包含用户编辑的水印textview的新图像。我使用Canvas方法在上传的图像上绘制水印textview。但是,我在搜索栏中遇到数据集的问题并没有通过画布,我的最终结果是没有水印textview创建的新图像。请给我指导。谢谢。 这是用户编辑文本大小和不透明度的搜索栏代码: -
SeekBar trans=(SeekBar)findViewById(R.id.main_sb_transparent);
SeekBar size=(SeekBar)findViewById(R.id.main_sb_size);
TextView water_text=(TextView)findViewById(R.id.watertext);
float Alpha; // store the text opacity value
int Size; // store the text size value
trans.setOnSeekBarChangeListener(new OnSeekBarChangeListener()
{
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
Alpha=(float)(trans.getProgress())/(float)(seekBar.getMax());
water_text.setAlpha(Alpha);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
size.setOnSeekBarChangeListener(new OnSeekBarChangeListener()
{
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
Size=size.getProgress();
water_text.setTextSize(Size);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
}
这是将水印文字绘制到上传图片的功能: -
private Bitmap drawText(Bitmap source)
{
int width=source.getWidth();
int height=source.getHeight();
Bitmap result=Bitmap.createBitmap(width, height, source.getConfig());
Canvas canvas=new Canvas(result);
canvas.drawBitmap(source,0,0,null);
Paint paint = new Paint();
paint.setColor(colors);
paint.setTypeface(font);
paint.setAlpha((int) (Alpha)); // <== Alpha value obtained from seekbar
paint.setTextSize(Size); <== Size value obtained from seekbar
paint.setTextAlign(Paint.Align.CENTER);
int xPos=(canvas.getWidth()/2);
int yPos=(int)((canvas.getHeight()/2)-((paint.descent()+paint.ascent())/2));
canvas.drawText(edited, xPos, yPos, paint);
return result;
}