需要一种在此Android Xamarin样本中添加按钮的方法
我在此处使用了此样本: https://github.com/xamarin/xamarin-forms-samples/blob/master/customrenderers/view/droid/camerapreview.cs 为我的项目获取相机供稿.在iOS部分上,我很容易在相机提要上添加一个托法按钮.我试图在Android方面做完全相同的事情,但我找不到有关如何做到这一点的方法...我尝试的一切都会渲染一个空白页或投掷错误. 在此相机提要上添加按钮的最简单方法是什么?预先感谢 解决方案 您可以在MainPage中使用RelativeLayout.然后,将Button和CameraPreview添加到其中.例如:
4 2024-04-05
编程技术问答社区
使用XML/Java的Android glSurfaceView与叠加功能
我启动了一个Android OpenGL应用程序,我有以下类: class A extends Activity class B extends GlSurfaceView implements Renderer 当A类称为A类时,它会创建一个类型B类的对象并调用: setContentView(Bobject) 到目前为止,它可以工作,我花了几天的时间. 现在,我想将按钮添加到我的应用程序中,并找到了SurfaceViewOverlay示例.这使用一些XML创建视图层次结构.我想创建与我简单地剪切并粘贴XML代码的东西:
4 2024-04-05
编程技术问答社区
安卓:在一个给定的图像上自定义绘制(用SurfaceView)。
我试图将图像加载到SurfaceView,并在此图像上绘制一些划痕. 为此,我创建了一个自定义SurfaceView,MySurfaceView,并具有以下功能: public MySurfaceView(Context context, AttributeSet attrs) { super(context, attrs); mHolder = getHolder(); mHolder.addCallback(this); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeWidth(3); mPaint.setColor(Color.WHITE); setWillNotDraw(false); } public void setImageBitmap(Bitmap bitmap) { mBitmap = bitmap; } @Override prote
0 2024-03-31
编程技术问答社区
在安卓画布上绘制旋转的位图,最有效的方法是什么?
我正在开发一个应用程序,在那里我们手工滚动了一些星星地图.因此,我不必摘要说话,这是有问题的应用: https://play.google.com/store/apps/details?id=com.tw.fireballs 如果您在商店列表上查看,则可以看到我们在地平线上方使用图像……主要是因为它看起来超级漂亮.在较低的分辨率设备上,这不是问题,由于涉及较低的像素数量,它们似乎并没有遇到巨大的问题.在我的HTC One或Wifes Nexus 5之类的较高分辨率设备上,当它在屏幕上时,帧速率很大.这还不足以防止我发布它,但是如果可能的话,我想改进它. 我目前只是在使用SurfaceView,并绘制由MSURFACEHORDER.LOCKCANVAS(NULL)获取的画布,因此它不加速硬件.我尝试将其作为常规视图实施,但总的来说,它实际上变慢了,因此,在我进入OpenGL土地之前,我想探索是否可以做些什么来加快速度. 本质上,我们从地平线上的薄(不透明)图像"切片"开始
0 2024-03-31
编程技术问答社区
安卓系统。SurfaceView 闪烁
我在绘制到SurfaceView的问题上有一个问题,当移动SurfaceView上的位图映像时,它们会闪烁(或撕裂).在我的代码以前的迭代中,我没有这个问题.但是,既然我终于通过为每个位图使用单独的Canvas来正确缩放位图,那么这个问题就开始了.这些是我自定义SurfaceView类的重要部分: public class DrawingSurface extends SurfaceView implements SurfaceHolder.Callback { public DrawingSurface(Context context, AttributeSet attributeSet, int defStyle) { super(context, attributeSet, defStyle); initialize(context); } private void initialize(Context contex
0 2024-03-31
编程技术问答社区
将YUV转换为YUV420 Android onPreview
a)我想知道YUV和YUV420有什么区别? b)我想使用相机中的原帧并实时将它们转换为YUV420.最快的方法是什么?我使用Bitmap Factory从YUV转换为JPG,并使用OnDraw()方法绘制位图.但是,这需要一些时间来处理.如果我想从YUV转换为YUV420,那么进行转换的最佳选择是什么? 解决方案 我找到了一种非常直接的方法,可以将NV12转换为YV12/YUV420.两行代码为我完成了工作: public void surfaceCreated(SurfaceHolder holder) { try { // set view of surface in cameraview Camera.Parameters p = mCamera.getParameters(); p.setPreviewFormat(ImageFormat.YV12);
2 2024-03-31
编程技术问答社区
在同一个安卓SurfaceView上有多个位图更新
最近,我尝试编写一个应用程序,该应用程序从Say USB摄像头(需要显示为预览)和图像处理的输出,该应用程序需要重叠在预览中.有人可以给我一些指针如何开始吗?此外,我需要在预览上绘制一些矩形. 我试图使用多个SurfaceView绘制,但没有成功.有人可以帮我吗? 解决方案 您需要的是位图和图像视图参考计数. Android将图像数据保留在本机数组中,当VM GC运行时,该数组不会自动回收. VM部分是一种垃圾收集的,本地部分是另一种方式,很晚.您的应用程序可能很快就用完了. 这是可以提供帮助的一组类.我认为我已经从Android Image教程中获得了它们,并为我自己的便利进行了修改. package com.example.android.streaming.ui.cache; import android.content.Context; import android.graphics.drawable.Drawable; import android.
0 2024-03-31
编程技术问答社区
如何滚动屏幕外的内存位图
使用以下代码滚动 我有一个SurfaceView线程和一个正在生成(更改),第一行(线),每个帧的纹理位图,然后在常规SurfaceView位图上复制一个位置(线)以产生滚动效果,然后我继续继续最重要的是画其他东西.好吧,这就是我真正想要的,但是即使我正在为屏幕上的位图创建单独的画布,我也无法正常工作.它根本不滚动. i其他单词我有一个内存位图,与SurfaceView帆布相同,我需要滚动(移动)每帧向下一行,然后用新的随机纹理替换顶部线,然后在常规的SurfaceView帆布上绘制该线路. 这是我认为会起作用的; 我指定位图和画布的地方的表面图: 启动线程: @Override public void surfaceCreated(SurfaceHolder holder) { intSurfaceWidth = mSurfaceView.getWidth(); intSurfaceHeight = mSurfaceView.getHe
0 2024-03-31
编程技术问答社区
在Surfaceview中在画布上显示一个位图
我正在尝试开发一个Android应用程序来显示一个可缩放,可泛美的地图(这只是一个位图映像),这也允许用户单击地图上的某些点. 我正在努力寻找实施此类应用程序的最有效方法.在尝试了许多其他方法(包括WebViews,OpenLayers)之后,最好的方法(至少是根据本网站)似乎是在使用带有画布的SurfaceView.到目前为止,我的代码是从我在互联网上找到的片段中拼凑而成的,因此它崩溃了.无论如何,我都将其包括在这里,希望它能使我想实现的目标有所了解: public class Main extends Activity { private Bitmap bmp; private SurfaceView surfaceView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
0 2024-03-31
编程技术问答社区
从自定义SurfaceView获取位图
我在扩展表面视图并实现可运行的类中具有此代码 我能够基本上可以使用该类,可以让您使用不同的颜色绘制到画布上.我正在尝试获取一种方法,该方法可以在绘制图像后保存图像,这就是方法.无论我做什么,我都不会得到一个黑色图像.有什么想法吗? 我有缓存绘图启用 目标从自定义的SurfaceView获取位图映像,我已经耗尽了这里查看其他一些帖子的选择,但没有找到任何可用的工作.希望最近有一个新的解决方案.非常感谢 public Bitmap getImage() { Bitmap bitmap = Bitmap.createBitmap(this.getWidth(), this.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); this.draw(canvas);
0 2024-03-31
编程技术问答社区
只画一个可画/位图的一部分
我想知道,在将其加载到内存中而无需创建新的位图之后,是否只能绘制一部分位图.我看到可绘制的方法具有setbounds方法,但我不确定它是仅绘制区域设置还是仅仅调整整个图像的大小.谢谢. 解决方案 假设您有一个主画布要画,您可以使用帆布类的DrawbitMap方法之一来绘制已加载的位图的子集. public void drawbitMap(位图drawbitmap(bitmap bitmap) ) 其他解决方案 我搜索了一个完全的答案在记忆空间的不同部分. 结果,我创建了简单的专业" bitmapsubsetdrabable",它将自己视为带下划线的位图的任意部分(该部分由srect确定). 现在,我将一组足够大的位图分配一次,然后重复使用它们(canvas.drawBitMap(sourcebitmap,0,0,0,null); null); on ...)存储不同的位图. 课程的主要代码如下,请参见 bitmapsubsetable.java.java 用于
2 2024-03-31
编程技术问答社区
在SurfaceView中拍摄带有相机预览的屏幕照片
我正在尝试实现一个功能,其中包括在录制视频时拍照.这就是我得出结论使用SurfaceView的屏幕截图方法的原因. 但是,当我尝试拍摄SurfaceView的屏幕截图时.我总是得到一个空白的图像. 这是我用于拍摄快照的代码: View tempView = (View)MY_SURFACE_VIEW; tempView.setDrawingCacheEnabled(true); Bitmap tempBmp = Bitmap.createBitmap(tempView.getDrawingCache()); tempView.setDrawingCacheEnabled(false); //Saving this Bitmap to a File.... ,如果你们可能认为这是一个重复的问题,请让我向您保证,在询问此问题之前,我已经尝试了以下解决方案. https://stackoverflow.com/questions/24134964/essue-with-c
0 2024-03-31
编程技术问答社区
安卓:用SurfaceView的内容创建一个位图
我害怕已经对这个问题有不幸的答案位图(即Surfaceview的内容)中的位图中的位图,以便我可以将其保存为图像文件. 我一直在环顾四周,似乎可以从view.getDrawingCache()获得位图,但它与SurfaceView不起作用.我得到的只是一个空位图. 有什么解决方案吗? 谢谢 解决方案 对于API级别> = 24,使用 pixelcopy api . 这是图像视图中的一个示例: public void DrawBitmap(){ Bitmap surfaceBitmap = Bitmap.createBitmap(600, 600, Bitmap.Config.ARGB_8888); PixelCopy.OnPixelCopyFinishedListener listener = copyResult -> { // success/failure callback }; PixelCopy.
2 2024-03-31
编程技术问答社区
如何在安卓系统中有效地调整位图的大小而不损失质量?
我有一个Bitmap,大小为320x480,我需要在不同的设备屏幕上伸展它,我尝试使用以下方式: Rect dstRect = new Rect(); canvas.getClipBounds(dstRect); canvas.drawBitmap(frameBuffer, null, dstRect, null); 它有效,图像像我想要的那样填充了整个屏幕,但图像是像素化的,看起来很糟糕.然后我尝试了: float scaleWidth = (float) newWidth / width; float scaleHeight = (float) newHeight / height; Matrix matrix = new Matrix(); matrix.postScale(scaleWidth, scaleHeight); Bitmap resizedBitmap = Bitmap.createBitmap(frameBuffer, 0, 0,
0 2024-03-31
编程技术问答社区
使用MediaProjection进行屏幕截图
使用Android l中可用的MediaProjection API,可以 将主屏幕的内容(默认显示)捕获到Surface对象中,然后您的应用程序可以通过网络发送该内容 我已经设法使VirtualDisplay工作,并且我的SurfaceView正确显示了屏幕的内容. 我要做的是捕获Surface中显示的框架,然后将其打印为文件.我已经尝试了以下内容,但我得到的只是一个黑色文件: Bitmap bitmap = Bitmap.createBitmap (surfaceView.getWidth(), surfaceView.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); surfaceView.draw(canvas); printBitmapToFile(bitmap); 关于如何从Surface? 检索显示的数据的任何想法 编辑 因此,@
4 2024-03-31
编程技术问答社区
在Bézier曲线路径上移动一个物体
我想将图像从顶部到底部移动到Bézier曲线路径上,但是我无法理解如何计算X/y点并从此路径上斜坡.路径看起来像以下图像: > 我有起点,终点和两个控制点. Path path = new Path(); Point s = new Point(150, 5); Point cp1 = new Point(140, 125); Point cp2 = new Point(145, 150); Point e = new Point(200, 250); path.moveTo(s.x, s.y); path.cubicTo(cp1.x, cp1.y, cp2.x, cp2.y, e.x, e.y); 解决方案 这是一个立方的Bézier曲线,公式为[x,y]=(1–t)^3*P0+3(1–t)^2*t*P1+3(1–t)t^2*P2+t^3*P3.这样,您可以通过评估方程来解决每个点.在Java中,您可以这样做: /* t is time(va
2 2024-03-30
编程技术问答社区
通过surfaceview使用zxing条码阅读器
我正在创建条形码扫描仪应用程序,我想使用 zxing 读取条形码,我的应用具有 surfaceview 并显示相机那,但是现在我想从我的Surfaceview摄像机扫描条形码,我使用它的原因是,我的布局中的表面视图下有两个EditTexts来显示条形码的内容. 我应该如何创建一个类似的应用程序,主要问题是如何将zxing设置为表面. 如果有什么办法,我会很感激. 布局屏幕截图: 解决方案 自定义您的 zxing 带有以下代码的布局. 我将这里RelativeLayout用于zxing扫描仪. 或,使用此参考文献: /li> 我的设计看起来像下面的图像,如果需要,您可以服用FrameLayout. XML代码:
6 2024-03-27
编程技术问答社区
当使用SurfaceView的ByteBuffer时,如何在android ML-kit中暂停条码扫描?
上下文 我正在使用android firebase-ml-vision 使用SurfaceView扫描条形码,并使用连续的图片框架字节来扫描条形码.我使用了 Ml Kit Kit QuickStart Project 作为起点,它的起点很棒. 我项目的目的是识别与条形码相关的产品,并将其添加到扫描项目列表中. 问题 一旦相机聚焦,条形码处理器将多次检测到相同的条形码,因此您将在一秒钟内扫描20而不是1个条形码. 这是 cameresource.frameprocessingrunnable.run * As long as the processing thread is active, this executes detection on frames continuously. * The next pending frame is either immediately available or hasn't been received yet
0 2024-03-27
编程技术问答社区
设置一个SurfaceView的背景图像
有没有办法设置SurfaceView的背景图像?是否必须在XML中完成,或者我可以在Java中完成所有操作吗?我在构造函数中有看起来像这样的东西: Drawable sky = (getResources().getDrawable(R.drawable.sky)); this.setBackgroundDrawable(sky); ,但它仍然没有显示任何东西. 解决方案 您无法在SurfaceView上设置可绘制的背景.您必须自己将背景绘制到表面上. 其他解决方案 虽然您无法将背景图像直接设置为SurfaceView,但您可以重叠ImageView(显示您的背景图像)和SurfaceView在此上面,从而使其透明. 我在绘制1920x1080位图作为每个Surfaceview重新启动的背景图像时遇到了表演问题:我找到的唯一解决方案(感谢这个答案)正在使用ImageView显示此1920x1080(固定)位图,并在其顶部使用我的SurfaceVie
2 2024-03-27
编程技术问答社区
如何使用摄像机的实时画面作为活动背景?
我正在尝试制作一个应用,其中我需要将相机实时馈送用作背景. (我知道这是一件愚蠢的事情,但无济于事,这是客户的需求). 我尝试使用SurfaceView进行此操作,但到目前为止尚无成功. 到目前为止,我在堆栈溢出上发现的任何内容都更像是一个猜测或方向,但是没有实时示例或代码帮助.如果有人在与像我这样的堆栈溢出用户共享代码之前已经这样做的人会很棒. 解决方案 在这里看看: camera.html 您需要制作显示相机预览的活动所需的所有代码. 其他解决方案 package com.example.CameraPreview; import android.content.Context; import android.content.pm.PackageManager; import android.hardware.Camera; import android.util.AttributeSet; import android.util.Log;
0 2024-03-27
编程技术问答社区