相关疑难解决方法(0)

从矢量drawable获取位图

在我的应用程序中,我必须为通知设置一个大图标.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例如,结果不为空(我得到正确的位图)是否有我缺少的东西?

android bitmap android-drawable android-vectordrawable

107
推荐指数
5
解决办法
5万
查看次数

使用可绘制资源

我有这个问题,请看跟踪堆栈:

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)

android bitmap drawable xml-drawable

52
推荐指数
3
解决办法
2万
查看次数

在Android @drawable中查找图像的主色

如果使用Windows 7,您可以理解为什么我试图在图像中找到主色.当您将鼠标悬停在任务栏中的程序上时,该特定程序的背景会根据图标中最主要的颜色而变化.我已经注意到其他程序中使用的这种技术,但是不能记住它们.

我可以看到这对我用于开发应用程序的一些UI技术很有用,我想知道如何从Android可绘制资源中找到最常见的颜色.

android colors bitmap drawable

47
推荐指数
5
解决办法
4万
查看次数

BitmapFactory.decodeResource()为xml drawable中定义的形状返回null

我查看了多个类似的问题,虽然我的查询没有找到正确的答案.

我有一个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 xml-drawable android-drawable

37
推荐指数
2
解决办法
2万
查看次数

如何获得图像的平均颜色

我希望能够拍摄图像并找出平均颜色.意思是如果图像是半黑半白,我会得到介于两者之间的东西......有些灰色.它可能是最常见的单色或中值.任何平均值都可以.

我怎么能在android中做到这一点.

java android

34
推荐指数
4
解决办法
3万
查看次数

旋转图像.动画列表还是动画旋转?(机器人)

我想创建一个旋转的进度图像,并想知道什么是最好的方法.我可以使用动画列表,例如每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)

我也尝试过使用重复旋转动画(在动画资源文件夹中使用),但我实际上更喜欢动画列表版本的外观.

解决这个问题的推荐方法是什么?

animation android rotation

29
推荐指数
3
解决办法
5万
查看次数

如何将Drawable资源写入文件?

我需要将一些Drawable资源导出到一个文件.

例如,我有一个函数返回给我一个Drawable对象.我想把它写到一个文件中/sdcard/drawable/newfile.png.我该怎么做?

android export drawable

25
推荐指数
2
解决办法
3万
查看次数

VectorDrawable:如何在画布上定位?

您好我的自定义视图:

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坐标的开始绘图,但这只会影响尺寸.

如何将矢量绘图放在画布上?

谢谢阅读

android android-canvas android-vectordrawable

10
推荐指数
3
解决办法
9132
查看次数

如何删除Android中图像周围的空白区域?

给定带有alpha通道(透明度)的图像,我想删除图像边界和实际图像之间的任何空白区域.这应该在背景任务或加载屏幕中完成,具有可接受的运行时间以不削弱用户体验.

在此输入图像描述

我怎样才能达到这个效果?

whitespace android image crop

9
推荐指数
2
解决办法
3459
查看次数

使用Glide,我如何作为Bitmap遍历GifDrawable的每一帧?

背景

在动态壁纸中,我有一个Canvas实例,我希望将GIF/WEBP内容绘制成,通过Glide加载.

我想与滑翔做到这一点,原因是它在我过去找到了同样的事情(的解决方案提供了一些优势在这里,仓库在这里):

  1. 电影的使用限制我只使用GIF.有了Glide,我也可以支持WEBP动画
  2. 电影的使用似乎效率低,因为它没有告诉我在帧之间等待的时间,所以我必须选择我想尝试使用的FPS.它在Android P上也被弃用了.
  3. Glide可能能够轻松处理各种缩放.
  4. 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 animated-gif android-glide animated-webp

9
推荐指数
2
解决办法
1473
查看次数