当前位置: 首页 > 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.pierceye.com/news/568103/

相关文章:

  • dedecms新网站 上传到万网的空间浦口区网站建站公司
  • 龙岗在线网站建设西安房产信息网
  • 如何建立公司企业网站大朗做网站的
  • 怎么做整蛊网站wordpress系统的特点
  • php网站开发视频教程浙江建设局网站
  • 温州seo顾问温州网站优化排名推广
  • qq空间怎么做网站wordpress 分类名
  • 外贸国际网站推广重庆律师网站
  • 唐山建设信息网站wordpress 首页显示产品
  • 建设网站的公司哪个济南兴田德润怎么联系重庆短视频培训
  • 营销型网站的建设方案企业网页设计作品分析
  • 网站建设的费用报价做网站销售这几天你有什么想法
  • 做箱包关注哪个网站类似建站之星网站
  • 口碑好网站建设报价wordpress 微博侧边栏
  • 长沙 建站优化花都区手机版网站建设
  • 网站自动弹窗代码国外哪些网站可以兼职做任务
  • 怎么查看网站服务器位置wordpress 数据表结构
  • 国外做家纺的网站有些网站开发人员工具无反应
  • 泉州做网站个人网站备案号可以做企业网站吗
  • 苏州姑苏区专业做网站国外购物网站建设
  • 蒙牛官网网站怎么做的爱站网备案查询
  • 天津市建设工程监理公司网站电商seo引流
  • 导航网站链接怎么做wordpress教育相关的模板
  • 招聘网站建设人员条件wordpress有后端吗
  • 3g免费网站制作做美图 网站
  • 网站建设有哪些知识点图片制作软件哪个好用
  • 百度站长工具使用方法石岩医院网站建设
  • 网站一直百度上搜不到是怎么回事宝安大型商城网站建设
  • 本地营销型网站建设学校网站制作方案
  • 百度安装app下载免费王通seo赚钱培训