Articles of android bitmap

在Android中使用canvas和位图,如何获得这个图像?

我在android中是新的。 我想绘制这个图像(匹配统计) 并用10%到100%的颜色填充图像。 我试了这么多,这是形象 这是代码 public class DrawView extends View { Paint paint = new Paint(); public DrawView(Context context) { super(context); } @Override public void onDraw(Canvas canvas) { paint.setColor(Color.BLACK); paint.setStrokeWidth(3); canvas.drawRect(30, 30, 100, 100, paint); paint.setStrokeWidth(0); paint.setColor(Color.GRAY); canvas.drawRect(33, 60, 97, 97, paint); paint.setColor(Color.WHITE); canvas.drawRect(33, 33, 97, 60, paint); } 任何build议对我来说都是很有帮助的。 提前致谢。

水平或垂直翻转位图图像

通过使用这个代码,我们可以旋转图像: public static Bitmap RotateBitmap(Bitmap source, float angle) { Matrix matrix = new Matrix(); matrix.postRotate(angle); return Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight(), matrix, true); } 但是,我们怎样才能水平或垂直翻转图像?

MediaStyle LargeIcon的大小

我正在使用新的Notification.MediaStyle类实现一个棒棒糖风格的通知到FTPstream式音乐播放器应用程序。 我将专辑封面设置为我的“大图标”。 鉴于专辑封面是直接从当前正在播放的文件中获取的,该专辑封面的大小因来源而异(可能高达5000×5000)。 从我的前棒棒糖代码我解码位图的最大尺寸定义为: android.R.dimen.notification_large_icon_width 和 android.R.dimen.notification_large_icon_height 这工作得很好,因为解码时间要快得多,而且内存的使用也是理想的 但是,将此代码应用于我的MediaStyle样式时,展开的视图使用比尺寸参数定义的图标大得多的尺寸,从而在展开时导致模糊的专辑图样。 是否有一些常数来定义MediaStyle大图标的展开视图的最大大小? 还是有一些解决这个问题? 就目前而言,以全分辨率对艺术进行解码是不可接受的,因为它可能导致应用程序由于OOM而崩溃。

Android模糊视图(背后的模糊背景)

我正在尝试在图像顶部对图像进行模糊处理。 我尝试使用Rendenscript模糊它,但我不能仅模糊视图背后的部分。 🙁 我看过很多图书馆,但几乎所有的图书馆都模糊了整个图像,但不是它的一部分。 另外,一个重要的部分就是我在ViewPager中使用它,因此需要在IOS中像这样快速和dynamic地重绘它自身背后的瞬间图像。 任何帮助表示赞赏。 感谢您的阻止! 我的xml: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" android:orientation="vertical" > <ImageView android:id="@+id/image" android:src="@drawable/broadstairs" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop" android:layout_centerInParent="true"/> <TextView android:id="@+id/text" android:layout_width="match_parent" android:layout_height="200dp" android:text="Hello World" android:gravity="center" android:layout_alignParentBottom="true" android:textColor="@android:color/white" android:textStyle="bold" android:textSize="36sp"/> </RelativeLayout> 我的代码: BlurBuilder.java public class BlurBuilder { private static final float BITMAP_SCALE = 0.1f; private static final float BLUR_RADIUS […]

如何更改android评分吧星星?

我试图通过创build新的风格来改变我的评级栏的星星,这是我做的: <style name="RatingBarSmall" parent="android:Widget.DeviceDefault.Light.RatingBar.Indicator"> <item name="android:progressDrawable">@drawable/rating_bar</item> <item name="android:minHeight">36dp</item> <item name="android:maxHeight">36dp</item> </style> 绘制/ rating_bar: <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@android:id/background" android:drawable="@drawable/rating_star_empty" /> <item android:id="@android:id/secondaryProgress" android:drawable="@drawable/rating_star_empty" /> <item android:id="@android:id/progress" android:drawable="@drawable/rating_star_filled" /> </layer-list> 评级栏xml视图: <RatingBar android:id="@+id/ratingBar" style="@style/RatingBarSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0" android:isIndicator="true" android:rating="5" /> 这里是拖影: 但我不知道为什么我在星星下面有垂直线条,你可以看到下面的图片: 编辑:解决:我只是设置评级栏高度作为图像的高度。 谢谢

在HPROF之后,我的应用程序中有巨大的字节

有时,特别是在我的应用程序中实现新的function时,我使用DDMS + HPROF来分析内存和堆的使用。 由于该应用程序似乎没有任何性能ANR问题,一切工作顺利,最初我不关心它 – 但现在,因为我看到它大致总是相同的大小,我想知道该死的是什么是。 每次我运行一个HPROF,我检查泄漏可疑标签。 总是有一个android.graphics.Bitmap实例占用所有使用的堆的大约25%。 我想进一步了解这个,所以我打开了支配树 ,看到这个: 所以实际上有一个巨大的byte[]实例,它保留了大量的堆,并且永远不会被释放。 据此,我复制了byte[]的值,将其转储到.data文件中,用Gimp打开,结果是: 所以基本上,它看起来像PNG图像的“alpha(0)”部分。 考虑到以下事实: 我所有的图片文件大小都小于8K 其中一些是PNG – 剩下的我可以转换成JPG,我也是 没关系,如果我添加更多的图像,该byte[]的大小总是大致相同从应用程序的开始(4个月前) 为了debugging它,我试图从drawable和drawable-xxx文件夹中删除任何图像文件,并运行该应用程序,没有任何可绘制的资源,并且byte[]仍然存在 我删除了几乎所有的布局,只让基本的function,和相同的结果 在Dominator树中 ,根类是android.graphics.Bitmap 任何人都知道这是什么byte[] ,如果我应该做任何事情来释放它? 任何帮助感激!

BitmapFactory.decodeResource和莫名其妙的内存不足

我得到一个奇怪的内存错误解码一个可绘制的图像资源960x926px jpg,分配3555856字节。 该图像只能放置在drawable-xxhdpi(3x)中,而我正在使用hdpi(1.5x)设备。 两个问题: 为什么我在堆中有足够的空闲内存时会出错? ((960/2)x(926/2))x 4 = 888960字节(而不是3555856)分配一个hdpi设备? 有人能解释我吗? 注意:问题是关于为什么获得一个3.5MB的空间分配,而有22.5MB的空闲内存(见日志) 03-18 17:30:15.050 32750-32750 /? D / dalvikvm:GC_FOR_ALLOC释放10809K,49%免费23735K / 46087K,暂停89ms,总计89ms 03-18 17:30:15.050 32750-32750 /? I / dalvikvm-heap:强制收集SoftReferences的3555856字节分配 03-18 17:30:15.160 32750-32750 /? D / dalvikvm:GC_BEFORE_OOM释放29K, 49%免费23705K / 46087K ,暂停103ms,总共103ms 03-18 17:30:15.160 32750-32750 /? E / dalvikvm-heap: 3555856字节分配的内存不足 。 03-18 17:30:15.160 32750-32750 /? I / dalvikvm:“main”prio = […]

在Android上重新使用不同的屏幕尺寸和密度的可绘制图像

背景:我正在开发具有1920×1200分辨率图像资源的平板电脑(横向)的Android应用程序。 该分辨率适合于以下屏幕尺寸和密度: drawable-xlarge-hdpi drawable-large-xhdpi 问题:如果我将包含在这两个文件夹中的所有图像资源都包含在内,APK的最终大小将会不必要的过重 我不成功的方法:我试图使用Alias这个定义在这里的drawables: http : //developer.android.com/guide/topics/resources/providing-resources.html#AliasResources 我有我的图像资源在: res/drawable-nodpi/image_cmn.png 和相应的屏幕大小和密度文件夹中的两个别名: res/drawable-xlarge-hdpi/image.xml res/drawable-large-xhdpi/image.xml image.xml: <?xml version="1.0" encoding="utf-8"?> <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/image_cmn" /> 当然,当我在布局文件中使用我的图像时,我引用了别名: <ImageView android:layout_width="match_parent" android:layout_height="wrap_content" android:src="@drawable/image" /> 但遗憾的是Android并没有正确调整我的testing平板电脑(mdpi)的资源,结果是我有更大的图像。 我试图将原始PNG的res / drawable移动到res / raw,但结果与res / drawable-nodpi相同 。 如果我把这个PN​​G的res / drawable-xlarge-hdpi (同样的xml别名)结果是正确的,但自然不能解决我的问题,因为我也不得不将它们复制到res / drawable-large-xhdpi和apk大小增加。 有谁知道如何做到这一点?

由java.lang.NullPointerException引发:尝试调用空对象引用的虚拟方法'int android.graphics.Bitmap.getWidth()'

我有BitmapScalingHelper.java: public class BitmapScalingHelper { public static Bitmap decodeResource(Resources res, int resId, int dstWidth, int dstHeight) { Options options = new Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeResource(res, resId, options); options.inJustDecodeBounds = false; options.inSampleSize = calculateSampleSize(options.outWidth, options.outHeight, dstWidth, dstHeight); Bitmap unscaledBitmap = BitmapFactory.decodeResource(res, resId, options); return unscaledBitmap; } public static Bitmap decodeFile(String filePath, int dstWidth, int dstHeight) […]

如何在droid中制作拼图应用程序而不会耗尽内存?

我注意到,其他来自谷歌游戏商店的拼图应用程序可以多达400个单独的可移动拼图块 我一直在试图学习如何至less拿出一个将代表我的难题的图像,裁剪某些部分,并掩盖留下一个拼图devise的图像空间,以创build我的个人拼图 我想为我的应用程序最多20件,但到目前为止,根据我的android工作室内存日志一旦位图工厂完成创build一个拼图块我用了大约18MB的内存后,20件与所有其他应用程序的function我使用了400 + MB的内存,我必须使用“largeHeap =真正”,以防止内存不足,但我非常接近超过那些更高的限制,应用程序是超级低迷,足够animation活动将不可避免地崩溃应用程序 我很想知道那些其他的游戏商店拼图应用程序正在做什么,我不是 任何input是不胜感激 仅供参考我使用PNG24作为我的图像,testing图像上的尺寸是556×720 这里是一个例子,如果我只是创build一个可生成animation的拼图图片 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.requestWindowFeature(Window.FEATURE_NO_TITLE);//Remove title bar this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//Hides notification bar this.setContentView(R.layout.activity_main);//set content view AFTER ABOVE sequence (to avoid crash) setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); mainDisplay = getWindowManager().getDefaultDisplay(); mainLayout = (ViewGroup) findViewById(R.id.id_layout); DisplayMetrics m = new DisplayMetrics(); this.getWindowManager().getDefaultDisplay().getMetrics(m); int windowHeight = m.heightPixels; int windowWidth = m.widthPixels; […]