android - 将 Canvas 转换为位图 Android - 黑色背景

标签 android android-layout canvas bitmap

我问了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/

相关文章:

android - 单击切换按钮时 TextInputLayout (TextInputEditText) NullpointerException

java - Android 中的自定义曲线

android - AdMob "Not enough space to show ad"错误

Android Studio 不会导入 SVG Vector 的所有部分

html - 使用 HTML5 Canvas - 围绕任意点旋转图像

java - 阻止 Java Canvas 在重绘时清除

java - 空 ListView 显示另一个 Activity

android - 无法在安装在 4.1 的旧版本上的我的应用程序上接收 android GCM 消息

Android Studio XML 无法识别 objectAnimator

java - 为什么我的第一个应用程序没有出现在我的手机上?