我问了this关于将文本绘制到 Canvas 的问题,我被告知我可以将 TextView 添加到布局并将布局绘制到 Canvas ,如 this
我的问题是,当我尝试转换为 bmp 并显示时,我得到一个黑色矩形。
这是我的代码:
LinearLayout layout = new LinearLayout(getActivity());
TextView textView = new TextView(getActivity());
textView.setVisibility(View.VISIBLE);
textView.setText("صيققق٣يفاوووووومالؤؤتمكا");
layout.addView(textView);
layout.setBackgroundColor(getActivity().getResources().getColor(R.color.transparent));
textView.setTextColor(getResources().getColor(R.color.white));
layout.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
Bitmap bitmap = Bitmap.createBitmap(layout.getMeasuredWidth(), layout.getMeasuredHeight(), Bitmap.Config.RGB_565);
//layout.draw(canvas);
Canvas canvas = new Canvas(bitmap);
layout.layout(0,0, canvas.getWidth(), canvas.getHeight());
layout.draw(canvas);
我知道我错了,但我不知道在哪里,我想我正在按照正确的步骤..
谁能指出我哪里出错了。谢谢
最佳答案
我不明白在 Canvas 上绘制文本有什么问题,但试试看:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView imageView = (ImageView) findViewById(R.id.image_for_test_displaying);
imageView.setImageBitmap(getBitmapFromArabicText("صيققق٣يفاوووووومالؤؤتمكا"));
}
private Bitmap getBitmapFromArabicText(String string) {
Paint paint = new Paint();
//size can be customized
Bitmap bitmap = Bitmap.createBitmap(400, 400, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
//Draw black background
paint.setColor(Color.BLACK);
canvas.drawRect(0, 0, bitmap.getWidth(), bitmap.getHeight(), paint);
//draw white text
paint.setColor(Color.WHITE);
//text position you can manage from yourself
canvas.drawText(string, 10, 10, paint);
return bitmap;
}
}
关于android - 将 Canvas 转换为位图 Android - 黑色背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31387429/