5

我想要的是,用手指触摸图像来移动文本,单击按钮将现有图像重绘为新图像,就像粘贴在其上的文本一样。

它适用于 v3.1 以及模拟器。但我尝试在 v2.2 设备上进行测试,它发生了关闭。虽然它对设备有所有支持。你能帮我离开这里吗?几周后它会很重要。提前致谢。

///Redrawing the image & touchin Move of the Canvas with text
public void redrawImage(String path,float sizeValue,String textValue,int colorValue) {
        BitmapFactory.Options options = new BitmapFactory.Options();
        try {
             options.inMutable = true;
        } catch (Exception e) {
             // TODO: handle exception
             System.out.println("#############Error is======"+e.getMessage());
        }

        Bitmap bm = BitmapFactory.decodeFile(path,options);

        proxy = Bitmap.createBitmap(bm.getWidth(), bm.getHeight(), Config.ARGB_8888);
        Canvas c = new Canvas(proxy);

        //Here, we draw the background image.
        c.drawBitmap(bm, new Matrix(), null);

        Paint paint = new Paint();
        paint.setColor(colorValue); // Text Color
        paint.setStrokeWidth(30); // Text Size
        paint.setTextSize(sizeValue);

        System.out.println("Values passing=========="+someGlobalXvariable+",   "+someGlobalYvariable+",   "
                                      +sizeValue+",   "+textValue);

        //Here, we draw the text where the user last touched.
        c.drawText(textValue, someGlobalXvariable, someGlobalYvariable, paint);

        popImgae.setImageBitmap(proxy);
}
4

1 回答 1

0

知道何时发生强制关闭会有所帮助,例如在应用程序启动后,一旦您在文本绘制之前触摸?

在设备上调试
一个非常简单且完全可靠的技术是在实际设备上以调试模式运行代码。在函数的开头添加一个断点并遍历每一行,直到它强制关闭。

可能 OOM
如果您重复调用 redrawImage,就像触摸期间的每一帧一样,那么分配新的位图可能会很快消耗大量内存并导致崩溃:

Bitmap bm = BitmapFactory.decodeFile(path,options);

然后强制关闭可能会在一段时间后发生。尝试将 bm 更改为从文件中分配和读取一次的方法参数或成员字段。

于 2013-08-18T16:22:53.580 回答