开发小日记
锟钢
真理必须追究
展开
-
微信小程序开发短信验证码输入框
如图所示的验证码输入框。现在需要实现逻辑,任何位置输入后自动跳到下一个最近的空的输入框,任何位置删除后自动跳到上一个最近的有值的输入框,代码逻辑如下。原创 2020-10-29 17:31:38 · 3453 阅读 · 5 评论 -
Android悬浮窗适配,无需权限适配全机型,最简单最高性能的实现全局显示圆形悬浮
github:https://github.com/feiyuu/FloatingView适配方式就是不用悬浮窗,弹框之类的,在每个页面顶层添加布局。缺点是不能退出app后在手机桌面显示。想做桌面显示也行,处理下返回不退出app而是进后台,开透明界面添加这个悬浮布局就行。支持加载圆形图片,gif动图,圆形阴影,全局显示,记录位置,吸附...原创 2020-01-15 17:31:34 · 6842 阅读 · 17 评论 -
android安卓自动计算月份,每月更新的榜单,月份列表更新
问题:现有一个排行榜的功能,需要每月底结算当月数据进行排名。同时可查看历史月份的排行数据,需要有一个每期的时间列表。给定功能上线时间为起始时间,上一个月为结束时间,计算之前的月份列表。currentServiceTime:是接口返回的服务器时间,没用手机系统时间防止用户修改时间导致的错误min.setTime(sdf.parse("2019年06月"));:即设置的起始时间。 pu...原创 2020-01-15 14:08:40 · 275 阅读 · 0 评论 -
静态代理,动态代理,AOP,jdk代理和cglib代理
1.代理模式。代理模式:为其他对象提供一种代理以控制对这个对象的访问。这段话比较官方,但我更倾向于用自己的语言理解:比如A对象要做一件事情,在没有代理前,自己来做,在对A代理后,由A的代理类B来做。代理其实是在原实例前后加了一层处理,这也是AOP的初级轮廓。 2.静态代理原理及实践。静态代理模式:静态代理说白了就是在程序运行前就已经存在代理类的字节码文件,代理类和原始类的关系在运行...转载 2019-02-19 09:55:10 · 199 阅读 · 0 评论 -
安卓倒计时实现方式:Chronometer,timer,timertask
Android时分秒计时器的两种实现方法 可能我们在开发中会时常用到计时器这玩意儿,比如在录像的时候,我们可能需要在右上角显示一个计时器。这个东西其实实现起来非常简单。只需要用一个控件Chronometer,是的,就这么简单,我都不好意思讲述一下了。<Chronometerandroid:layout_width="wrap_content"android:layout...转载 2019-01-23 10:53:20 · 399 阅读 · 0 评论 -
listview,recycleview多种条目类型,尽可能复用条目
条目1:if (convertView == null || !convertView.getTag(R.id.tag_list_item_type).toString().equals("1")){ convertView = LayoutInflater.from(mContext).inflate(R.layout.item_advert_im...原创 2019-01-22 09:43:03 · 421 阅读 · 0 评论 -
音视频开发基础,MediaPlayer+SurfaceView,exoplayer,videoview,ijkplayer
最详细的基础知识视频编码的主要作用是将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降低视频的数据量。如果视频不经过压缩编码的话,体积通常是非常大的,一部电影可能就要上百G的空间。视频编码是视音频技术中最重要的技术之一。视频码流的数据量占了视音频总数据量的绝大部分。高效率的视频编码在同等的码率下,可以获得更高的视频质量。基础知识详见:https://blog.csdn.ne...原创 2019-01-07 13:56:21 · 1016 阅读 · 0 评论 -
Activity之taskAffinity属性、allowTaskReparenting属性和Android退出整个应用解决方案
---------------------作者:mo_weifeng来源:CSDN原文:https://blog.csdn.net/iromkoear/article/details/70198605版权声明:本文为博主原创文章,转载请附上博文链接!...转载 2019-03-10 15:56:34 · 156 阅读 · 0 评论 -
性能优化—Android 9.0中的新功能 - PrecomputedText,优化大量文字显示问题
Android 9.0中的新功能 - PrecomputedTextPrecomputedText如字面意义一样,是用来预先计算文本的。它的诞生也是因为计算文本是一个耗时操作,它需要根据字号、字体、样式、换行等去计算,并且这个计算时间随着文字数量的增加而增加。如果这时显示的列表中恰好是这种多行的文字,那么滑动起来岂不是会掉帧,影响着用户体验。比如微博这类的产品,列表就非常的复杂。其实...转载 2019-04-19 09:18:46 · 1378 阅读 · 0 评论 -
ViewPager2
ViewPager懒加载请注意新版的Fragment中(Version 1.1.0-alpha07),该方法setUserVisibleHint已经过时,由FragmentTransactionsetMaxLifecycle替代,新版本的FragmentPagerAdapter可以设置直接调用生命周期,这代表ViewPager+Fragment懒加载有更好的解决方案,请注意Adapter小结...转载 2019-05-31 10:32:06 · 1604 阅读 · 0 评论 -
Android获取文件路径方式以及权限罗列
在了解存储路径之前,先来看看Android QQ的文件管理界面,了解一下QQ的数据文件路径来源,到底是来源于什么地方?QQ 文件截图手Q文件管理对应存储目录我的文件:是指放在QQ指定目录下的文件:/tencent/QQfile_recv/(顺便说一下微信的存储目录:/tencent/MicroMsg/Download/)手机内存:其实是内部存储的根目录,在ES文件浏览器对...转载 2019-06-19 09:54:04 · 3714 阅读 · 0 评论 -
View测量流程
MeasureSpec在开始进行理解View的测量流程之前,需要先理解MeasureSpec。MeasureSpec代表的是32位的int值,它的高2位是SpecMode(也是一个int),低30位是SpecSize(也是一个int),SpecMode是测量模式,SpecSize是测量大小。MeasureSpec相当于是两者的结合。系统封装了如何从MeasureSpe...转载 2019-06-20 11:01:37 · 161 阅读 · 0 评论 -
weex解决scrollView嵌套webview高度问题,安卓自定义weex组件webview,
weex页面有scrollView嵌套web的页面,如果不给web指定高度就显示不出来。RN也有这个问题,查了下全部是通过原生开启一个不显示的webview提前加载一遍再将高度传给weex来解决,这种方式需要加载俩边资源拖慢了显示速度,而且浪费资源。研究了下新方式,只加载一遍,用原生自定义的webview在加载完后在原生端修改高度。同时使用自定义的webivew解决了有些特殊机型无法显示(...原创 2019-07-09 18:06:30 · 915 阅读 · 0 评论 -
ConstraintLayout全面了解
1. 前言最近中毒很深,经常逛掘金,看到很多优秀的文章,感谢掘金。同时也看到很多标题,看看XXXX,一篇就够了。技术一直在不停的更新迭代,看一篇永远是不够的,建议再看一遍官网的,可以看到被作者过滤掉的信息或者最新的更新。这就是我为什么会在文末放官网链接的原因,如果有的话。2. ConstraintLayoutConstraintLayout作为一款可以灵活调整view位置和大小的Vie...转载 2019-07-18 09:47:54 · 303 阅读 · 0 评论 -
Android 图片资源显示效果研究
Android支持的图片资源格式及其特性Android系统支持常见的图片资源格式,如jpg、png、gif等。这几种主要图片格式的特点如下:1.Gif格式图片的特点透明性:Gif是一种布尔透明类型,既它可以是全透明,也可以是全不透明,但是它并没有半透明(alpha 透明)。动画:Gif这种格式支持动画。无损耗性:Gif是一种无损耗的图像格式,这也意味着你可以对gif图片...转载 2019-08-01 10:21:17 · 220 阅读 · 0 评论 -
Snackbar和Toast的花式使用,系统Toast的存在的问题
系统toast存在的问题:https://mp.weixin.qq.com/s/HQoAa5h-u8q32iWhs7dz_w Foreword 这一篇是建立在我赌5毛你没见过这样的SpannableString基础上的,所以不会使用SpanUtils的小伙伴快去看看吧。这一篇我会写得详尽一些,毕竟是为了一劳永逸,让大家也尽可能了解我是怎么做到的,这里,我会用图文结合的方式来...转载 2018-12-10 15:57:50 · 226 阅读 · 0 评论 -
Android P全面屏适配
Android P预览版增加了很多亮点新特性,其中最接地气、最直观的改变当属适配了类似于华为P20的顶部凹槽屏幕设计这一项,俗称刘海屏。在开发者模式中,Android P系统将调整通知栏的设计来适配此种屏幕,新的APIs也将允许开发者决定通知消息的展示形式。随着各大手机厂商挤入“刘海屏”手机发布的潮流,Android P版本的此特性,能够让各大应用厂商充分利用独特的屏幕来进行应用设计。那么如...转载 2018-12-10 15:55:17 · 759 阅读 · 0 评论 -
Android仿ios底部弹框,支持传入list集合,任意配置个数
不说废话,一看代码谁都懂。 public class BottomDialog { private Context context; private Dialog dialog; private TextView txt_title; private TextView txt_cancel; private LinearLayout lLayo...原创 2018-08-09 09:12:09 · 1035 阅读 · 0 评论 -
事件分发理解:在整个界面的触摸事件中分别处理某些view
软键盘:1,showSoftInput(view, InputMethodManager.SHOW_FORCED);可通过第二个参数flags设置SHOW_IMPLICIT效果就是触摸edittext外任何区域就隐藏软键盘设置flags为SHOW_FORCED触摸任何区域不隐藏 2,在重写dispatchTouchEvent,在down事件中隐藏软键盘。事件分发大家应该知道,是...原创 2018-08-09 08:56:24 · 205 阅读 · 0 评论 -
android,textView文字与drawableLeft图片无法对齐
textView文字相对于控件有内边距,导致看起来和本来设置对齐的图片不是对齐的,这时可用android:includeFontPadding="false"属性去掉textview内边距,使他们对齐。去掉textview或者button的空白: android:padding="0dp"...原创 2018-06-28 15:47:31 · 4707 阅读 · 0 评论 -
性能优化笔记
三方面:Android的渲染机制,内存与GC,电量优化。渲染优化:UI达到60fps需要再16ms内完成绘制工具:打开手机里的开发者选项,选择Profile GPU Rendering,选中On screen as bars的选项。1,层叠组件来实现复杂的UI效果,可能造成过度绘制,canvas.clipRect指定绘制区域2,减少布局嵌套,推荐使用constraintLayout,约束集 Lin...原创 2018-06-28 15:36:46 · 229 阅读 · 1 评论 -
直播-视频流无缝切换
方式一:1、通常一种切换码流方式,如系统播放器切换码流,先Stop,再Create Player,再onPrepare,再Start方式二:2、实际上还有一种无缝切换码流,如果是单实例播放器,点击切换码流时,不销毁播放器器,只是暂停解码。开始请求新的url中数据,比如下载了有1-2片TS流后,重新送给解码器,重新启动解码,然后渲染输出。达到无缝输出的效果。方式三:3、如果是多实例播放器,总的实现思...转载 2018-07-01 09:39:52 · 5368 阅读 · 0 评论 -
插件化以及组件化笔记整理
组件化:就是将一个app分成多个module,每个module都是一个组件(也可以是一个基础库供组件进行依赖),开发中可以单独调试组件,组件间不需要相互依赖,但可以相互调用,最终发布时所有的组件以lib的形式被主工程依赖并打包成apk业务隔离,方便开发和调试插件化:将整个app拆分成多个模块,分宿主和多个插件,每个模块都是一个apk(组件化,每个模块都是一个lib),最终打包的时候将宿主apk和插...原创 2018-05-18 13:55:06 · 363 阅读 · 0 评论 -
Android自定义控件
Canvas画布平移: * 参数1: 向X轴方向移动100距离 * 参数2: 向Y轴方向移动50距离 */ canvas.translate(100, 50); 缩放:/** * 在X轴方向放大为原来2倍,Y轴方向方大为原来的4倍 * 参数1: X轴的放大倍数 * 参数2: Y轴的放大倍数 */canvas.scale(2, 4);/** * 在X轴方向放大为原来2倍,Y轴方向方...转载 2018-04-21 23:56:43 · 122 阅读 · 0 评论 -
自定义view,绘制阶段进度progressBar,阶段与图片和文字对齐
没用seekbar或者progressbar原生控件,通过绘制实现。只讲下有用的思想,无关属性不解释,也不用看。主要看onDraw方法代码:绘制背景线,canvas.drawRect线绘制了第一条线,因为需要渐变,可以看到canvas.drawPath是从第一条线之后开始算left的,ringht包含整个进度条的长度。 // 背景线 if (mNodeInd...原创 2018-08-25 18:11:48 · 451 阅读 · 0 评论 -
Android GradientDrawable(shape标签定义) 静态使用和动态使用(圆角,渐变实现)
Android GradientDrawable(shape标签定义) 静态使用和动态使用(圆角,渐变实现)Android GradientDrawable使用优势: 1. 快速实现一些基本图形(线,矩形,圆,椭圆,圆环) 2. 快速实现一些圆角,渐变,阴影等效果 3. 代替图片设置为View的背景 4. 可以减少apk大小,提升用户下载意愿 5. 还可以减少内存...转载 2018-12-08 15:12:50 · 376 阅读 · 2 评论 -
recycleview的强大用法
1SortedList 顾名思义就是排序列表,它适用于列表有序且不重复的场景。并且SortedList会帮助你比较数据的差异,定向刷新数据。而不是简单粗暴的notifyDataSetChanged()。 我想到了一个场景,在选择城市页面,我们都需要根据拼音首字母来排序。我们来使用SortedList来实现一下。 City对象: public class Cit...转载 2018-12-08 09:23:41 · 273 阅读 · 0 评论 -
给布局,控件添加阴影,包裹它设置阴影颜色,长度,偏移即可
public class ShadowLayout extends FrameLayout { private int mShadowColor; private float mShadowRadius; private float mCornerRadius; private float mDx; private float mDy; pri...转载 2018-10-09 10:30:37 · 724 阅读 · 0 评论 -
阶段进度条
public class PhaseProgressView extends View { // 节点连线宽度 private int mLineWidth; // 节点个数 private int mNodeNum; // 选中节点位置 private int mNodeIndex; private Paint mNormalPa...原创 2018-10-09 10:28:37 · 471 阅读 · 0 评论 -
保存对象工具类
public class ObjectSaveUtils { /** * @param context * @param name * @param obj all objs must implements {@code Serializable} */ public static void saveObject(Context context, Stri...原创 2018-10-09 10:26:43 · 157 阅读 · 0 评论 -
单例保存大体积的数据到内存中
public class DataHolder { Map<String, WeakReference<Object>> data = new HashMap<>(); private static final DataHolder holder = new DataHolder(); public static DataHold...原创 2018-10-09 10:26:01 · 396 阅读 · 0 评论 -
ApplicationContext和Context
1. 当使用 LayoutInflater 从 xml 文件中 inflate 布局时,调用的是 View(Context,AttributeSet) 构造函数,使用的 Context 实例跟 LayoutInflater 创建时使用的 Context 一样,并且 LayoutInflater 会缓存在 Context 实例中,即相同的 Context 实例多次调用会获取一样的 LayoutInf...原创 2018-09-04 16:10:09 · 510 阅读 · 0 评论 -
service
http://www.cnblogs.com/lwbqqyumidi/p/4181185.html onStartCommand(Intent intent, int flags, int startId)方法。 START_NOT_STICKY:当Service因为内存不足而被系统kill后,接下来未来的某个时间内,即使系统内存足够可用,系统也不会尝试重新创建此Service。除...原创 2018-09-04 16:05:36 · 142 阅读 · 0 评论 -
伪顶部悬浮,最简单的方式scrollview嵌套recycleView,悬浮+翻页效果
仅需自定义scrollView即可实现。@Overrideprotected void onScrollChanged(int l, int t, int oldl, int oldt) { super.onScrollChanged(l, t, oldl, oldt); mT = t; Log.i(TAG, "onScrollChanged: t:"原创 2018-01-11 17:02:30 · 1063 阅读 · 0 评论