在我的应用程序中,我必须为通知设置一个大图标.LargeIcon必须是一个Bitmap,我的drawables是矢量图像(Android中的新功能,请看这个链接)问题是当我尝试解码一个矢量图像的资源时,我得到一个null返回.
以下是代码示例:
if (BitmapFactory.decodeResource(arg0.getResources(), R.drawable.vector_menu_objectifs) == null)
Log.d("ISNULL", "NULL");
else
Log.d("ISNULL", "NOT NULL");
Run Code Online (Sandbox Code Playgroud)
在这个例子中,当我用一个"普通"图像替换R.drawable.vector_menu_objectifs,例如一个png例如,结果不为空(我得到正确的位图)是否有我缺少的东西?
我有这个问题,请看跟踪堆栈:
E/AndroidRuntime(2410): Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #5: <bitmap> requires a valid src attribute
Run Code Online (Sandbox Code Playgroud)
我的xml文件如下所示:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<bitmap android:src="@drawable/btn_1"/>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
btn_1是可绘制资源中的另一个xml文件当我使用图像(*.png)而不是xml drawable时,它没问题.
我可以使用可绘制资源作为src来进行位图吗?以防万一这是我的btn_1.xml文件.即使btn_1文件没有项目,它也不起作用.
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/btn_arrow_bg_red"/>
<item>
<bitmap
android:gravity="center"
android:src="@drawable/btn_arrow_white" />
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud) 如果使用Windows 7,您可以理解为什么我试图在图像中找到主色.当您将鼠标悬停在任务栏中的程序上时,该特定程序的背景会根据图标中最主要的颜色而变化.我已经注意到其他程序中使用的这种技术,但是不能记住它们.
我可以看到这对我用于开发应用程序的一些UI技术很有用,我想知道如何从Android可绘制资源中找到最常见的颜色.
我查看了多个类似的问题,虽然我的查询没有找到正确的答案.
我有一个drawable,在shape.xml中定义
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<solid android:color="@color/bg_color" />
</shape>
Run Code Online (Sandbox Code Playgroud)
我想将其转换为Bitmap对象以执行某些操作,但BitmapFactory.decodeResource()返回null.
这就是我这样做的方式:
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.shape);
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?是BitmapFactory.decodeResource()适用于XML定义可绘制?
我希望能够拍摄图像并找出平均颜色.意思是如果图像是半黑半白,我会得到介于两者之间的东西......有些灰色.它可能是最常见的单色或中值.任何平均值都可以.
我怎么能在android中做到这一点.
我想创建一个旋转的进度图像,并想知道什么是最好的方法.我可以使用动画列表,例如每100毫秒更换12个图像.这很好用,但创建12个图像或每个大小和分辨率是相当繁琐的:
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false">
<item android:drawable="@drawable/ic_loading_grey_on_black_01" android:duration="100" />
<item android:drawable="@drawable/ic_loading_grey_on_black_02" android:duration="100" />
<item android:drawable="@drawable/ic_loading_grey_on_black_03" android:duration="100" />
<item android:drawable="@drawable/ic_loading_grey_on_black_04" android:duration="100" />
<item android:drawable="@drawable/ic_loading_grey_on_black_05" android:duration="100" />
<item android:drawable="@drawable/ic_loading_grey_on_black_06" android:duration="100" />
<item android:drawable="@drawable/ic_loading_grey_on_black_07" android:duration="100" />
<item android:drawable="@drawable/ic_loading_grey_on_black_08" android:duration="100" />
<item android:drawable="@drawable/ic_loading_grey_on_black_09" android:duration="100" />
<item android:drawable="@drawable/ic_loading_grey_on_black_10" android:duration="100" />
<item android:drawable="@drawable/ic_loading_grey_on_black_11" android:duration="100" />
<item android:drawable="@drawable/ic_loading_grey_on_black_12" android:duration="100" />
Run Code Online (Sandbox Code Playgroud)
我想更简单的解决方案是每个分辨率使用一个图像,而是为每个帧旋转它.在平台资源(android-sdk-windows/platforms ...)中,我在文件drawable/search_spinner.xml中找到了一个名为animated-rotate的东西,但是如果我复制代码得到编译错误抱怨android:framesCount和android: frameDuration(Eclipse中的Google API 2.2):
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/spinner_black_20"
android:pivotX="50%"
android:pivotY="50%"
android:framesCount="12"
android:frameDuration="100" />
Run Code Online (Sandbox Code Playgroud)
我也尝试过使用重复旋转动画(在动画资源文件夹中使用),但我实际上更喜欢动画列表版本的外观.
解决这个问题的推荐方法是什么?
我需要将一些Drawable资源导出到一个文件.
例如,我有一个函数返回给我一个Drawable对象.我想把它写到一个文件中/sdcard/drawable/newfile.png.我该怎么做?
您好我的自定义视图:
MyCustomView extends View
Run Code Online (Sandbox Code Playgroud)
我做了一个VectorDrawable
mMyVectorDrawable = VectorDrawableCompat.create(getContext().getResources(), R.drawable.ic_some_image, null);
Run Code Online (Sandbox Code Playgroud)
我已经设定了界限
mMyVectorDrawable.setBounds(0, 0, mMyVectorDrawable.getIntrinsicWidth(), mMyVectorDrawable.getIntrinsicHeight());
Run Code Online (Sandbox Code Playgroud)
我在画布上绘制它
mMyVectorDrawable.draw(canvas);
Run Code Online (Sandbox Code Playgroud)
我在0,0位置看到了图像
但我该如何定位呢?如何定位Rect,我认为前两个参数setBounds将是X和Y坐标的开始绘图,但这只会影响尺寸.
如何将矢量绘图放在画布上?
谢谢阅读
在动态壁纸中,我有一个Canvas实例,我希望将GIF/WEBP内容绘制成,通过Glide加载.
我想与滑翔做到这一点,原因是它在我过去找到了同样的事情(的解决方案提供了一些优势在这里,仓库在这里):
Glide似乎已经过优化,只能用于普通的UI(视图).它有一些基本的功能,但对我正在尝试做的最重要的功能似乎是私密的.
我使用官方Glide库(v 3.8.0)进行GIF加载,使用GlideWebpDecoder进行WEBP加载(使用相同版本).
加载其中每个的基本调用是这样的:
GIF:
GlideApp.with(this).asGif()
.load("https://res.cloudinary.com/demo/image/upload/bored_animation.gif")
.into(object : SimpleTarget<GifDrawable>() {
override fun onResourceReady(resource: GifDrawable, transition: Transition<in GifDrawable>?) {
//example of usage:
imageView.setImageDrawable(resource)
resource.start()
}
})
Run Code Online (Sandbox Code Playgroud)
WEBP:
GlideApp.with(this).asDrawable()
.load("https://res.cloudinary.com/demo/image/upload/fl_awebp/bored_animation.webp")
// .optionalTransform(WebpDrawable::class.java, WebpDrawableTransformation(CircleCrop()))
.into(object : SimpleTarget<Drawable>() {
override fun onResourceReady(resource: Drawable, transition: Transition<in Drawable>?) {
//example of usage:
imageView.setImageDrawable(resource)
if (resource is Animatable) {
(resource as Animatable).start()
}
}
})
Run Code Online (Sandbox Code Playgroud)
现在,请记住我并没有真正的ImageView,而是我只有一个Canvas,我可以通过surfaceHolder.lockCanvas()调用获得. …
android ×10
bitmap ×3
drawable ×3
xml-drawable ×2
animated-gif ×1
animation ×1
colors ×1
crop ×1
export ×1
image ×1
java ×1
rotation ×1
whitespace ×1