需要做了一个仿微信侧边烂搜索界面的View,这种简单的控件如果去github上的话,很麻烦,所以就自己写了一个,代码很简单,不多说,上代码

public class SideBar extends View {private String[] mTexts = new String[]{"#", "A", "B", "C", "D", "E", "F", "G", "H","I", "J", "K", "L", "M", "N", "O", "P", "Q","R", "S", "T", "U", "V", "W", "X", "Y", "Z"};private Paint mCommonPaint;private int mChoose = -1;private Paint mChoosePaint;private GestureDetector mGestureDetector;private int mTextHeight;public SideBar(Context context) {super(context);init();}public SideBar(Context context, @Nullable AttributeSet attrs) {super(context, attrs);init();}public SideBar(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);init();}private void init() {mCommonPaint = new Paint();mCommonPaint.setAntiAlias(true); //抗锯齿mCommonPaint.setTextSize(ScreenUtil.dip2px(10));mCommonPaint.setColor(Color.parseColor("#888888"));mCommonPaint.setTypeface(Typeface.MONOSPACE); //设置字体mChoosePaint = new Paint();mChoosePaint.setAntiAlias(true);mChoosePaint.setTextSize(ScreenUtil.dip2px(10));mChoosePaint.setColor(Color.parseColor("#333333"));mChoosePaint.setTypeface(Typeface.MONOSPACE);mGestureDetector = new GestureDetector(getContext(), mOnGestureListener);}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);for (int i = 0; i < mTexts.length; i++) {String text = mTexts[i];float x = getMeasuredWidth() / 2 - mCommonPaint.measureText(text) / 2; //measureText测量字体大小if (mChoose == i) {canvas.drawText(text, x, i * mTextHeight + mTextHeight + getPaddingTop(), mChoosePaint);} else {canvas.drawText(text, x, i * mTextHeight + mTextHeight + getPaddingTop(), mCommonPaint);}}}private GestureDetector.SimpleOnGestureListener mOnGestureListener = new GestureDetector.SimpleOnGestureListener() {@Overridepublic boolean onSingleTapUp(MotionEvent e) {int y = (int) e.getY() - getPaddingTop();mChoose = y / mTextHeight;invalidate();if (mOnSideChooseListening != null) {mOnSideChooseListening.onChooseListener(mChoose, mTexts[mChoose]);}return super.onSingleTapUp(e);}};@Overridepublic boolean onTouchEvent(MotionEvent event) {mGestureDetector.onTouchEvent(event);switch (event.getAction()) {case MotionEvent.ACTION_DOWN:setBackgroundColor(Color.parseColor("#88888888"));break;case MotionEvent.ACTION_UP:setBackgroundColor(Color.TRANSPARENT);break;}return true;}@Overrideprotected void onSizeChanged(int w, int h, int oldw, int oldh) {super.onSizeChanged(w, h, oldw, oldh);//需要考虑paddingmTextHeight = (getMeasuredHeight() - getPaddingTop() - getPaddingBottom()) / mTexts.length; }public void setTextSize(int size) {mCommonPaint.setTextSize(size);mChoosePaint.setTextSize(size);}public interface OnSideChooseListening {void onChooseListener(int choose, String text);}private OnSideChooseListening mOnSideChooseListening;public void setOnSideChooseListening(OnSideChooseListening onSideChooseListening) {mOnSideChooseListening = onSideChooseListening;}
}

SideBar 仿微信联系人侧边栏界面搜索Viwe相关推荐

  1. 仿微信联系人索引列表ListView

    IM 模块中经常用到 字母索引 ListView 来做通讯录 或者称联系人列表, 今天跟大家分享一个仿微信联系人索引列表, 优点是轻量级,简单易懂. 不要任何依赖 , jar包等 效果预览 工程结构 ...

  2. android 仿微信联系人 首字母分组快速索引

    总结是一种习惯,不能停,一停人就懒了,都快一个月没有写了!该提提神了! 进入正题:android 仿微信联系人 首字母快速索引,先用下美团的索引效果图: 1.自定义View字母索引栏(右边那一列): ...

  3. Android仿微信气泡聊天界面设计

    Android仿微信气泡聊天界面设计 微信的气泡聊天是仿iPhone自带短信而设计出来的,不过感觉还不错可以尝试一下仿着微信的气泡聊天做一个Demo,给大家分享一下!效果图如下: 气泡聊天最终要的是素 ...

  4. android仿支付提现功能,Android应用开发Android 仿微信支付密码界面

    本文将带你了解Android应用开发Android 仿微信支付密码界面,希望本文对大家学Android有所帮助. 使用 Bundle bundle = new Bundle(); bundle.put ...

  5. ios 探探编辑页图片拖动_nuxt+vue仿微信/探探界面|nuxt聊天实例

    最近趁着空闲时间给自己充充电,捣鼓学习了下Nuxt.js框架并开发了一个聊天项目 NuxtChat . 如上图:一些演示效果片段.emmm~ 不错哟  项目介绍 基于nuxt.js+vue.js+vu ...

  6. Android仿微信语音聊天界面设计

    这篇文章主要为大家详细介绍了Android仿微信语音聊天界面设计代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 有段时间没有看视频了,昨天晚上抽了点空时间,又看了下鸿洋大神的视频教程,又抽时间 ...

  7. android仿微信点击好友,安卓开发仿微信联系人列表-机器人列表视图仿微通道聊天多久最底部滑动...

    楼主你好!根据你的描述,让我给你答案! :新内容加进来,列表视图重新为setSelection后,定位结束后,拉起一个页面放. . 希望你能有所帮助,如果满意,请记得采纳像下拉条为微信好友如何实现 简 ...

  8. 联系人排序java代码_Android仿微信联系人按字母排序_脚本之家

    App只要涉及到联系人的界面,几乎都是按照字母排序以及导航栏的方式.既然这个需求这么火,于是开始学习相关内容,此篇文章是我通过参考网上资料独立编写和总结的,希望多多少少对大家有所帮助,写的不好,还请各 ...

  9. android 微信缩小通话界面_安卓如何做出微信那样的界面仿微信“我”的界面2/5...

    本系列目标 通过安卓编程仿写微信"我"的界面,让大家也能做出类似微信界面.效果图如下: 本文目标 做出支付部分(其他部分在后续文章中逐步分享).效果图如下: 实现方案 通过截图工具 ...

最新文章

  1. .net下的富文本编辑器FCKeditor的配置方法(图)原创
  2. eclipse常用插件安装
  3. 网站跳出率是SEO优化转化低的诱因之一
  4. python飞机大战资料-Python之游戏开发-飞机大战
  5. linux之多任务的同步与互斥
  6. 有字符csv文件导入matlab_Matlab:如何读取CSV文件以及如何读取带有字符串数据项的CSV文件...
  7. iOS 使点击事件穿透透明的UIView
  8. matlab在linux效率高吗,取代matlab, Linux下科学计算环境的搭建
  9. contenteditable
  10. wpe手机中文汉化版下载_wpe中文版
  11. 简略讲述我的Fiddler的安转和配置过程
  12. 一家中国公司把城市变成了AI版《清明上河图》
  13. IDEA中看代码时返回上一步快捷键(Mac)
  14. Linux增加一块scsi硬盘,Linux下添加第二块scsi硬盘
  15. 190108每日一句
  16. 计算机大学生的代码作业帮做,现在越来越多的学生使用
  17. win7字体大小怎么设置_怎么设置 win7系统excel2010定时保存和数据恢复的方案 -win7系统使用教程...
  18. 什么是5g全双工模式_5G的完整形式是什么?
  19. 当Excel文件中包含图片时转pdf
  20. Python-sklearn包中自动调参方法-网格搜索GridSearchCV

热门文章

  1. 第三届“互联网+教育”创新周在京启动
  2. 计世独家:新加坡国家网格雏形已现
  3. App store 截图及视频尺寸要求
  4. 天翼云:改变数据时代的存储与分享
  5. 云计算发展促进IDC持续增长
  6. 云图和热力图的绘制算法
  7. 新的空难事故,正在酝酿中……?
  8. AP3010DN-V2 安装 配置
  9. 中国政府信息化行业发展规划及投资前景分析报告
  10. 深度linux 2014 下载,Deepin 2014.1 正式版下载