草庐IT

Android:绘制到不同大小的屏幕时如何管理位图大小?

我了解各种dpi资源和灵活的布局以支持不同的分辨率和尺寸的屏幕,但我不了解如何在View的onDraw()方法中直接使用位图绘制来处理不同的屏幕。我有一个应用程序可以绘制要触摸的移动位图。到目前为止,它是在480x320屏幕上开发的,测试图形也是以此分辨率创建的。为了支持替代屏幕,例如模拟的WVGA,我已经成功地将更高分辨率的图像放入hdpi文件夹中并且它可以工作。但是,当我创建一个更大的屏幕(如10"平板电脑)时,图形会绘制到一个手机大小的小区域。与更高密度分辨率相反,为更大屏幕提供更高分辨率源图像的正确方法是什么?我是否必须手动加载和缩放位图? 最佳答案

android - 如何解码样本大小不等于 2 的幂的位图?

简单的例子:BitmapFactory.Optionsopts=newBitmapFactory.Options();opts.inSampleSize=scale;Bitmapbmp=BitmapFactory.decodeStream(is,null,opts);当我传递的scale值不等于2的幂时,位图仍按最接近的2的幂值缩放。例如,如果scale=3那么由于某种原因实际比例变为2。可能是因为我使用了硬件加速?无论如何,如何在不为完整位图分配内存的情况下按非2的幂值缩放位图?附言我知道,使用二的幂要快得多,但在我的情况下,时间并不是那么重要,我需要按提供的比例精确缩放图像(否则它

java - Android - 将图像的位图数组插入 SQLite 数据库

我想在我的自定义ListView中显示来self的sqlite数据库的图像。我成功地转换了一组位图图像,并编写了用于转换回位图图像的代码。但是图像没有显示。我正在使用SqliteDatabaseHelper类插入图像到数据库。显示除图像以外的所有其他值。我应该插入什么值?请帮助MainActivity.javapublicclassMainActivityextendsActivity{ListViewprd_list;publicstaticIntegerclas;byte[]imge;intj;@OverrideprotectedvoidonCreate(BundlesavedIn

android - 从 webView/Cordova 创建位图

我在webview/Cordova中加载了一个页面。是否有可能获取加载到id/classXYZ的该webview中的图片的位图对象?我知道可以将图像url传递给java并在那里加载图像并从中创建位图对象。但在那种情况下必须重新加载图像。 最佳答案 终于找到了解决这个问题的方法。它有3个步骤1.将Webview中的图片转换为base64String(Thislink将帮助您做到这一点。)2.使用cordovabridge将base64String传递给java。3.java解码base64string生成位图(Thislink将帮助您

android - 从 Uri 转换位图返回 null

这个问题在这里已经有了答案:OpenaGoogleDriveFileContentURIafterusingKitKatStorageAccessFramework(3个答案)关闭7年前。在我的android应用程序中,我使用Google驱动器来选择图像和文件,对于文件,我的代码大部分时间都运行良好。不幸的是,在某些情况下图像导入不起作用,图像位图返回空值,下面是我用来将内容URI转换为输入流和位图的代码。Bitmapbitmap=null;InputStreaminput=null;try{input=getActivity().getContentResolver().openIn

java - 从 Url 获取位图图像

我想从Url获取Bitmap图像:Bitmapmage=getBitmapFromUrl(urlPhotoInFrameFirst);publicstaticBitmapgetBitmapFromUrl(Stringuri){URLurl=null;try{url=newURL(uri);Bitmapimage=BitmapFactory.decodeStream(url.openConnection().getInputStream());returnimage;}catch(MalformedURLExceptione){e.printStackTrace();}catch(IOE

android - 避免位图被回收android

我有两个异步任务,其中一个下载图像,另一个添加模糊效果,但我的问题是,在下载任务的onPostExecute回调中,我想将位图放入一个ImageView然后将它传递给第二个任务以对其应用模糊效果但有时我得到tryingtousearecycledbitmap我在这个问题上搜索了很多,但我没有找到一个明确的解决方案来避免这个问题,特别是我在View寻呼机的fragment中使用这个图像这是我的代码protectedvoidonPostExecute(Bitmapresult){Bitmapbitmap=result;bmImage.setImageBitmap(bitmap);if(bi

android - 通过我的应用程序捕获图像后如何调整位图大小

这个问题在这里已经有了答案:Androidtakephotoandresizeitbeforesavingonsdcard(6个答案)关闭6年前。捕获图像并在Activity中显示后,由于图像尺寸较大,它不会插入到数据库中。我需要知道如何压缩和减小图像大小和像素。try{//Bitmapbitmap;BitmapFactory.OptionsbitmapOptions=newBitmapFactory.Options();bitmap=BitmapFactory.decodeFile(f.getAbsolutePath(),bitmapOptions);imageView.setIma

android - 在图层列表中剪切平铺位图的角

我希望完成一些看起来像这里底部的东西(所有四个角,但我只有图像的底部给你看):我目前拥有的:但是,根据预览,这让我在每个角落都有一个tiiiny像素:那么,我该如何剪掉这些角呢?可见的中风不是它,实际上也不是想要的......尝试过的事情:向项目中添加实体与我想要的完全相反。可能有一个可能的掩蔽技巧......磁贴: 最佳答案 我能想到几个选项。再添加一个背景矩形来隐藏角落:您可以将角矩形移出View并使其变大:您需要针对这种情况微调偏移量。这个有点hacky,因为它缩小了磁贴内容。您可能希望在微调时使用android:scaleX

Android加速位图缩放

我有一些大的JPG文件需要在android服务中进行下采样。BitmapFactory(即skialibray)可以处理这个,但可能没有任何GPU支持。是否有任何可移植的方法来获得用于扩展的硬件加速?服务是否可以创建一个隐藏的View,然后使用OpenGLES来执行缩放部分,还是仅在Activity中可行? 最佳答案 您可能会通过这种方式获得硬件加速缩放,但您必须从GPU读回结果,这可能会或可能不会比仅在软件中缩放更快。您还会遇到特定于GPU的限制,例如最大纹理尺寸(例如,在NexusOne上为4096x4096。)