草庐IT

Canvas-EventSystem-Panel

全部标签

android - 自定义 View 中 Canvas 上的补间动画

我有一个扩展View的类,我在onDraw()方法中在其Canvas内绘制我需要的所有内容,如下所示:protectedvoidonDraw(Canvascanvas){synchronized(this){floath=mHeight;floatw=mWidth;canvas.drawColor(Color.WHITE);floatroadLine=(85.0f/100.0f)*h;canvas.drawBitmap(mTop,0,roadLine-mTop.getHeight(),null);//thisiswhatI'dliketoanimatecanvas.drawBitmap

android - 如何使用矩阵将我的位图定位在 Canvas 上?

我正在实现捏拉操作,我很困惑如何让我影响的图像移动到它被拖动到的位置(缩放正在工作)。所以,以前我会这样定位图片...canvas.drawBitmap(img,x,y,paint);但现在我使用的是矩阵,我看不到它有什么函数可以将图像移到我想要的位置。有人可以发布一段简短的代码fragment,说明需要做什么才能使图像远离0,0吗?TIA 最佳答案 使用postTranslate在你的缩放矩阵上:scaleMatrix.postTranslate(x,y);canvas.drawBitmap(img,scaleMatrix,pai

android - Canvas.drawBitmap() 忽略绘画的平铺模式

我想绘制位图的子部分,但大小不同。如果大小大于位图中的源矩形,那么我希望位图的该部分平铺以填充目标区域。然而,它们并没有平铺,而是被拉伸(stretch)了。我将所有变量设置如下:Bitmapb=BitmapFactory.decodeResource(getResources(),R.drawable.image);RectsrcRect=...RectdstRect=...Paintp=newPaint();p.setShader(newBitmapShader(b,Shader.TileMode.REPEAT,Shader.TileMode.REPEAT));然后在draw()方

android - 将 Canvas 转换为 Drawable

intx=10;inty=10;intr=4;PaintmPaint=newPaint();mPaint.setColor(0xFF0000);CanvasmCanvas=newCanvas();mCanvas.drawCircle(x,y,r,mPaint);有什么方法可以将mCanvas转换为Drawable?我的目标是生成具有特定形状和颜色的可绘制对象。谢谢 最佳答案 对于像圆圈这样的简单形状,我认为ShapeDrawable会更容易。对于更复杂的事情,只需创建一个Bitmap供您的Canvas使用,然后创建Canvas并在其

Android Canvas 到位图

我一直在网上搜索如何将Canvas上的内容转换为位图。我尝试了多种方法来做到这一点,比如将绘图缓存保存到位图中,但最终结果是背景位图闪烁了一会儿,然后变成黑屏。测试图像显示在背景之上,但在下次调用OnDraw时不会被背景覆盖。MainThreading{...if(notuptodate==true){//callreadyBackgroundtocreatethebackgroundbitmapthis.mainPanel.readyBackground(canvas);//postthecanvassurfaceHolder.unlockCanvasAndPost(canvas);

android - 将动画 gif 作为电影播放仅显示 Canvas 背景

我想在我的Android应用程序中播放动画gif。我注意到WebView可以很好地处理这段代码:webview.loadUrl("file:///android_asset/gif.gif");不幸的是,webView太占用内存,我的应用经常崩溃。我看过很多像这样使用Movie的教程:publicclassGIFViewextendsView{privateMoviemovie;privatelongmoviestart;publicGIFView(Contextcontext)throwsIOException{super(context);movie=Movie.decodeStr

android - 如何在单击按钮时清除android中的 Canvas

importandroid.content.Context;importandroid.graphics.Bitmap;importandroid.graphics.BitmapFactory;importandroid.graphics.Canvas;importandroid.graphics.Color;importandroid.graphics.Paint;importandroid.graphics.Path;importandroid.util.AttributeSet;importandroid.view.MotionEvent;importandroid.view.V

java - Canvas 对象必须与之前由 lockCanvas 返回的实例相同

我有一个自定义的SurfaceView,它带有绘制背景和位图的方法doDraw()。问题是当我运行它时出现错误Causedby:java.lang.IllegalArgumentException:canvasobjectmustbethesameinstancethatwaspreviouslyreturnedbylockCanvas我不明白为什么会这样。我没有在我的代码中的任何其他地方声明任何其他Canvas。我只有另外两个类,MainActivity和SurfaceViewExample。MainActivity只是有一个打开SurfaceViewExample的Intent,而

android - 如何从 SurfaceView 绘制到 Canvas?

我正在尝试做简单的画家。问题貌似Android有3个独立的Canvas给我顺序画。我用SurfaceView制作了UI,从中取出了Holder。@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);sv=(SurfaceView)findViewById(R.id.sv);holder=sv.getHolder();holder.addCallback(callback);}然后拿

android - catch "RuntimeException: Canvas: trying to draw too large..."

我有一个应用程序,它从文件系统绘制图像到屏幕,如下所示:Bitmapimage=BitmapFactory.decodeFile(file.getPath());imageView.setImageBitmap(image);如果图像非常大,我会看到此错误:java.lang.RuntimeException:Canvas:tryingtodrawtoolarge(213828900bytes)bitmap.atandroid.view.DisplayListCanvas.throwIfCannotDraw(DisplayListCanvas.java:260)atandroid.gr