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

设计公司网站 唐山b站推广费用一般多少

设计公司网站 唐山,b站推广费用一般多少,公司网站制作制作,好吃易做的家常菜网站为什么80%的码农都做不了架构师?>>> 来说说今天的战绩吧,说是战绩,是因为今天写代码时效率挺高,可能是因为集中精力吧,所以,如果要写好程序的话,最好满足以下两点: 1、…

为什么80%的码农都做不了架构师?>>>   hot3.png

   来说说今天的战绩吧,说是战绩,是因为今天写代码时效率挺高,可能是因为集中精力吧,所以,如果要写好程序的话,最好满足以下两点:
 1、写程序前想好画好步骤图;
 2、集中精力,别一心二用;
 
   然后来看看今天要说的,就是下面这个小功能,能够快速增加减小文本框里的值,这里看似简单,但在过程中也遇到了几个问题,下面就一一来说。

 
 1、最主要的问题:长按事件并不是我们想要的
 

findViewById(R.id.test).setOnLongClickListener(new OnLongClickListener() {@Overridepublic boolean onLongClick(View v) {Log.e("", "onLongClick");return true;}});

  
   长按着test按钮,你会发现,控制台并不会一直打印出onLongClick,这也没什么奇怪的OnLongClickListener只是长按后出发的一个事件,这个事件一直到松开手,在按下,长按,松手这个
 过程只会触发OnLongClickListener一次,你想啊,用过智能机的都知道,长按文件夹移动,文件夹会跟着你跑,如果会触发很多次,那不是会弹出很多个文件夹来吗。。。
 
   所以,要实现长按让它连续加减值,OnLongClickListener事件对我们是没用的,在android有个onTouch(View v, MotionEvent event)事件,它有两个参数View v, MotionEvent event,相信大家都知道这是什么意思,所以。。。。  有想法了没,哈哈
 
   在这里贴上主要代码:
 
 
//Touch事件class CompentOnTouch implements OnTouchListener {@Overridepublic boolean onTouch(View v, MotionEvent event) {switch (v.getId()) {//这是btnMius下的一个层,为了增强易点击性case R.id.linearBtnMius:onTouchChange("mius", event.getAction());break;//这里也写,是为了增强易点击性case R.id.btnMius:onTouchChange("mius", event.getAction());break;case R.id.linearBtnPlus:onTouchChange("plus", event.getAction());break;case R.id.btnPlus:onTouchChange("plus", event.getAction());break;}return true;}}private void onTouchChange(String methodName, int eventAction) {//按下松开分别对应启动停止减线程方法if ("mius".equals(methodName)) {if (eventAction == MotionEvent.ACTION_DOWN) {miusThread = new MiusThread();isOnLongClick = true;miusThread.start();} else if (eventAction == MotionEvent.ACTION_UP) {if (miusThread != null) {isOnLongClick = false;}} else if (eventAction == MotionEvent.ACTION_MOVE) {if (miusThread != null) {isOnLongClick = true;}}}//按下松开分别对应启动停止加线程方法else if ("plus".equals(methodName)) {if (eventAction == MotionEvent.ACTION_DOWN) {plusThread = new PlusThread();isOnLongClick = true;plusThread.start();} else if (eventAction == MotionEvent.ACTION_UP) {if (plusThread != null) {isOnLongClick = false;}} else if (eventAction == MotionEvent.ACTION_MOVE) {if (plusThread != null) {isOnLongClick = true;}}}}//减操作class MiusThread extends Thread {@Overridepublic void run() {while (isOnLongClick) {try {Thread.sleep(200);myHandler.sendEmptyMessage(1);} catch (InterruptedException e) {e.printStackTrace();}super.run();}}}//加操作class PlusThread extends Thread {@Overridepublic void run() {while (isOnLongClick) {try {Thread.sleep(200);myHandler.sendEmptyMessage(2);} catch (InterruptedException e) {e.printStackTrace();}super.run();}}}//更新文本框的值Handler myHandler = new Handler() {public void handleMessage(Message msg) {switch (msg.what) {case 1:if (miusEnable) {buttonHolder.input.setText((new BigDecimal(buttonHolder.input.getText().toString()).subtract(new BigDecimal("0.1")))+ "");}break;case 2:if (plusEnable) {buttonHolder.input.setText((new BigDecimal(buttonHolder.input.getText().toString()).add(new BigDecimal("0.1")))+ "");}break;}setBtnEnable();};};//超出最大最小值范围按钮的可能与不可用private void setBtnEnable() {if (new BigDecimal(buttonHolder.input.getText().toString()).compareTo(new BigDecimal(minvalue + "")) > 0) {miusEnable = true;buttonHolder.btnMius.setBackgroundResource(R.drawable.nurse_symp_mius);} else {miusEnable = false;buttonHolder.btnMius.setBackgroundResource(R.drawable.nurse_symp_mius_max);}if (new BigDecimal(buttonHolder.input.getText().toString()).compareTo(new BigDecimal(maxvalue + "")) < 0) {plusEnable = true;buttonHolder.btnPlus.setBackgroundResource(R.drawable.nurse_symp_plus);} else {plusEnable = false;buttonHolder.btnPlus.setBackgroundResource(R.drawable.nurse_symp_plus_max);}}


 
   看完上面代码你一定会觉得,怎么没有单击事件,我单击也可以增加减小文本框的值嘛,哈哈,单击事件已经合并在Touch事件里啦,单击也是要按下弹起的不是么,至此最大的问题就解决了,这个还有个小问题,因为文本框里的值都是小数,如果你直接35.5-0.1,35.5-0.2,35.5-0.3  ... ...,你会发现会得到类似35.29999999904这些类似的情况,这里大概是因为计算机进行二进制分数运算时,造成了不够精度的bug,这里,我们可以使用BigDecimal,它是java专门用于解决大小数(大分数)的一个类,它支持任何精度的定点数,因此,我们的加减法可以写成:
 

buttonHolder.input.setText((new BigDecimal(buttonHolder.input.getText().toString()).subtract(new BigDecimal("0.1")))+ "");buttonHolder.input.setText((new BigDecimal(buttonHolder.input.getText().toString()).add(new BigDecimal("0.1")))+ "");


  我的博客的其他文章列表
  http://my.oschina.net/helu

转载于:https://my.oschina.net/helu/blog/141731

http://www.lbrq.cn/news/2737945.html

相关文章:

  • 网站ip做网站西安网站搭建
  • 网站建设盈利企业网站怎么注册官网
  • 美国外贸网站建设百度开户要多少钱
  • 网站建设中html52022社会热点事件及看法
  • 互联网网站建设公司快速收录网
  • 如何把自己做的网站发布到网上千锋教育培训怎么样
  • 河南网站建设公司哪个好呀win10优化大师有用吗
  • 怎么做网站打赏百度如何搜索关键词
  • 一个人可以完成网站建设吗杭州百度优化
  • 专注于上海seo做网站建设seo免费
  • 网站是怎么做的怎么做市场营销和推广
  • 域名查询网站建站平台
  • 充值网站建设seo发外链工具
  • 有什么网站可以做商品展示的吗百度关键词排名十大排名
  • 手机wap网站建设企业搜索引擎优化
  • 网站优化怎么做外链做网站需要准备什么
  • 茌平微网站建设北京外包seo公司
  • 怎么知道网站哪家公司做的关键词排名哪里查
  • 广告设计就业前景东莞搜索网络优化
  • 做视频网站推广交易链接
  • 吉安市网站制作推广普通话手抄报文字内容
  • wordpress附件下载网站整站优化推广方案
  • html 网站 模板中文seo基础入门视频教程
  • 青海高端网站建设价格百度搜索广告推广
  • 禁止wordpress自动更新优化关键词排名软件
  • 厦门做网站找哪家公司sem广告投放是做什么的
  • 出入库管理软件 免费seo流量优化
  • 如何搭建一个企业子账号网站独立站seo怎么做
  • 寻乌建设局网站邀请推广app
  • 网站怎么做才吸引人百度网站网址是多少
  • Python语言一键整理xhs评论 基于github的开源项目 MediaCrawler
  • pdf合并代码
  • Dify实战应用指南(上传需求稿生成测试用例)
  • AI热点周报(8.10~8.16):AI界“冰火两重天“,GPT-5陷入热议,DeepSeek R2模型训练受阻?
  • 【C++】动态内存管理
  • Ubuntu2204server系统安装后的初始化配置报错