自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 资源 (5)
  • 收藏
  • 关注

原创 CameraX实现自定义带参考线相机

相机在开发中是经常会使用的,普通的拍照基本调用原相机都可以满足。但是在拍照过程中进行一些提醒或者要求调用样式统一的相机就需要我们自己去实现一个相机功能了。近期遇到一个需要自定义相机的需求,在这里在做一个简单的总结,有错误之处欢迎指出。最终实现效果如下图(图片有剪裁):横屏样式:主要功能如下:带参考线 手机倾斜小于30度文案提示 大于30度图片+文案提示 闪光灯 点击屏幕可聚焦 屏幕可旋转相机重点代码:publi...

2021-07-02 19:10:56 703

原创 生成mp3lame.so详解

前情:近期PCM转MP3出现了线上crash,定位到找不到so库里的native方法,目前解决方式是重新生成so替换老的so库。本人之前几乎是无JN开发经验,下面是我完成替换工作的全部流程,有错误的地方欢迎指正。概念:PCM格式:声音从模拟信号转化为数字信号的技术,经过采样、量化、编码三个过程将模拟信号数字化MP3格式:是一个数据压缩格式。它舍弃脉冲编码调制(PCM)音频数据中,对人类听觉不重要的数据(类似于JPEG,是一个有损图像的压缩格式),从而达到了压缩成小得多的文件大小。正文:下

2021-02-24 15:56:56 724

原创 算法-不用加减乘除做加法(java)

题目描述:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。暴力解法:思路:无法使用四则运算符,但是java中有++,--运算符可以使用,找出较小值作为循环次数count,找出较大值作为操作(++,--)对象num,如果count大于0则对num做++,反则--。代码如下: public static int Add(int num1, int num2) { int count = (num1 > num2) ? num2 : num1;

2021-02-22 17:37:24 407

原创 Android BitmapShader和createCircularReveal结合仿放大镜动画

上篇动画实现方式对比说过要将实现的动画效果在本篇叙述,说着说着这就来总结一下了。先看下图效果:直接切入正题,本人的实现方式是将其分为两步去实现:第一步:实现人脸的收缩成为一个圆第二部:实现圆圈的转动看到相应图片部分,类似放大镜效果先上布局:<?xml version="1.0" encoding="utf-8"?><android.support.co...

2019-12-23 17:22:59 302

原创 Android 动画实现方式以及对比(GIF和WebP,Lottie和SVGA,原生动画)

最近需求涉及到较为复杂的动画实现,虽然后来完成与今天所要讲的毫无关系(实现方式会在下篇讲)。但是也是由此萌生了我对市面上较为流行动画的实现方式产生了兴趣,到底是谁好用呢?是谁更优秀呢?GIF和WebPGIF:图像互换格式(GIF,Graphics Interchange Format)是一种位图图形文件格式,以8位色(即256种颜色)重现真彩色的图像。它实际上是一种压缩文档,采用LZW压缩...

2019-12-17 11:34:04 6065

原创 Python3 引用HTMLTestRunner生成测试报告

Appium环境搭建以及运行测试用例的工具都在前两篇文章中介绍过了链接如下,今天就简单学习一下如何在跑完测试用例之后生成一张简单的测试报告。Appium环境搭建:https://blog.csdn.net/CCstar1/article/details/101543977Appium+VSCode环境搭建:https://blog.csdn.net/CCstar1/article/det...

2019-10-12 16:28:27 1173

原创 Android Appium+VSCode环境搭建

上篇文章Appium环境搭建:https://blog.csdn.net/CCstar1/article/details/101543977上篇文章简单介绍了Appium基本的环境搭建,但是也仅仅只能到拿到简单的元素id以及手动点击运行,这里离自动化测试就差一步了,这篇文章我会简单介绍如何使Appium和VSCode链接起来并写一个简单的测试用例,将差的一步完成。一.下载安装VSCode...

2019-10-11 15:23:40 1563

原创 Android 搭建Appium自动化测试环境

昨天简单搭建了Appium自动化测试环境,目前也是入门学习阶段,这里简单记录搭建过程,方便今后继续学习。(一)搭建环境:目前开发使用Mac系统为:10.13.6 ;python使用Mac自带,版本为:2.7;电脑已经配置Android开发环境,JAVA JDK已经Android SDK均可用,不用再次下载安装。之前未配置ANDROID_HOME,此次添加。完整配置流程如下:1.JDK安...

2019-09-29 12:44:55 1607

原创 Android快速集成抖音分享

现在大火的app,抖音肯定有姓名。19年初抖音就开始支持Android应用接入抖音分享以及登录了,目前市场上我知道的轻颜相机已经集成分享。最近有一个新需求就是集成抖音分享,集成较为简单,但是也由于疏忽遇到了小的问题。这里整体梳理集成流程供大家参考。抖音分享开发者文档:http://open.douyin.com/platform/doc/m-1-3-2集成准备:SDK最低支持:Andr...

2019-08-06 16:02:55 2893 4

原创 浅析Android 项目构建

Google自从2014推出Android Studio之后就宣布在来年结束对EclipseAndroid开发工具的支持,所以这里直说使用Android Studio对于Android项目的构建。对于Android 开发者来说 Gradle 是一个强大的工具,它提供便捷的方式帮助开发者构建APP,下面是维基上对Gradle的解释Gradle是一个基于Apache Ant和Apache M...

2019-07-25 17:23:31 171

原创 关于View的绘制的那些事

最近看到一篇对view绘制讲的很好的博客,特此也总结一下我对view绘制的理解。 先对上图做一波简单的解释:Activity内部持有一个PhoneWindow,PhoneWindow才是真正展示用户界面的大boss。PhoneWindow这个类是Framework为我们提供...

2019-07-19 16:28:51 170

原创 PopupWindow全屏显示适配所有机型

近期有一个类似咸鱼发布功能的需求,这里使用了PopupWindow去实现所有的效果,但是在UI走查阶段,OPPO的一款手机无法全屏,状态栏没有遮盖,此处记录解决过程。部分初始重要代码:public class MyPopWindow extends PopupWindow implements View.OnClickListener { private View rootVie...

2019-06-25 14:45:17 2008 1

原创 关于GPU过度绘制的那些误解

提到防止页面卡顿,大家首先想到的会是页面层级嵌套过多导致过度绘制。那么达到什么程度页面才算过度绘制呢?绘制限制手机屏幕由很多像素点组成,通过变换每个像素点的颜色,形成各种各样的图像。GPU控制的一块缓冲区中,这块缓冲区叫做Frame Buffer(也就是帧缓冲区)。可以简单理解成一个二维数组,数组中的每一个元素对应着手机屏幕上的一个像素点,元素的值代表着屏幕上对应的像素点要显示的颜色。优化...

2019-05-21 17:12:14 6370

原创 ItemTouchHelper.Callback实现仿朋友圈发布图片拖拽排序

项目需求需要类似发布朋友圈拖拽排序的功能,故此记录一下,感谢Android SDK的强大。API链接:https://developer.android.com/reference/android/support/v7/widget/helper/ItemTouchHelper.Callback效果视频如下:网上有很多使用GirdView实现拖拽排序效果相对来说比较复杂,在保证效率和质...

2019-04-15 15:56:38 1063

原创 Android crash率降低探索

android应用,过高的Crash率影响用户的体验从而导致用户流失。降低Crash率对提升产品的功能和性能从而改善用户的体验增加流量具有重大的意义。所以Crash问题分析总结,加强测试手段以及持续关注每个版本的Crash率,逐步解决问题迫在眉睫。Crash率涉及层面,Crash问题的总体分类以及代码静态处理方式和工具:Crash率涉及到各个层面包括各个需求的开发人员的代码质量,An...

2019-03-27 10:57:44 443

原创 Android - 私有库项目创建及发布

Android 私有库很重要!!!!!创建项目,项目包含两个module:app module和library module,其中app module用来写library功能的使用示例。 例如:TimeAlbum库 修改gradle.properties文件,添加库配置内容 例如:TimeAlbum库 其中GROUP、POM_ARTIFACT_ID、VERSION_NAME在引用库时对...

2019-03-22 14:41:54 540

原创 按照日期排序相册库(支持自定义选中图片,视频数量,支持预览,支持拍摄仿小米原生相册)

写在前面:此库源于公司项目需求,暂时无法提供maven地址供大家使用,此处会给源码GitHub链接代码部分修改可直接运行。库链接:https://github.com/XMDstar/TimeAlbumhttps://www.jianshu.com/p/e53977900620此链接可看演示视频页面搭建以及使用库:页面实现基于需求使用RecyclerView嵌套Recycle...

2019-03-11 15:16:31 1619

原创 RecyclerView实现仿微博视频自动播放

近期遇到一个需求是做类似微博中视频在WiFi状态下自动播放,故写了一个简单的demo。重点代码都会贴出来,一些细节,项目中加了demo上并没有添加(例如:判断是否为WiFi状态)在这里说明一下。需求:1. 当视频item中视频部分露出超过1/3时,视频开始自动播放,当视频部分露出不足1/3时,视频停止播放,当下次满足自动播放要求时,从头播放。2.当一屏中有2个满足以上自动播放规则的视频...

2018-08-22 19:58:30 4043 9

原创 Material Design中控件简单使用(CoordinatorLayout,FloatingActionButton、TextInputEditText、Snackbar、CardView..)

Google I/O 2014 就发布的 Material Design ,今天就强烈推荐一下还没有用的猿友们,真的很好用。Material Design中文版链接:http://design.1sters.com/#首先在Module下中的bulid.gradle添加依赖:compile 'com.android.support:appcompat-v7:25.3.1'同步之...

2018-08-02 19:16:27 299

原创 AlertDialog实现自定义布局以及解决EditText无法弹出软键盘或者软键盘弹出错误问题

最近的需求如下图所示:退款原因是动态从后台获取,“其他原因”是本来就存在的不用从后台获取,原因只可单选。只有选择其他原因时,EideText才可以编辑。这里我就按我完成的步骤简单叙述一下会附重点代码。第一步:先写好布局备用。退款原因就用ListView了,因为原因是由后台动态控制的。第二步:在需要弹出对话框的地方来添加如下代码这一步很重要的是下面这样一句al

2016-12-09 16:18:03 802

原创 杂货铺(RecyclerView,SpannableString,ViewAnimationUtils.createCircularReveal()动画)

     忙而充实,总结一下今天学到的以及之前感觉很好用的小知识点。1.ViewAnimationUtils.createCircularReveal()动画ViewAnimationUtils.createCircularReveal()动画Android L引进到Android中的,此动画是能够实现圆形快速切换,属于Google  Material Design风格的动画。注意:此...

2016-12-06 18:13:04 1328

原创 杂货铺(便捷过渡动画,模拟人手触摸控件,layout_margin失效等等)

最近忙了一整子,在其中也学到了很多好用的开发中会用到的小知识,在这里总结一下分享给大家,也为自己做做笔记。1.android:animateLayoutChanges="true",便捷动画过渡。对于ViewGroups对象布局变化的动画,属性动画系统给ViewGroup对象的动画变化提供了与View对象一样容易动画处理方法。使用LayoutTransition类在ViewGr

2016-12-05 11:16:02 596

原创 java知识扩展,偏应用型,建议有Java基础者看。(一)

课内容以及一些周边知识的扩展,不妥之处望批评指正。 前置问题:当app访问服务器,服务器出现宕机,立刻关闭重启会出现报错说端口被占用,过几秒后重连就会好,但是不久后又会宕机或出现问题。  TCP/UDP协议:  TCP:面向连接、传输可靠(保证数据正确性,保证数据顺序)、用于传输大量数据(流模式)、速度慢,建立连接需要开销较多(时间,系统资源)。 UDP:面...

2016-10-21 17:35:51 671

原创 android应用内部实现生成桌面快捷方式与进度条控制音量大小

趁空闲将自己最近工作中用到的知识总结一下分享给大家。第一个就是在应用中加入可以在桌面上生成快键方式的功能,比如聊天APP在桌面生成某个经常联系的好友的快捷方式,在桌面点击快捷方式可以直接进入与他的聊天页面。第二个就是使用进度条去控制音量的大小。这些都是自己用过的下面会粘一些代码,比较急的童鞋可以直接使用。好了,看代码吧。 桌面生成快捷方式1.在清单文件注册receiver。 ...

2016-06-29 17:15:10 1527

原创 Android开发中一些琐碎的小功能的实现

今天就来分享一个小功能,虽然很简单,但是基本上好多项目中都不会少了它。还有补充上一篇分享的关于tab标签和viewpager联动的文章中的优化,当时在写的时候比较匆忙就没有注意用了TextView虽然也是可以没有什么bug但是建议使用RadioButton,因为RadioButton主要用于多选一的操作,也就是当有多个选项,但永远只选择一个选项。好处大家知道了吧。废话不多说来记录一点最近用到的小知...

2016-06-02 11:23:09 643

原创 仿新浪热门微博页面动态添加Tab标签与Fragment联动的实现

大概与新浪热门微博相似我就照着写了,自我感觉很好用,趁公司的人都在测试就给大家分享一下咯。效果如下图:  使用控件:HorizontalScrollView和ViewPager 代码如下:xml: &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ...

2016-05-20 14:43:02 990

原创 Butter Knife的使用(仅限Android Studio)

       Butter Knife就是朋友介绍的比较好用的类库。今天用了一下还是很好用虽然和XUtils的注解很相似,但是呢如果项目中的网络请求没有使用XUtils,就可以使用它了,想说它的使用方法真的很简单,先了解一下吧。配置:   用gradle配置的时候加入:  compile 'com.jakewharton:butterknife:6.1.0' ...

2016-05-07 18:26:52 1643

原创 Intent的各种跳转以及一些小知识

先来点自己平时工作的时候抽取的一些工具:1.将xxxx-xx-xx转换成xxxx年xx月xx日,由于一般服务器返回的数据都会是前一种类型需要转换。public String formatDate(String time) {StringBuilder dateBuilder = new StringBuilder();dateBuilder.append(time.substring(...

2016-03-15 16:48:52 1194

原创 四大组件之BroadcastReceiver详解

 在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiver是对发送出来的 Broadcast 进行过滤接受并响应的一类组件。这种组件本质上是一种全局的监听器,用于监听系统全局的广播消息。它可以接收来自系统和应用的的广播。下面是Android Doc中关于BroadcastReceiver的概述:①广播接收器是一个...

2016-03-15 14:33:25 667

原创 Android的线程和线程池

首先先分享一个小的知识点,如何让edittext在没有点击之前不显示光标?很多人都会用textIn.clearFocus();但是有时候会发现它是没有作用的,找了找发现clearFocus()并不是edittext的方法而是它父类的父类view中的方法。看了看源码大致就是说如果你使用了这个方法,它会从整个布局的顶部去找一个需要焦点的控件将焦点给它。本人英语比较渣,自己翻译理解就是这样的,不过也...

2016-03-10 18:08:24 345

原创 杂货铺

动态获取textview的高度,对它进行设置展开与隐藏。以前呢,本渣渣是不知道还有这个知识点的,今天看到后感觉自己以前太笨了。下面就介绍一下这个强大的暂且叫它工具吧。Android ViewTreeObserver简介一、结构public final class ViewTreeObserver extends Object    java.lang.Object         ...

2016-03-07 15:06:53 543

原创 杂货铺

都是些项目中的总结而已。1.相信大家对ViewPager已经很熟悉了,可惜最近项目中没有涉及我都快要忘了怎么用啦。但是有些知识我还是记得的,那么就来简单说说ViewPager的实现原理吧。一个是事件分发,一个是Scroller。事件分发我前面的博客有讲,今天就来讲讲Scroller。 Scroller是一个专门用于处理滚动效果的工具类,可能在大多数情况下,我们直接使用Scroller的...

2016-03-04 11:58:05 499

原创 Android事件分发详细介绍

在总结之前给大家说一个小的知识点吧,关于外部类使用内部类的内部类。(不知道内部类和外部类的一定要去百度学习一下哦)内部类也是外部类的一部分,所以在使用内部类的内部类的时候:内部类的内部类 a=内部类.内部类的内部类。不用new哦。好了,严肃点学习时间分发机制去啦鉴于手机屏幕的限制,所以android选择了分层的方式布局,这就引出了今天的主题--事件分发  Android 中与 Touc...

2016-03-02 10:56:50 437

原创 Listview中嵌套Checkbox的简单解决办法

最近项目中做了一个关于批量删除的这样一个操作,以前是会做的,谁知道记性不好忘光了,经过一番折腾还是完美的实现了,相信后面还有无数个和我一样的渣渣会遇到这个问题,那么就让我来分享一下咯。当然这个checkbox控件是写在item布局中的。我这边的需求是点击编辑按钮才会显示checkbox,点击取消隐藏。所以开始还是隐藏吧。  &lt;CheckBox        android:id...

2016-02-29 17:04:13 3714

原创 web学习之路—H5(五)

               今天就继续html的学习,把最后一点学习掉,就可以开始H5的学习了。有一天打算敲一个demo,但是发现居然好多都记得不清楚,所以后续会敲两个demo的,建议大家一边学习一边练习,这样效果会特别好。Html的多媒体视频格式 MP4 格式是一种新的即将普及的因特网视频格式。HTML5 、Flash 播放器以及优酷等视频网站均支持它。格式 文件 ...

2016-02-22 17:39:21 658

原创 web学习之路—H5(四)

          在这里稍微总结一下前面学习的,前面三节大致讲了最基础的html的基础知识,其实也就是一堆常用的标签,其实知识都是互通的,比如我会android知识,学起来就觉得他们的整体还是很像的,这样对比着学习比较好记忆。其中学习的常用标签就类似android中控件和组件一样,还有它的整体风格都很像。大家如果有其他知识的基础那么就可以沿用以前学习那些知识好的方法去学习记忆。基础其实我也没有记...

2016-02-18 16:59:17 492

原创 web学习之路—H5(三)

今天就沿用以前的学习方法,看基础知识咯。这里只总结我就得大家需要注意的地方。表格和边框属性 如果不定义边框属性,表格将不显示边框。有时这很有用,但是大多数时候,我们希望显示边框。使用边框属性来显示一个带有边框的表格:&lt;table border="1"&gt;&lt;tr&gt;&lt;td&gt;Row 1, cell 1&lt;/td&gt;&lt;td&gt;...

2016-02-18 13:07:53 463

原创 android测试工具小总结

             今天同事问到了android测试工具有点懵。因为我一般不会去专业点的测试,我就用我肉嘟嘟的手指点啊点啊就完事了。既然人家问我我也不能丢了android人的面子,那么来学习一下吧。android自动化测试工具简介现在,已经有大量的Android自动化测试架构或工具可供我们使用,其中包括:Activity Instrumentation, DroidPilot,Mon...

2016-02-15 10:54:04 1367

原创 工作中一定用的到的小知识点

今天也没什么好说的就是一些在平时工作中,觉得很小的一点却不太会的地方的小总结吧。1.场景一:在textview中显示不同颜色的字。          在textview有textcolor这个属性,但是大家都知道,这个属性的设置会使所有的字都显示为同一个颜色。但是在一句话中间包含了几种其他颜色的字,我们总不能使用好几个textview去拼在一起吧,在这里我就给大家说一下的几种方法供大家选择...

2016-02-02 14:23:46 409

原创 web学习之路—H5(二)

以下为个人看基础的时候总结的比较容易出错的知识点:1.始终为属性值加引号 属性值应该始终被包括在引号内。双引号是最常用的,不过使用单引号也没有问题。在某些个别的情况下,比如属性值本身就含有双引号,那么您必须使用单引号,例如: name='Bill "HelloWorld" Gates' 2.HTML 标题 标题(Heading)是通过 &lt;h1&gt; - &lt...

2016-01-22 18:40:51 397

Android与H5交互相互调用对方的方法

此demo主要完成的是webview中H5调用android中的方法,以及android调用H5方法,也就是Java与js的交互,简单好用。

2016-07-21

音乐播放器之进度条控制音量大小

可以直接使用

2016-06-29

HorizontalScrollView与ViewPager组合实现联动仿新浪微博热门微博页面

仿新浪热门微博页面,标签可动态添加

2016-05-20

listview左右活动删除

一个简单的listview左右滑动删除demo!

2016-03-18

Android左侧字母索引

对于字母索引的完整封装,包含点击等功能,使用方便,有注释哦

2015-12-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除