Articles of canvas

覆盖位图时出现错误android.graphics.Canvas.throwIfRecycled

我试图覆盖使用以下方法在canvas上的图像: private Bitmap overlay(Bitmap bmp1, Bitmap bmp2) { bmOverlay = Bitmap.createBitmap(70, 70, Bitmap.Config.RGB_565); canvas = new Canvas(bmOverlay); canvas.drawBitmap(bmp1, 0, 0, null); //line 179 canvas.drawBitmap(bmp2, 0, 0, null); return bmOverlay; } 但是,我的应用程序不断崩溃,日志读取: java.lang.NullPointerException在android.graphics.Canvas.throwIfRecycled(Canvas.java:954)在android.graphics.Canvas.drawBitmap(Canvas.java:980)在com.MyApp.overlay(MyApp.java:179) 谁能帮忙?

Android浏览器中的SVG

我知道它本身不支持,但有没有JS Shims渲染成canvas对象或什么东西,可以让我在原生的Android浏览器呈现SVG? (不是歌剧等,因为我想避免让用户需要安装另一个浏览器)

你能解释TextView + Gravity + SingleLine和Canvas的行为吗?

我有一个自定义的TextView,它的onDraw方法重写,在文本视图周围绘制一个红色的边框。 当我将重力设置为其他值时 , ANDLineLine = true :不绘制边框。 这有什么理由吗? 有没有解决办法? 下面的截图说明了这个问题:第二个textView没有边框 TL表示TOP | LEFT; C表示CENTER; SL表示单线; T的意思是真的; F表示错误 这里是代码(可以复制/粘贴和运行 – 不需要布局文件) import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.os.Bundle; import android.view.Gravity; import android.widget.RelativeLayout; import android.widget.TextView; public class MyActivity extends Activity { private final int TEXT_VIEW_WIDTH_PX = 400; private final int TEXT_VIEW_HEIGHT_PX = […]

android如何旋转canvas矩形

我创build一个特定的大小的矩形,现在我想旋转到45度,我用canvas.rotate,matrix,但不工作。 如何在Android中旋转canvas的正确方法? 我很好奇Path.Direction.CW,是否用于旋转? 但我没有看到path()中的任何旋转函数 paint.setAntiAlias(true); paint.setStrokeWidth(2); paint.setColor(Color.BLUE); paint.setAlpha(75); Path path = new Path(); path.addRect(166, 748, 314, 890, Path.Direction.CW); canvas.rotate(45); canvas.drawPath(path, paint);

如何解决“canvas:试图使用回收的位图错误”?

我正在创build一个RecyclerView来显示图片的网格。 当select其中一个时,它应该打开一个转换的新活动。 我正在使用Glide库来加载图片,转换看起来很糟糕,因为它在新的活动中重新加载图片。 所以我不得不把它保存在caching中,然后用它来转换。 我有代码,但有时如果图片不加载,它会抛出一个Canvas的RuntimeException。 这是日志: 07-03 15:19:58.633 28461-28461/jahirfiquitiva.project E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: jahirfiquitiva.project, PID: 28461 java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@29f09d20 at android.graphics.Canvas.throwIfCannotDraw(Canvas.java:1282) at android.view.GLES20Canvas.drawBitmap(GLES20Canvas.java:599) at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:538) at android.widget.ImageView.onDraw(ImageView.java:1176) at android.view.View.draw(View.java:15239) at android.view.View.updateDisplayListIfDirty(View.java:14175) at android.view.View.getDisplayList(View.java:14197) at android.view.GhostView.onDraw(GhostView.java:52) at android.view.View.draw(View.java:15239) at android.view.View.updateDisplayListIfDirty(View.java:14175) at android.view.View.getDisplayList(View.java:14197) at android.view.View.draw(View.java:14967) at android.view.ViewGroup.drawChild(ViewGroup.java:3406) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3199) at […]

Android自定义视图在调用invalidate后显示为纯黑色

在这个代码中,我想在两个ImageView的顶部之间画一条线。 但是,在运行应用程序时,在调用invalidate()之后,自定义视图显示为纯黑色。 这是我的代码: public class ArrowView extends RelativeLayout { public Paint paint; public Bitmap eraser; public Canvas cacheCanvas; public float leftX; public float leftY; public float rightX; public float rightY; public boolean update = false; public ImageView iv_leftArrow; public ImageView iv_rightArrow; private int w; private int h; LayoutInflater mInflater; public ArrowView(Context context) { super(context); this.setWillNotDraw(false); […]

放置/重叠(z-index)视图上方的操作栏选项卡

我有一个视图,它在包含它的Fragment外部绘制一些东西,我将它configuration为使用它在外部绘制内容 。 问题是,它在任何地方,但在ActionBar和ActionBar选项卡。 mActionBar.addTab( mActionBar.newTab() .setCustomView(t)); 我正在使用appCompat,并以这种方式添加标签: 我添加了android:clipChildren="false"到所有父视图,但是它不适用于ActionBar和ActionBar选项卡。 期望的观点: 但结果是这样的:

canvas.toDataURL()返回部分损坏的图像

我们有一个Web应用程序(非常间歇地)返回部分损坏的PNG图像数据URL。 图像有一个大的黑色部分覆盖一些图像,但不是全部。 这些图像是客户签名。 例如: 我们正在使用这个签名板组件。 图像URL是使用getSignatureImage()例程返回的。 我从访问日志中看到的唯一一件事情似乎显示了来自“Samsung Galaxy Tab”设备的受到影响的请求,但是使用了Chrome 59.但是来自同一设备的其他请求仍然可以正常工作。 任何帮助赞赏。

旋转拨号限制

所有 我想像下面的图像一样以特定的angular度旋转图像。 我有代码旋转,但它旋转360度,但我只想要特定的程度,并获得拨号上方选定的数字。 下面是我的代码。 我的习惯查看这项工作很好,但性能湖。 import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.PointF; import android.graphics.Rect; import android.util.AttributeSet; import android.util.Log; import android.view.GestureDetector.OnGestureListener; import android.view.GestureDetector; import android.view.MotionEvent; import android.view.View; public class MyDialView extends View implements OnGestureListener{ private static Bitmap bimmap; private static Paint paint; private static Rect bounds; private int totalNicks = 100; […]

android缩放位图的性能

我有这个: paint = new Paint(); paint.setAntiAlias(true); paint.setFilterBitmap(true); paint.setDither(true); sm = new Matrix(); sm.setScale(scale, scale); private Bitmap getImage(String n) { File dir = context.getDir("theme", Context.MODE_PRIVATE); File file = new File(dir, n + ".png"); if (file.exists()) { return BitmapFactory.decodeFile(file.getAbsolutePath()); } else { return BitmapFactory.decodeResource(getResources(), getResources().getIdentifier(n, "drawable", getPackageName())); } } private Bitmap resizeImage(Bitmap b) { return Bitmap.createBitmap(b, 0, […]