草庐IT

android - Android 中的位图压缩和速度优化

我正在处理Android中的AR应用程序,该应用程序利用相机输出。我正在编写一部分代码来保存三个图像文件:原始图片、屏幕覆盖图和绘制有覆盖图的合成图片(考虑到其他两个,可能是多余的)。我的相机的原始图像大小是2592x1944。现在我的保存操作花费的时间比我希望的要长。我正在使用AsyncTask保存图片,但实际保存部分归结为以下内容:publicvoidonPictureTaken(byte[]data,Cameracamera){Sizesz=camera.getParameters().getPictureSize();TimingLoggertl=newTimingLogger

android - 同一 xml 中的选择器、图层列表和形状/位图

我在drawable文件夹中的xml中有这段代码:我用它来制作具有两种状态的图像(用作按钮)。在模拟器和设备上一切都按预期工作。我知道我可以创建不同的可绘制xml并进行引用以实现相同的结果。我刚切换到AndroidStudio,它显示了这条消息:ElementXXXisnotallowedhere。它警告我有关层列表及其中的所有标签。然而,正如我所说,这段代码工作得很好。我应该将我的代码转换为单独的XML(知道我只会使用它们一次)还是AndroidStudio的Inspector代码中的“错误”?注意:我认为我的代码可以优化,但我还没有想出如何优化。 最佳答

java - 使用glide加载位图到ImageView

我想在裁剪和调整位图大小后使用Glide将位图加载到ImageView。我不想使用ImageView.setImageBitmap(bitmap);因为我正在加载大量图像并且它可能会占用一些内存,尽管图像很小,我只是需要使用Glide,因为我知道它可以优化图像缓存。我读了this发布,但当我尝试实现它时,我不太理解他的解决方案。所以也许有人有更简洁、更容易理解的解决方案。这是我的代码,它拾取图像并从中创建位图。我需要使用glide而不是ImageView.setImageBitmap(bitmap);。newAsyncTask(){BitmaptheBitmap=null;Bitmap

android - 仅在垂直方向倾斜位图

我想倾斜(如果这不是正确的词,请纠正我)位图,使其看起来有深度。形象化我所要求的一个好方法是星球大战的学分如何倾斜以显示深度。我尝试了以下方法:canvas.getMatrix().postSkew(kx,ky,px,py);和canvas.skew(sx,sy);但我并没有取得太大的成功。上述方法似乎总是将位图转换为平行四边形。有没有办法将位图转换为梯形?这是我从Romain指出的示例中摘取的一段代码。canvas.rotate(-mOrientation[0]+mHeading,mCenterX,mCenterY);camera.save();if(mReverse){camera

android 将 XML View 转换为位图而不显示它

我正在尝试为我的map集群设置一个View。我正在膨胀XML的View并根据群集大小设置文本,我想显示该View。在下面的代码中,我得到一个空位图作为返回:privateBitmapcreateClusterBitmap(intclusterSize){Viewcluster=LayoutInflater.from(context).inflate(R.layout.map_cluster,null);cluster.setText(String.valueOf(clusterSize));cluster.setDrawingCacheEnabled(true);cluster.bui

android - getDrawingCache 始终返回相同的位图

我目前正在处理一个项目,该项目需要显示一个带有灰色(黑色/白色)背景的对话框。为此,我截取了整个应用程序的屏幕截图,将此屏幕截图放在全屏对话框的背景上,并在其上放置一个ColorFilter使其变灰。这在第一次使用时非常完美,但如果我在底层内容中滚动并再次请求对话框,它会显示与之前相同的背景。我使用代码:Bitmapbitmap;ViewrootView=getActivity().getWindow().getDecorView().findViewById(android.R.id.content);rootView.setDrawingCacheEnabled(true);bit

Canvas 上的 Android Mask 位图生成一个黑色空间

我有一个mask位图,一半是红色,一半是透明的,就像这样https://www.dropbox.com/s/931ixef6myzusi0/s_2.png我想使用mask位图在Canvas上绘制只在红色区域可见的内容,代码如下:Paintpaint=newPaint();publicvoiddraw(Canvascanvas){//drawcontenthere...//andmaskbitmapherepaint.setXfermode(newPorterDuffXfermode(android.graphics.PorterDuff.Mode.DST_IN));canvas.dra

java - 读取时,android 中保存的位图长度为 3 个字节

我有一个选择和保存个人资料图片的Activity。有一个ImageView和一个启动图库Activity的按钮,等待用户选择图像。当画廊关闭时,执行以下代码:@OverrideprotectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){super.onActivityResult(requestCode,resultCode,data);if((resultCode==RESULT_OK)&&(requestCode==SELECT_PHOTO)){UriselectedImage=data.getDat

android - Fresco 以编程方式将位图添加到缓存

我正在上传一张图片到我的服务器,上传后我的服务器用新的URI响应它(可以是与旧的相同的URL),我想删除旧的缓存图片并插入新的新的URI。我尝试通过以下方式实现://Retrofit2onResponseStringnewImageUri=response.body().getUri();StringoldImageUri=Preferences.getUser().getImageUrl();//RemoveoldimagefromcacheFresco.getImagePipeline().evictFromCache(Uri.parse(oldImageUri));Fresco.

java - 从内存中快速卸载位图

我正在用Java创建这款Android游戏。我有很多图像,但不需要一次全部使用它们,所以我创建了一个资源管理器类来处理正在使用的位图。但是,我发现从内存中清除位图非常慢。我目前正在做这样的事情:bitmap.recycle()bitmap=nullSystem.gc(alsotriedRuntime.getRuntime().gc())首先,有没有什么方法可以更快地从内存中卸载位图,或者是否有可能以某种方式检查它们是否真的被清除了,这样我也可以让加载屏幕也依赖于此? 最佳答案 当我们尝试System.gc()时,无法保证垃圾收集器会