android 自定义view,字母排序(仿微信好友列表)

一:简言

一个月没有写博客了,公司项目比较忙,最近发现公司用到一个知识点,所以抽时间通过博客的形式分享给大家,该知识点,模仿微信的好友列表,通过字母索引进行定位,该功能主要通过几个知识点实现。下面会一一讲解。

二:具体说下思路

  • 1 :整体用到的控件,list view(recyclerView原理一样),自定义view,汉字转拼音的utils工具类.
  • 2:创建一个自定义类继承view,实现侧面滑动字母显示字母索引数据,说下自定义View,首先自定义类继承View重写三个构造方法,重写
  • onMeasure()的方法用于测量View的宽高,onSizeChanged()方法改变当前控件大小的时候调用,onDarw()方法绘制View,
  • onTouchEvent()方法用于手势监听,自定义接口用于保存点击了那个字母的值。
  • 3:创建一个person的实体bean,实现列表数据的展示,
  • 4。通过将汉字通过拼音的形式进行分类,添加一个pinyinj-2.5.0.jar,实现转换,(稍后代码会详细介绍)。
  • 5:将数据显示出来,实现效果;

三:实现效果

 

  • 四:通过代码的形式介绍步骤:

1)首先实现实体bean(Person)

public class Person {

    private String name;

    private String pinyin;

    public Person(String name){
        this.name = name;
        this.pinyin = PinYinUtils.getPinYin(name);
    }

    public String getPinyin() {
        return pinyin;
    }

    public void setPinyin(String pinyin) {
        this.pinyin = pinyin;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", pinyin='" + pinyin + '\'' +
                '}';
    }
}

该类没有讲解的必要,直接刀币下一个类:

2)拼音转换工具类(PinYinUtils)

首先添加这个jar包(稍后分享)

然后创建该类(代码如下)

public class PinYinUtils {
    /**
     * 得到指定汉字的拼音
     * 注意:不应该被频繁调用,它消耗一定内存
     * @param hanzi
     * @return
     */
    public static String getPinYin(String hanzi){
        String pinyin = "";

        HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();//控制转换是否大小写,是否带音标
        format.setCaseType(HanyuPinyinCaseType.UPPERCASE);//大写
        format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);

        //由于不能直接对多个汉字转换,只能对单个汉字转换
        char[] arr = hanzi.toCharArray();
        for (int i = 0; i < arr.length; i++) {
            if(Character.isWhitespace(arr[i]))continue;//如果是空格,则不处理,进行下次遍历

            //汉字是2个字节存储,肯定大于127,所以大于127就可以当为汉字转换
            if(arr[i]>127){
                try {
                 
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值