当前位置: 首页 > news >正文

婚介所网站开发费用wordpress kalium

婚介所网站开发费用,wordpress kalium,wordpress自动审核,网站名称可以是域名前言最近项目需要做一个地区首字母a-z排序的效果,记录一下自己如何实现的. 先看下效果图: 分析这种效果自己实现还是第一次;之前见过这种效果: 这些字母都是onDraw画上去的;只要知道每个字母的left,top,right,bottom就能知道它的具体位置,所以onMeasure方法中要确定每个单元格的…前言  最近项目需要做一个地区首字母a-z排序的效果,记录一下自己如何实现的. 先看下效果图:    分析这种效果自己实现还是第一次;之前见过这种效果: 这些字母都是onDraw画上去的;只要知道每个字母的left,top,right,bottom就能知道它的具体位置,所以onMeasure方法中要确定每个单元格的宽高.文字排序可以先把汉字转换成拼音,再去比较首字母的顺序(特殊地区特殊处理,比如重庆); 具体看下是如何确定字母的位置: 于是乎,代码就出来了: 1 public class QuickIndexBar extends View {2 3 private OnLetterUpdateListener onLetterUpdateListener;4 5 public interface OnLetterUpdateListener{6 void onLetterUpdate(String letter);7 }8 9 public OnLetterUpdateListener getOnLetterUpdateListener() {10 return onLetterUpdateListener;11 }12 13 public void setOnLetterUpdateListener(14 OnLetterUpdateListener onLetterUpdateListener) {15 this.onLetterUpdateListener onLetterUpdateListener;16 }17 private static final String[] LETTERS new String[]{18 A, B, C, D, E, F,19 G, H, I, J, K, L,20 M, N, O, P, Q, R,21 S, T, U, V, W, X,22 Y, Z23 };24 25 private Paint paint;26 27 // 单元格宽度28 private int cellWidth;29 30 // 单元格高度31 private float cellHeight;32 33 34 public QuickIndexBar(Context context) {35 this(context, null);36 }37 38 public QuickIndexBar(Context context, AttributeSet attrs) {39 this(context, attrs, 0);40 }41 42 public QuickIndexBar(Context context, AttributeSet attrs, int defStyle) {43 super(context, attrs, defStyle);44 // 创建一个抗锯齿的画笔45 paint new Paint(Paint.ANTI_ALIAS_FLAG);46 // 画笔文本加粗47 paint.setTypeface(Typeface.DEFAULT_BOLD);48 // 颜色49 paint.setColor(Color.WHITE);50 }51 52 Override53 protected void onDraw(Canvas canvas) {54 55 // 遍历26个英文字母, 计算坐标, 进行绘制56 for (int i 0; i LETTERS.length; i) {57 String letter LETTERS[i];58 59 // 计算x坐标60 float x cellWidth * 0.5f - paint.measureText(letter) * 0.5f;61 // 计算y坐标62 Rect bounds new Rect();63 // 获取文本的矩形区域64 paint.getTextBounds(letter, 0, letter.length(), bounds);65 66 float y cellHeight * 0.5f bounds.height() * 0.5f i * cellHeight;67 68 // 绘制文本69 canvas.drawText(letter, x, y, paint);70 }71 }72 private int lastIndex -1;73 74 Override75 public boolean onTouchEvent(MotionEvent event) {76 77 float y;78 int currentIndex;79 80 switch (event.getAction()) {81 case MotionEvent.ACTION_DOWN:82 // 获取被点击到的字母索引83 y event.getY();84 // 根据y值, 计算当前按下的字母位置85 currentIndex (int) (y / cellHeight);86 if(currentIndex ! lastIndex){87 if(currentIndex 0 currentIndex LETTERS.length){88 String letter LETTERS[currentIndex];89 if(onLetterUpdateListener ! null){90 onLetterUpdateListener.onLetterUpdate(letter);91 }92 System.out.println(letter: letter);93 // 记录上一次触摸的字母94 lastIndex currentIndex;95 }96 }97 98 break;99 case MotionEvent.ACTION_MOVE: 100 // 获取被点击到的字母索引 101 y event.getY(); 102 // 根据y值, 计算当前按下的字母位置 103 currentIndex (int) (y / cellHeight); 104 if(currentIndex ! lastIndex){ 105 if(currentIndex 0 currentIndex LETTERS.length){ 106 String letter LETTERS[currentIndex]; 107 if(onLetterUpdateListener ! null){ 108 onLetterUpdateListener.onLetterUpdate(letter); 109 } 110 System.out.println(letter: letter); 111 // 记录上一次触摸的字母 112 lastIndex currentIndex; 113 } 114 } 115 116 break; 117 case MotionEvent.ACTION_UP: 118 lastIndex -1; 119 break; 120 default: 121 break; 122 } 123 124 return true; 125 } 126 127 Override 128 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 129 super.onMeasure(widthMeasureSpec, heightMeasureSpec); 130 int mHeight getMeasuredHeight(); 131 cellWidth getMeasuredWidth(); 132 cellHeight mHeight * 1.0f / LETTERS.length; 133 } 134 135 136 137 } 这种竖直的简单快速索引就搞定了,此外还添加了触摸和点击的监听 实现再来看下我们要的效果图那种效果是如何实现的;主要区别就是字母所在位置和触摸位置的差异,偷点懒,直接上代码了: 1 Override2 protected void onDraw(Canvas canvas) {3 4 // 遍历26个英文字母, 计算坐标, 进行绘制5 for (int i 0; i LETTERS.length; i) {6 String letter LETTERS[i];7 8 // 计算x坐标9 // float x cellWidth * 0.5f - paint.measureText(letter) * 0.5f; 10 float y cellHeight * 0.5f paint.measureText(letter) * 0.5f; 11 // 计算y坐标 12 Rect bounds new Rect(); 13 // 获取文本的矩形区域 14 paint.getTextBounds(letter, 0, letter.length(), bounds); 15 16 // float y cellHeight * 0.5f bounds.height() * 0.5f i * cellHeight; 17 float x cellWidth * 0.5f bounds.width() * 0.5f i * cellWidth; 18 // 绘制文本 19 canvas.drawText(letter, x, y, paint); 20 } 21 } 22 23 private int lastIndex -1; 24 25 Override 26 public boolean onTouchEvent(MotionEvent event) { 27 28 float x; 29 int currentIndex; 30 31 switch (event.getAction()) { 32 case MotionEvent.ACTION_DOWN: 33 // 获取被点击到的字母索引 34 x event.getX(); 35 // 根据x值, 计算当前按下的字母位置 36 currentIndex (int) (x / cellWidth); 37 if (currentIndex ! lastIndex) { 38 if (currentIndex 0 currentIndex LETTERS.length) { 39 String letter LETTERS[currentIndex]; 40 if (onLetterUpdateListener ! null) { 41 onLetterUpdateListener.onLetterUpdate(letter); 42 } 43 // 记录上一次触摸的字母 44 lastIndex currentIndex; 45 } 46 } 47 48 break; 49 case MotionEvent.ACTION_MOVE: 50 // 获取被点击到的字母索引 51 x event.getX(); 52 // 根据y值, 计算当前按下的字母位置 53 currentIndex (int) (x / cellWidth); 54 if (currentIndex ! lastIndex) { 55 if (currentIndex 0 currentIndex LETTERS.length) { 56 String letter LETTERS[currentIndex]; 57 if (onLetterUpdateListener ! null) { 58 onLetterUpdateListener.onLetterUpdate(letter); 59 } 60 // 记录上一次触摸的字母 61 lastIndex currentIndex; 62 } 63 } 64 65 break; 66 case MotionEvent.ACTION_UP: 67 lastIndex -1; 68 break; 69 default: 70 break; 71 } 72 73 return true; 74 } 75 76 Override 77 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 78 super.onMeasure(widthMeasureSpec, heightMeasureSpec); 79 int mWidth getMeasuredWidth(); 80 cellWidth mWidth * 1.0f / LETTERS.length; 81 cellHeight getMeasuredHeight(); 82 } 可以看到主要区别就是单元格的宽度和高度相应改变了;后面会补充一张计算草图.  转载于:https://www.cnblogs.com/fuyaozhishang/p/7110215.html
http://www.zqtcl.cn/news/568103/

相关文章:

  • 湘潭网站建设价格最新新闻热点事件100字
  • 音乐网站程序源码wordpress模板中文版
  • 网站建设计划表wordpress主题 大
  • 在手机制作网站书店网站建设技术风险
  • 爱站网域名查询wordpress自定义标题关键词描述
  • 西安学校网站建设报价建盏
  • 网页 网站 区别东莞手机app开发
  • 空压机网站开发公司广州海珠区有什么好玩的景点
  • 什么网站可以做期货企业解决方案服务协议
  • 西安汽车网站制作手机软件制作网站平台
  • 微信的微网站介绍自己的家乡遵义网站建设
  • 爱站seo东莞网站建设要注意什么
  • 惠州网站建设 英语6wordpress 表格提交
  • 做网站15年多少钱一度电
  • 北京网站域名快速备案外贸网站优化价格
  • 做网站 工资高吗免费建站的站点网站
  • 个人做营利性质网站会怎么样qq邮箱官方网站
  • 网站怎么做等级保护产品展示小程序
  • 奉贤网站建设专家高端自适应网站设计
  • 网站正在建设中 动态徐州网站建设方案咨询
  • 广东世纪达建设集团有限公司官方网站专业电商网站开发
  • 抚顺建设网站自适应网站建设推荐
  • 做网站的大公司手机页面
  • 网站建设的公司实习做什么系统设计
  • 兰州网站设计哪个平台好外贸网站定制公司哪家好
  • 做网站需要先买域名吗在线音乐网站开发数据库
  • 深圳优化网站搬家网站模板
  • 网站建设做的人多吗门户网站制作建设
  • 哪个网站可以做logo怀柔网页公司制作
  • 网站被抄袭怎么投诉网站建设丨金手指15