0xff 更新

  • v1.0.2 增加长按回调事件

0x00 前言

先扔个地址 w :Github - ChinaMapInfoView

这是一个可移动、缩放的中国地图,开发者可以使用它来直观显示基于省的统计数据,如各省某年人口出生率、各省每月最高气温等。 实现了省份点击 / 长按事件回调的接口,可以用来跳转到显示该省详细数据的 Activity。 使用 SVG-Android 开源库生成对应的 Drawable , 支持 API 14(Android 4.0)+ 版本。

欢迎 Star :)

0x01 预览和说明

效果预览(放缩的时候要两个手指,蓝框 A 是模拟器的虚拟按键,模拟其中一个手指):

支持特性:
  • 平移
  • 缩放
  • 高亮选中省份
  • 当图片过度移动则回滚
  • 实现 ChinaMapViewProvinceListener 接口来进行回调交互(点击 / 长按)
  • 自定义填充 / 点击 / 长按(边界)颜色、边界宽度

0x02 下载

Maven
<dependency>
  <groupId>com.sorashiro.ChinaMapInfoView</groupId>
  <artifactId>library</artifactId>
  <version>1.0.2</version>
  <type>pom</type>
</dependency>
复制代码
Gradle
compile 'com.sorashiro.ChinaMapInfoView:library:1.0.2'
复制代码

0x03 如何使用

activity_main.xml
<com.sorashiro.chinamapinfoview.ChinaMapInfoView
    android:id="@+id/imgCnMap"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
/>
复制代码
MainActivity.java (使用了 Butter Knife)
public class MainActivity extends AppCompatActivity implements ChinaMapInfoView.ChinaMapViewProvinceListener {

    @BindView(R2.id.imgCnMap)
    ChinaMapInfoView imgCnMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ButterKnife.bind(this);

        initView();
    }

    private void initView() {
        imgCnMap.setChinaMapViewProvinceListener(this);
    }

    @Override
    public void onProvinceClick(int i) {
        LogAndToastUtil.ToastOut(this, imgCnMap.getCnMap().PROVINCE[i] + " is clicked");
    }

    @Override
    public void onProvinceLongClick(int i) {
        LogAndToastUtil.ToastOut(this, imgCnMap.getCnMap().PROVINCE[i] + " is long clicked");
    }
}
复制代码

0x04 自定义

如果你想同时改变安徽省的 填充颜色高亮颜色 ,只要这么做:

// first get the config map
// 首先获取总设置 map
CnMap cnMap = imgCnMap.getCnMap();
HashMap<String, CnMapConfig> cnConfigMap = cnMap.configMap;
// or configMap.get("Anhui"); but use cnMap.PROVINCE[0] better
// 或者 configMap.get("Anhui"); 但是用 cnMap.PROVINCE[0] 更好些
CnMapConfig configAnhui = cnConfigMap.get(cnMap.PROVINCE[0]);
// support method chaining
// 支持链式调用(方法链)
configAnhui
        .setFillColor(Color.parseColor("#ee0000"))
        .setClickColor(Color.parseColor("#99ffff"));
复制代码

更多见 Github :) 感谢支持 w

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐