【问题标题】:How to make svg path clickable defined in XML file如何使 XML 文件中定义的 svg 路径可点击
【发布时间】:2019-01-15 16:41:57
【问题描述】:

我有一个svg,我使用svg2android转换它,我在drawable文件夹中添加了xml文件,并在ImageView中使用它

<ImageView
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:id="@+id/imageView"
    android:clickable="true"
    app:srcCompat="@drawable/vector"
/>

这是在我的屏幕上绘制 3 个点(来自路径数据),我想让所有这些点都可点击,当用户点击它们时,我想将这些点的颜色从黑色更改为白色。

以下是我的xml 文件中的数据,由svg 转换而来。

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

    <path
        android:name="EM_S030_F0001_L0230"
        android:fillColor="#000000"
        android:pathData="M 96.1 353 L 100.6 350.8 L 102.8 355.2 L 98.4 357.4 Z" />
    <path
        android:name="EM_S030_F0001_L0228"
        android:fillColor="#000000"
        android:pathData="M 101.8 350.3 L 106.5 348.6 L 108.2 353.2 L 103.5 355 Z" />
    <path
        android:name="EM_S030_F0001_L0226"
        android:fillColor="#000000"
        android:pathData="M 107.9 348.2 L 112.5 346.5 L 114.2 351.1 L 109.6 352.8 Z" />

【问题讨论】:

  • 你需要一个自定义视图来实现这个功能:android 不支持这样的东西
  • 您可以更改图像色调或按照 pskink 的建议制作自定义视图
  • 感谢@pskink 和 Ibrahim,但在 customView 中,我将渲染 数据,你知道这方面的任何例子吗?
  • 确定:搜索PathParser.java - 它在support-vector-drawable 包中
  • 谢谢,会调查这个

标签: android android-layout svg svg-filters


【解决方案1】:
imageView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            imageView.setImageResource(R.drawable.vector_white); 
        }
    });

vector_white.xml

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

<path
    android:name="EM_S030_F0001_L0230"
    android:fillColor="#FFFFFF"
    android:pathData="M 96.1 353 L 100.6 350.8 L 102.8 355.2 L 98.4 357.4 Z" />
<path
    android:name="EM_S030_F0001_L0228"
    android:fillColor="#FFFFFF"
    android:pathData="M 101.8 350.3 L 106.5 348.6 L 108.2 353.2 L 103.5 355 Z" />
<path
    android:name="EM_S030_F0001_L0226"
    android:fillColor="#FFFFFF"
    android:pathData="M 107.9 348.2 L 112.5 346.5 L 114.2 351.1 L 109.6 352.8 Z" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-21
    • 2013-07-30
    • 1970-01-01
    相关资源
    最近更新 更多