ChinaMapInfoView - 基于 Android 的中国地图自定义 View

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值