位置: 编程技术 - 正文

[安卓]手机管家(十一) 外拨电话 & 自定义toast(安卓手机管家怎么关闭)

编辑:rootadmin

推荐整理分享[安卓]手机管家(十一) 外拨电话 & 自定义toast(安卓手机管家怎么关闭),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:安卓手机管家怎么关闭,安卓手机管家删除的照片怎么恢复,安卓手机管家是什么,安卓手机管家是什么,安卓手机管家怎么关闭,安卓手机管家怎么关闭,安卓手机管家怎么关闭,安卓手机管家,内容如对您有帮助,希望把文章链接给更多的朋友!

这里的receiver应该是静态注册吗?没有启动也能监听到,方便后台,但是用户没办法关掉,应该写到监听来电的里面,用户可以选择是否开启,所以应该是动态注册

点击事件写在settingactivity里,settingactivity里注册broadcastreceiver,如果在这注册,就和activity生命周期相同,一旦挂电话,activity销毁掉就不行了,电话来了activity马上就被盖住看不见了,receiver就收不到了

如何解决?应该注册在service里,他的生命周期长,而且他的启动关闭和用户点击与否绑定在一起

showcalllocation里需要一个receiver,写到其中的service里,成为一个内部类,注册到onStartCommand里,随着service而启动

这里无需注册,但是需要权限,没权限可以收到但不能toast

进设置电商后。拨打正确的号码能查到,不正确的会显示一个图标

从这里可以看到,接受广播的时候可能会需要权限

现在用户客制化toast背景,仿照之前的自定义组件来做,settingItem2

之前的checkbox换成imageview就好,注意有的系统资源里的图片没有权限用,拷进来生成不了ID

相应的activity_setting也要改一下

settingactivity里声明找到

然后初始化方法

主要是一个onclicklisten

注意这是新控件,settingItem2里面需要改初始化函数,填充的是item2,复制过来的时候item,原来涉及到checkbox都可以删了现在来实现onclicklisten,并看看onclick能不能显示出来让用户点一下即确认,而不是选好之后再一次点确认,返回的时候就已经选好了,不返回还可以接着选,也就是说点击一次后要记住并且让这个dialog取消,builder内部也是实现的dialog

要通过SharedPreferences记住选了哪个

记住之后出来的时候,就设好了相应的背景,这是回显,在设置description那获取的的应该是保存的数据,并且要转成string,加上Item[]包起来,把对应的位置信息转成名称

但是这么做还不行,由于activity的生命周期,没有进入onresume,所以实际上没有变化

看看这里,其实回到的还是目前的activity,引用的是this,而我们说生命周期的改变,比如resume,是当前activity被别的activity覆盖,这里只是一个dialog控件,最后回到的还是自己的activity。

所以应在dialog响应内加上一个获取用户的选择,

还有一个问题,不能记住位置,每次用户进来设置都被默认设置成了一个背景,而不是显示之前选择保存的,在setSingleChoiceItems的第二个参数应该是从sp里获取

再来设&#;toast背景变化的实现,showcalllocation里,需要从sp里获取

OK~新功能,锦上添花的的,toast的位置

activity_setting里加上layout

settingactivity中初始化完成响应,实现位置的变化应该是可以拖动,而不是让用户设置位置参数

需要一个新的activity,DragToastActivity

注册,让背景好一点,效果透明什么的

一个新的layout,后面需要处理,要一个ID

我们要从settingactivity跳过来

实现拖动效果,要在DragToastActivity里获得这个linerlayout控件,

同时有一个ontouch事件,并且能记住位置,需要listener

在ontouch里识别各种滑动操作,

关键的位置识别的小算法

手滑动的坐标变化可以通过touch去记住

另外设计到UI的代码最好都弄一个trace,debug起来比较快

先是获得起始位置,按下去时的位置;然后是移动后的距离,需要计算一下;最后显示出layout的新的位置,这里要用到toast的方法

l是距离窗体左边的

t是上面

r是小空间右边缘距父控件的左边框的距离

b是底部

移动后layout的新位置

左边和上边方便,就是原位置加上算出来的移动距离

右边距就是新的左边距加上宽度

底部就是新的上边距加上高度

注意当移动好,下一次再移动,他的起始位置应该是上一次最后的位置

要注意这个控件最后的返回&#;

move事件必须在down事件发生后才能开始,也就是说用户按下去,没有把手拿开,才能一直move

[安卓]手机管家(十一) 外拨电话 & 自定义toast(安卓手机管家怎么关闭)

如果down后什么事也没做,没有move,那么返回一个false,这个事件会给别的控件报move

所以这里返回&#;应该是true,详情请看另一篇转载而来的博文<[安卓]Android onTouch事件解析>

回显,记住每次设置后停留的位置,保存起来

每次启动oncreate时显示上次位置

到这里走一个,发现trace的位置是对的,但进去再退出再进去的时候,位置还是在左上角,而没有保留上次离开时的位置

在oncreate里看看是什么情况

发现这个打印出来的right和buttom相等,说明后面没能获取他们的高度和宽度,故而没能实现回显

这与控件的初始化步骤有关,oncreate时要对控件执行下列步骤,而刚刚的代码里只是直接去获取长度宽度,渲染的步骤还没来得及进行,故而获取不到

控件的初始化步骤:渲染

onMesure

onlayout

ondraw

咋toast的源码里,要初始化一些参数

系统会看我们设没设,我们设置了系统就会以我们这个为准

所以一开始我们就设置一个参数,系统就会调用他,显示我们要的位置

关于这个参数,有几点要注意:

1.应该看这个控件的父控件是在什么布局里,我们的这个"setContentView(R.layout.activity_dragtoast);",通过这个activity看到他的布局是在一个LinearLayout里,所以上面必须是指定LinearLayout下的parameter,很多东西都有parameter

2.此处去设置该控件的参数的时候,应该将该控件原本的参数拿出来做修改,或新增一些参数,而不是 new一个新的parameter

3.另外在强转类型的时候,由于导包错误一直无法强转,下面这个包不对

还有两个问题:

1.小控件在实现的时候位置会有一个上下的偏移

2.当控件滑到边缘时超出边线,就变形了(可以判断下,当超出时矫正下,不过这里用限制用户的方法),这里要获取当前的宽度和高度,获取高度时要注意原来有个标题栏的高度要去掉

现在让这个控件位置信息的改变能够在来电时体现出来

在ShowCallLocation获取存储起来的信息

现在实现双击居中功能

检测用户的双击事件

保留第一次点击的时间,当第二次与第一次间隔小于ms时视为有效的双击

另外,由于上面的touch设置了一个返回true,这里再加一个click,会发现操作无效,要改为false

这里还有一个bug,点了第一次后,隔了一会双击了,这个时候操作无效

第一次点击记录一个事件保存起来,隔了一会双击,也就是第二次第三次

第二次的时候会判断下,第一次不为0,所以记录了第二次的时间,但是这两次的间隔大于,又把第一次置0了,那么第三次的时候获取了个时间,OK~什么也没做

两种方法,可以做一个判断,如果是大于ms,则把第2次&#;给第1次

还有用线程的方法,如果大于ms,则把第一次的置为0

数字图像处理软件(一) 本人大三学生一枚,自学安卓有三四个月了,去公司实习两个月了,在工作上欠缺一些东西,所以决定开始写博客与各位大牛分享交流学习,写的不好

Android学习【按钮监听】 xml文件Buttonandroid:id="@+id/star_button1"....../MainActivity文件写法一classMyListenerimplementsOnClickListener{@OverridepublicvoidonClick(Viewv){//2.定义成员内部类实现事件监听响

[安卓]Android onTouch事件解析 原文地址:

标签: 安卓手机管家怎么关闭

本文链接地址:https://www.jiuchutong.com/biancheng/383171.html 转载请保留说明!

上一篇:文件读写 file.mkdirs()为啥总是返回false(文件读写过程中,程序将直接与磁盘文件进行数据交换)

下一篇:数字图像处理软件(一)(数字图像处理软件idl和matlab有什么异同点)

  • 新办企业购置设备怎么抵税
  • 交强险必须交车船使用税吗?交多少钱?
  • 缴纳房产税怎么记账
  • 城建税和教育费附加怎么写分录
  • 每月工资不一样怎么交党费
  • 税盘没有及时清卡
  • 公司公积金缴纳比例一般来说是多少?
  • 5个点的税率是多少
  • 一揽子交易定义
  • 法人变更注册资金降低以前的债务怎么处理
  • 会计凭证借方和贷方怎么填
  • 小规模纳税人企业所得税起征点
  • 应付借款利息分录
  • 收到货款做账
  • 资产减值准备怎么转回
  • 房产公司收到的增值税
  • 公司车辆出售给个人怎么做账
  • 给客户赔偿如何入账
  • 固定资产月底怎么处理
  • 财务申报工资和实际发工资
  • 本月无销项只有进项申报表如何填写
  • 借入款项的来源包括哪三个
  • 为什么要开增值税
  • 企业经营收入达到多少
  • 保险代理人佣金的规定
  • 小规模计提税金及附加怎么算
  • qbupdate.exe - qbupdate是什么进程 有什么作用
  • ubuntu18.04 u盘安装
  • win10兼容性在哪里调整
  • 销售购物卡如何交税
  • 应收账款周转天数减少说明什么
  • lmgrd.exe是什么进程
  • 总资产周转次数与总资产周转率
  • 爱德华多·阿涅利
  • 封装和调用
  • 服务业的增值税
  • 增值税一般纳税人登记管理办法
  • struts2漏洞检测工具下载
  • 已失效是什么意思
  • 商业银行贷款的资本充足率
  • 预收账款属于什么科目
  • 金税盘服务费可以跨年抵扣
  • 原始凭证的种类划分
  • sqlserver数据库事物日志已满
  • 哪些情况需要开具无违法犯罪证明
  • 小规模纳税人是季度报税吗
  • 收回以前年度的应收账款较多能说明什么呢?
  • 电费应收和实收怎么算
  • 订单式生产的企业有哪些
  • 加权平均净资产收益率
  • 应收账款结算方式有几种
  • 以前年度损益调整怎么做账
  • 发票怎么看是普票还是专票
  • 企业利润率如何计算公式
  • 季度申报表弥补以前年度亏损
  • 会计软件包括
  • sqlserver 中ntext字段的批量替换(updatetext的用法)
  • xp系统打开软件慢怎么解决
  • 应用程序发生异常如何解决
  • 提高系统能力
  • centos查看文件目录
  • virtualbox虚拟机菜单找不到了
  • win8磁盘占用率高怎么处理
  • win7系统64位安装打印机的方法
  • cocos creator 动画制作
  • python语言怎么用
  • javascript中判断数据类型的几种方法
  • 介绍一个简单的实验
  • jquery中判断某个类是否存在的方法
  • Android-SQLite商业化数据库操作
  • 一个治疗Unity的Prefab强迫症患者的小招(Prefab变成红色的问题)
  • jquery添加文字
  • 面向对象的基础知识
  • 税务局分类分级
  • 地税局契税发票编号查询
  • 增值税专票红冲退税
  • 注册税务师考试时间2024
  • 国税手工发票
  • 监理费合同按什么计算
  • 杭州 国税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设