标签: android-vectordrawable

在 Android Studio 中使用 PDF 矢量图形

我有来自 iOS 项目的 PDF 图像资产,我需要将其添加到 Android Studio 项目中。是否可以将 PDF 添加到 Android Studio,或者我是否必须使用 Gimp 或 Illustrator 等外部转换器将资产转换为 SVG/PSD/XML?(谷歌的Android矢量图形文档)如果是这样,这样做的最佳实践是什么?我问是因为,到目前为止,我尝试这样做的结果是低质量的资产。

pdf android vector-graphics android-studio android-vectordrawable

8
推荐指数
0
解决办法
4369
查看次数

Android如何以编程方式调整(缩放)xml矢量图标

这真让我抓狂.我希望能够以编程方式调整xml矢量可绘制图标的大小,以便在ImageView中使用它.

这是我到目前为止所做的不起作用的

Drawable drawable = ResourcesCompat.getDrawable(getResources(),R.drawable.ic_marker,null);
drawable.setBounds(0,0,512,512);
imageVenue.setImageDrawable(drawable);
Run Code Online (Sandbox Code Playgroud)

矢量图标ic_marker未调整大小.它只是每次都保持硬编码的宽度和高度值.

有任何想法吗?

java android android-layout android-studio android-vectordrawable

7
推荐指数
1
解决办法
6562
查看次数

在Vector Drawable中擦除可绘制图像

在这里找到了这个矢量可绘制资源.我想要做的是翻转它,使X在另一边.

我设法在布局中执行此操作,就像在此示例中添加: android:scaleX="-1" 到我的ImageView并且它可以工作.

现在我想直接在Vector Drawable中更改它,但是当我尝试下面的代码时它是不可见的.

account_remove.xml:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportHeight="24"
    android:viewportWidth="24">

    <group
        android:name="rotationGroup"
        android:scaleX="-1" >

        <path
            android:fillColor="#FFFFFF"
            android:pathData="M15,14C17.67,14 23,15.33 23,18V20H7V18C7,15.33 12.33,14 15,14M15,12A4,4 0 0,1 11,8A4,4 0 0,1 15,4A4,4 0 0,1 19,8A4,4 0 0,1 15,12M5,9.59L7.12,7.46L8.54,8.88L6.41,11L8.54,13.12L7.12,14.54L5,12.41L2.88,14.54L1.46,13.12L3.59,11L1.46,8.88L2.88,7.46L5,9.59Z" />
    </group>
</vector>
Run Code Online (Sandbox Code Playgroud)

当我添加:

android:pivotX="10.0"
android:pivotY="10.0"
Run Code Online (Sandbox Code Playgroud)

到我的rotationGroup,它向右倾斜.

我应该将哪些值添加到我的rotationGroup以使其正常工作?

xml android drawable android-drawable android-vectordrawable

7
推荐指数
1
解决办法
2768
查看次数

Android:如何在一个Vector Drawable xml中使用选择器更改android:fillcolor

选项卡图标:我当前的方法是创建两个文件(ic_list_selected_24dp.xml和ic_list_unselected_24dp.xml;它们基本相同但只是android:fillColor='Color HEX CODE'不同),然后创建一个选择器(selector_tabitem_list.xml)来更改状态时的可绘制颜色改变了.

// @drawable/selector_tabitem_list.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto">
    <item android:drawable="@drawable/ic_list_selected_24dp" 
        android:state_selected="true" />
    <item android:drawable="@drawable/ic_list_unselected_24dp" 
        android:state_selected="false" />
</selector>
Run Code Online (Sandbox Code Playgroud)

它有点复制,因为两个drawable是相同的.

选择器不能用于矢量drawable.

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24.0"
    android:viewportHeight="24.0">
    <path
        android:fillColor="@drawable/selector"
        android:pathData="M19,3...."
</vector>
Run Code Online (Sandbox Code Playgroud)

-

// @drawable/selector

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true">
        <color android:color="@color/itemSelected" />
    </item>
    <item android:state_selected="false">
        <color android:color="@color/itemUnselected" />
    </item>
</selector>
Run Code Online (Sandbox Code Playgroud)

,android:fillColor="@color/state"或者.

// @color/state

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@android:color/white" android:state_selected="true" />
    <item android:color="@android:color/black" android:state_selected="false" />
</selector>
Run Code Online (Sandbox Code Playgroud)

有没有办法使用一个drawable并动态更改其颜色?使用硬十六进制代码更好?

谢谢.

android android-tabs android-selector android-tablayout android-vectordrawable

7
推荐指数
1
解决办法
3522
查看次数

如何从 ImageSpan 内的 xml 矢量设置 Drawable

如何Drawable从 xml 向量中设置ImageSpan?我使用下面这两种方法。但我的图标没有显示。当我使用可绘制资源图标中的 png 时,会显示出来。任何想法?

private void setupEmptyListInfoBox() {
        Drawable icon = loadVectorFromResources(getActivity(), R.drawable.ic_add_circle_24dp);
        ImageSpan is = new ImageSpan(icon, DynamicDrawableSpan.ALIGN_BASELINE);
        String info = getString(R.string.empty_weight_list_info);
        int iconPosition = info.indexOf("|");

        SpannableString text = new SpannableString(info);
        text.setSpan(is, iconPosition, iconPosition + 1, 0);

        mEmptyListInfo.setText(text);
    }

public static Drawable loadVectorFromResources(Context context, int resId) {
    Drawable drawable;
    if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
        drawable = VectorDrawableCompat.create(context.getResources(), resId, context.getTheme());
    } else {
        drawable = context.getResources().getDrawable(resId, context.getTheme());
    }
    return drawable;
}
Run Code Online (Sandbox Code Playgroud)

android drawable android-drawable android-vectordrawable

7
推荐指数
1
解决办法
1779
查看次数

在API <21上更新build.gradle后,停止使用矢量drawables工作项目

我有工作项目.

  • minSdkVersion 17
  • com.android.tools.build:gradle:2.3.3
  • gradle 4.1
  • Android Studio 3 Canary 6

我有我的gradle文件:

defaultConfig {
        vectorDrawables.useSupportLibrary = true
        vectorDrawables.generatedDensities = []
}
Run Code Online (Sandbox Code Playgroud)

我也打电话给活动:

AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)
Run Code Online (Sandbox Code Playgroud)

应用程序完美.现在改为:

  • com.android.tools.build:gradle:3.0.0-alpha6
  • 添加到存储库google()

执行gradle clean assembleDebug.

应用程序继续适用于API> 20的设备.但对于API <21(谷歌Android模拟器),启动应用程序崩溃.我在logcat错误中看到:Resources$NotFoundException: Resource ID #0x7f080058(0x7f080058是可绘制的abc_vector_test).

为什么?

UPD 2017-07-19:它已修复并发布在com.android.tools.build:gradle:3.0.0-alpha7

android android-gradle-plugin android-vectordrawable

7
推荐指数
2
解决办法
1299
查看次数

长 SVG 资产文件错误:R 不是有效动词。失败发生在路径的位置 2:STRING_TOO_LARGE

我目前在使用 Android Studio 时遇到了一些问题,因为我最近开始使用“矢量资产”。我已经完成了在我的应用程序中正确显示它们所需的一切(使用app:srcCompat=""xml、android {defaultConfig {vectorDrawables.useSupportLibrary true}}build.gradle 和setContentView()之前AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);onCreate()方法)。

我导入到 Android Studio 中的 svg 文件本身没有错误,我可以使用向导在 ImageView 中毫无问题地看到结果。唯一的问题出现在我运行我的应用程序时,它到达绘制 svg 的时间。我的一些 svg 仍然有效,而另一些则无效,所以我认为其中一些需要很长时间来处理。这是错误:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.retroverse.bataille_corse, PID: 18807
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.retroverse.bataille_corse/com.retroverse.bataille_corse.MenuPrincipal}: android.view.InflateException: Binary XML file line #127: Binary XML file line #127: Error inflating class ImageView
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2985)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3120)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1840)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:201)
        at android.app.ActivityThread.main(ActivityThread.java:6872)
        at java.lang.reflect.Method.invoke(Native Method) …
Run Code Online (Sandbox Code Playgroud)

svg android runtimeexception android-studio android-vectordrawable

7
推荐指数
2
解决办法
2230
查看次数

如何测试片段场景测试中可见的矢量可绘制对象?

我编写了一些片段场景测试,这些测试将截取屏幕截图和一些点击事件。由于未显示图像视图,很少有测试失败。

测试库( https://developer.android.com/training/basics/fragments/testing )中的测试活动似乎使用 FragmentActivity,它不是 AppCompatActivity 的子类。结果,这些图像视图不可见。我可以添加属性android:src以使其在测试中可见,但这将是一个丑陋的修复。还有其他解决办法吗?

感谢对此的任何评论或建议。

view_item.xml

<ImageView
                android:id="@+id/ivRemove"
                android:layout_width="16dp"
                android:layout_height="16dp"
                android:layout_marginStart="@dimen/spacing_16dp"
                android:layout_marginTop="@dimen/spacing_16dp"
                android:layout_marginBottom="@dimen/spacing_16dp"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                app:srcCompat="@drawable/ic_remove" />
Run Code Online (Sandbox Code Playgroud)

构建.gradle.kts

defaultConfig {
        this.testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
        this.vectorDrawables.useSupportLibrary = true
    }
Run Code Online (Sandbox Code Playgroud)

android android-testing android-vectordrawable android-fragmentscenario

7
推荐指数
0
解决办法
178
查看次数

更改图层列表项中的矢量可绘制颜色

我有以下可绘制的layer-list

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="oval">
            <solid android:color="@color/grey" />
            <size
                android:width="64dp"
                android:height="64dp" />
        </shape>
    </item>
    <item
        android:layout_gravity="center_vertical"
        android:width="36dp"
        android:height="36dp"
        android:drawable="@drawable/ic_android_black_24dp"
        android:gravity="center"
        android:tint="@color/red" />
</layer-list>
Run Code Online (Sandbox Code Playgroud)

其中ic_android_black_24dp是可绘制矢量。

我需要在 xml 中更改此可绘制对象的颜色(不是以编程方式),并且无需创建具有不同颜色的副本。

我尝试过android:tintandroid:color并用不同的方法<shape>

有什么解决方案可以做到这一点吗?

xml android android-drawable android-vectordrawable

7
推荐指数
0
解决办法
1032
查看次数

如何以编程方式设置组合矢量图标的色调模式和色调颜色

我有一些从 SVG 转换而来的矢量图标,我需要根据某些条件为它们自定义色调颜色,我正在尝试以编程方式更改色调颜色

Image(
        modifier = Modifier.size(128.dp),
        painter = painterResource(id = R.drawable.icon_1),
        contentDescription = null,
        colorFilter =  ColorFilter.tint(Color.Red)
    )
Run Code Online (Sandbox Code Playgroud)

它给了我以下结果

结果

另外,当我尝试使用

Image(
    modifier = Modifier.size(128.dp),
    painter = painterResource(id = R.drawable.icon_1),
    contentDescription = null,
    colorFilter =  ColorFilter.tint(Color.Red, blendMode = BlendMode.Multiply)
)
Run Code Online (Sandbox Code Playgroud)

我也得到了同样的结果。但是,当我尝试通过添加来更改 XML 文件中的图标色调时

android:tint="@color/red"
android:tintMode="multiply"
Run Code Online (Sandbox Code Playgroud)

它正确地给了我想要的结果,如下所示

在此输入图像描述

那么,当我需要根据某些条件以编程方式将颜色更改为不同颜色时,如何才能以编程方式实现相同的结果呢?

android-vectordrawable android-jetpack-compose

7
推荐指数
1
解决办法
2542
查看次数