扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
最近项目添加了一项调整应用字体大小功能,做完后空闲之余总结一下。本功能仿照微信应用“设置” - “通用” - “字体大小”功能,又有一点区别。据我所知,常见改变全局字体大小方法有两种,我把这两种分为可控和不可控,为什么这么分呢,当然不是为了方便记忆。那么简单说下两者方式的实现过程:
目前累计服务客户上千家,积累了丰富的产品开发及服务经验。以网站设计水平和技术实力,树立企业形象,为客户提供网站设计制作、成都做网站、网站策划、网页设计、网络营销、VI设计、网站改版、漏洞修补等服务。成都创新互联公司始终以务实、诚信为根本,不断创新和提高建站品质,通过对领先技术的掌握、对创意设计的研究、对客户形象的视觉传递、对应用系统的结合,为客户提供更好的一站式互联网解决方案,携手广大客户,共同发展进步。
1、不可控:通过重写Actiivity的getResources()方法更新应用的字体倍数来调整全局字体大小
2、可控:通过setTheme()方法,一开始就初始化设置不同风格的字体样式来更改全局字体大小。
而本文正式采用了第一种方案,主要是中途添加该功能,时间也不充裕,抽取字体大小又太过耗时。
微信字体大小个人猜测使用第二种方案,后者是更好的实现方式也不一定。
xml使用方式:
2、滑动按钮改变当前页面预览字体大小
3、返回时,保存放大倍数并重启应用
4、初始化应用时配置字体放大倍数。
源码地址:
到这里就结束啦。
由于项目需求,需要实现一个类似于微博的可以添加话题的编辑框,实现发布帖子时可以添加话题,并且话题要变色 可选中 可删除等.起初为了快速实现,就在网上找了以下,有人已经实现了此功能,这里给出参考帖子的链接 Android 自定义view-仿新浪微博#话题#插入EditText
不过测试的时候发现有些许bug,并且在华为手机上删除话题不能被选中,于是就基于参考帖子的实现思路,对其中一些东西进行了修改,并适配了华为(原因是通过 KeyCode==KeyEvent.KEYCODE_DEL竟然监听不到华为个别机型的删除键)手机.
1.通过onSelectionChanged()监听光标的位置,来判断光标是否被选中在话题文字内部,如果在话题内部,则将光标定位到话题结束处.
2.添加addTextChangedListener(),监听文字变化.如果是删除文字动作,则遍历TEditText内部的list,判断是否有话题,如果有并且删除的是话题,则对话题进行选中.最后,刷新TEditText的UI展示.
如图1是添加话题的效果
图2是话题被选中的效果
源码和TEditText使用访问我
在Android 7.1(API 25)之后添加的新功能,应用快捷方式。ShortcutManager管理一个应用程序的快捷方式。只要在长按应用图标的情况下,在应用图标上显示的快捷方式,用户可以快速访问任意一个Activity。
现在市场上已经是有很多应用增加了这项功能,例如微博、美团、支付宝、知乎、印象笔记等。
按照惯例,我们先看看效果图:
二、这个Dome主要是通过动态的方式,下面我们来看看动态创建的方式,是通过ShortcutManager实现快捷方式的增加、删除、更新的操作,使用起来很简单。
strings.xml
在进来的页面中,我们通过传值去做一些业务逻辑判断
好了,本篇文章就这样啦,存在总结不到位的地方还望指导,感谢~
最后附上官网地址:
最近怎么老写View,可能写view比较方便,写其它东西还要抽时间整理总结,写View就直接封完写出来就行。
准备国庆放假,无心工作,那就写篇简单实用一点的文章,总不能白白浪费了时间。
有时候ios端会用到条件选择器,好像是那边自带的,而android这边是没有的,但是为了两端统一,没办法,只能我们去迁就他们了(你让一个有自带的去写自定义是基本不可能的事)。
最经典的是我们有选择地址的需求,比如美团这里的:
这个android是原生是没有的,只有能选择日期的。那怎么办?自定义,好像略难,那就用三方的吧。
我找了很多,就觉得这个库是做得比较好,比较完整的,而且也一直有在维护,还是比较推荐,使用起来也比较方便。项目里有很清晰的文档,建议看之前先浏览过文档。
我使用的效果:
我还是顺便把源码也浏览了下。发现这里有3个比较重要的类,这个之后会简单的介绍:
(1)WheelView
(2)条件选择的WheelOptions, 我感觉这个类的封装有点vm的意思
(3)最外层封装的OptionsPickerView
如果只是为了选择地址的话直接用它封装好的就行,但是有时候可能会需要用到其它的布局或需求,那我们就要在它原有的功能上进行扩展,比如说我写的这个时间段的现在,直接用是没有的,需要自己扩展。
而要进行扩展的话,就要先浏览源码看看它内部怎么写的。
可以从调用的地方找到OptionsPickerView类
然后看看OptionsPickerView类内部,你会发现很多方法,但是基本都是builder方法个getset方法,我们可以找到重要的几个方法。
这里做的是为view设置属性。重要的是这里
这里的意思就是把这个View给WheelOptions这个对象,让它来做处理。然后可以看
看布局。
可以看出它里面是写死固定就是3列。其实我不太赞成这样的做法,对于这样的多情况view的封装,我个人还是比较喜欢做动态的。由于这里固定是3列,所以我上图中4列的情况直接使用是实现不了的,所以需要扩展。这里的WheelView就是单列
它这里布局写死了固定3列,那我肯定是没法复用它的这个布局了,所以就只能重写布局。
我只写了LinearLayout,就是要动态去添加WheelView。
原本的OptionsPickerView中
在builder构造时就固定了布局,所以我这不好扩展,不如重写一个OptionsPickerView,当然重写Builder也行,但是我觉得重写OptionsPickerView比较好。而且他原本只有两个类
所以我们需要继承BasePickerView重写一个PickerView,他原本内部的逻辑没问题,我就抄过来用好了。
修改了
(1)修改布局变成我的布局
(2)然后把创建WheelView给加扩展createWheel(optionsPicker, context, total);因为我不想每次都都写Builder这么多参数,我把这个pickerview当成中间成来弄,让子类继承它来做简单的扩展
我们重写个WheelView,因为原本的WheelView是做固定3列的处理,我们需要做成个动态的。
(1)我多添加了个参数total表示要展示多少列
(2)用ListWheelView wvList数组来动态创建添加WheelView
(3)用ListListT items 来装每一列的数据(我这个Wheel只做了不关联情况下的多列,关联情况下我没弄)
(4)showWheelView();
这个方法做展示的规则,默认是平均展示total列,而如果需要做特殊的展示情况,像我上边一样的,就写个类继承这个类重新这个方法重新展示的规则就行,比如我的时间期间选择器。
重写这个方法就能展示出自己需要展示的效果
调用时也很方便。
我讲这篇的目的是为了第一介绍一下这个三方库,还是比较实用的。第二,说下扩展的重要性。第三,放假了实在工作效率低。
安卓仿支付宝银行卡没有重叠功能的。
安卓仿支付宝银行卡不是各手机银行叠加,而是与各家行APP相互补充、互相导流。
在新版APP上,消费者可以绑定和管理各类银行账户,将银联和各大银行的支付工具、支付场景及特色服务集中在一起。
一款仿Photoshop取色器的Android版取色器。采用HSV颜色空间,可手动选取想要的颜色,也可以手动输入具体颜色的16进制编码以获取颜色(如:0xFFFFFF表示白色)。
github地址:
ColorPicker效果图
ColorPicker 项目结构如下图所示:
核心自定义控件: ColorPickerView.java
颜色拾取对话框: ColorPickerDialog.java
颜色转换相关工具: Utils.java
对话框布局文件: dialog_color_picker.xml(纵向布局) + dialog_color_picker.xml(横向布局)
其他文件内容都为项目构建时的默认内容。
在开始了解 ColorPicker 的具体实现之前,需要首先了解一些颜色相关的概念。
而 ColorPicker库 的 核心自定义控件ColorPickerView 的颜色拾取功能就是基于 HSV颜色空间 的。而且HSV和RGB是可以进行转换。不过不必担心转换,因为android.graphics.Color.java提供了转换方法:
下一篇主要讲解ColorPickerView的绘制流程: 仿Photoshop取色器ColorPicker(二)
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流