Android
文章平均质量分 81
CCstar1
我是一只小透明,咿呀咿呀哟。
展开
-
CameraX实现自定义带参考线相机
相机在开发中是经常会使用的,普通的拍照基本调用原相机都可以满足。但是在拍照过程中进行一些提醒或者要求调用样式统一的相机就需要我们自己去实现一个相机功能了。近期遇到一个需要自定义相机的需求,在这里在做一个简单的总结,有错误之处欢迎指出。最终实现效果如下图(图片有剪裁):横屏样式:主要功能如下:带参考线 手机倾斜小于30度文案提示 大于30度图片+文案提示 闪光灯 点击屏幕可聚焦 屏幕可旋转相机重点代码:publi...原创 2021-07-02 19:10:56 · 808 阅读 · 0 评论 -
生成mp3lame.so详解
前情:近期PCM转MP3出现了线上crash,定位到找不到so库里的native方法,目前解决方式是重新生成so替换老的so库。本人之前几乎是无JN开发经验,下面是我完成替换工作的全部流程,有错误的地方欢迎指正。概念:PCM格式:声音从模拟信号转化为数字信号的技术,经过采样、量化、编码三个过程将模拟信号数字化MP3格式:是一个数据压缩格式。它舍弃脉冲编码调制(PCM)音频数据中,对人类听觉不重要的数据(类似于JPEG,是一个有损图像的压缩格式),从而达到了压缩成小得多的文件大小。正文:下原创 2021-02-24 15:56:56 · 853 阅读 · 0 评论 -
Android BitmapShader和createCircularReveal结合仿放大镜动画
上篇动画实现方式对比说过要将实现的动画效果在本篇叙述,说着说着这就来总结一下了。先看下图效果:直接切入正题,本人的实现方式是将其分为两步去实现:第一步:实现人脸的收缩成为一个圆第二部:实现圆圈的转动看到相应图片部分,类似放大镜效果先上布局:<?xml version="1.0" encoding="utf-8"?><android.support.co...原创 2019-12-23 17:22:59 · 337 阅读 · 0 评论 -
Android 动画实现方式以及对比(GIF和WebP,Lottie和SVGA,原生动画)
最近需求涉及到较为复杂的动画实现,虽然后来完成与今天所要讲的毫无关系(实现方式会在下篇讲)。但是也是由此萌生了我对市面上较为流行动画的实现方式产生了兴趣,到底是谁好用呢?是谁更优秀呢?GIF和WebPGIF:图像互换格式(GIF,Graphics Interchange Format)是一种位图图形文件格式,以8位色(即256种颜色)重现真彩色的图像。它实际上是一种压缩文档,采用LZW压缩...原创 2019-12-17 11:34:04 · 6444 阅读 · 0 评论 -
RecyclerView实现仿微博视频自动播放
近期遇到一个需求是做类似微博中视频在WiFi状态下自动播放,故写了一个简单的demo。重点代码都会贴出来,一些细节,项目中加了demo上并没有添加(例如:判断是否为WiFi状态)在这里说明一下。需求:1. 当视频item中视频部分露出超过1/3时,视频开始自动播放,当视频部分露出不足1/3时,视频停止播放,当下次满足自动播放要求时,从头播放。2.当一屏中有2个满足以上自动播放规则的视频...原创 2018-08-22 19:58:30 · 4151 阅读 · 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 · 337 阅读 · 0 评论 -
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 · 1237 阅读 · 0 评论 -
杂货铺(便捷过渡动画,模拟人手触摸控件,layout_margin失效等等)
最近忙了一整子,在其中也学到了很多好用的开发中会用到的小知识,在这里总结一下分享给大家,也为自己做做笔记。1.android:animateLayoutChanges="true",便捷动画过渡。对于ViewGroups对象布局变化的动画,属性动画系统给ViewGroup对象的动画变化提供了与View对象一样容易动画处理方法。使用LayoutTransition类在ViewGr原创 2016-12-05 11:16:02 · 627 阅读 · 0 评论 -
AlertDialog实现自定义布局以及解决EditText无法弹出软键盘或者软键盘弹出错误问题
最近的需求如下图所示:退款原因是动态从后台获取,“其他原因”是本来就存在的不用从后台获取,原因只可单选。只有选择其他原因时,EideText才可以编辑。这里我就按我完成的步骤简单叙述一下会附重点代码。第一步:先写好布局备用。退款原因就用ListView了,因为原因是由后台动态控制的。第二步:在需要弹出对话框的地方来添加如下代码这一步很重要的是下面这样一句al原创 2016-12-09 16:18:03 · 829 阅读 · 0 评论 -
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 · 570 阅读 · 0 评论 -
Android crash率降低探索
android应用,过高的Crash率影响用户的体验从而导致用户流失。降低Crash率对提升产品的功能和性能从而改善用户的体验增加流量具有重大的意义。所以Crash问题分析总结,加强测试手段以及持续关注每个版本的Crash率,逐步解决问题迫在眉睫。Crash率涉及层面,Crash问题的总体分类以及代码静态处理方式和工具:Crash率涉及到各个层面包括各个需求的开发人员的代码质量,An...原创 2019-03-27 10:57:44 · 490 阅读 · 0 评论 -
ItemTouchHelper.Callback实现仿朋友圈发布图片拖拽排序
项目需求需要类似发布朋友圈拖拽排序的功能,故此记录一下,感谢Android SDK的强大。API链接:https://developer.android.com/reference/android/support/v7/widget/helper/ItemTouchHelper.Callback效果视频如下:网上有很多使用GirdView实现拖拽排序效果相对来说比较复杂,在保证效率和质...原创 2019-04-15 15:56:38 · 1259 阅读 · 0 评论 -
关于GPU过度绘制的那些误解
提到防止页面卡顿,大家首先想到的会是页面层级嵌套过多导致过度绘制。那么达到什么程度页面才算过度绘制呢?绘制限制手机屏幕由很多像素点组成,通过变换每个像素点的颜色,形成各种各样的图像。GPU控制的一块缓冲区中,这块缓冲区叫做Frame Buffer(也就是帧缓冲区)。可以简单理解成一个二维数组,数组中的每一个元素对应着手机屏幕上的一个像素点,元素的值代表着屏幕上对应的像素点要显示的颜色。优化...原创 2019-05-21 17:12:14 · 6461 阅读 · 0 评论 -
PopupWindow全屏显示适配所有机型
近期有一个类似咸鱼发布功能的需求,这里使用了PopupWindow去实现所有的效果,但是在UI走查阶段,OPPO的一款手机无法全屏,状态栏没有遮盖,此处记录解决过程。部分初始重要代码:public class MyPopWindow extends PopupWindow implements View.OnClickListener { private View rootVie...原创 2019-06-25 14:45:17 · 2059 阅读 · 1 评论 -
关于View的绘制的那些事
最近看到一篇对view绘制讲的很好的博客,特此也总结一下我对view绘制的理解。 先对上图做一波简单的解释:Activity内部持有一个PhoneWindow,PhoneWindow才是真正展示用户界面的大boss。PhoneWindow这个类是Framework为我们提供...原创 2019-07-19 16:28:51 · 201 阅读 · 0 评论 -
浅析Android 项目构建
Google自从2014推出Android Studio之后就宣布在来年结束对EclipseAndroid开发工具的支持,所以这里直说使用Android Studio对于Android项目的构建。对于Android 开发者来说 Gradle 是一个强大的工具,它提供便捷的方式帮助开发者构建APP,下面是维基上对Gradle的解释Gradle是一个基于Apache Ant和Apache M...原创 2019-07-25 17:23:31 · 202 阅读 · 0 评论 -
Android快速集成抖音分享
现在大火的app,抖音肯定有姓名。19年初抖音就开始支持Android应用接入抖音分享以及登录了,目前市场上我知道的轻颜相机已经集成分享。最近有一个新需求就是集成抖音分享,集成较为简单,但是也由于疏忽遇到了小的问题。这里整体梳理集成流程供大家参考。抖音分享开发者文档:http://open.douyin.com/platform/doc/m-1-3-2集成准备:SDK最低支持:Andr...原创 2019-08-06 16:02:55 · 3102 阅读 · 4 评论 -
杂货铺(RecyclerView,SpannableString,ViewAnimationUtils.createCircularReveal()动画)
忙而充实,总结一下今天学到的以及之前感觉很好用的小知识点。1.ViewAnimationUtils.createCircularReveal()动画ViewAnimationUtils.createCircularReveal()动画Android L引进到Android中的,此动画是能够实现圆形快速切换,属于Google Material Design风格的动画。注意:此...原创 2016-12-06 18:13:04 · 1385 阅读 · 0 评论 -
android应用内部实现生成桌面快捷方式与进度条控制音量大小
趁空闲将自己最近工作中用到的知识总结一下分享给大家。第一个就是在应用中加入可以在桌面上生成快键方式的功能,比如聊天APP在桌面生成某个经常联系的好友的快捷方式,在桌面点击快捷方式可以直接进入与他的聊天页面。第二个就是使用进度条去控制音量的大小。这些都是自己用过的下面会粘一些代码,比较急的童鞋可以直接使用。好了,看代码吧。 桌面生成快捷方式1.在清单文件注册receiver。 ...原创 2016-06-29 17:15:10 · 1564 阅读 · 0 评论 -
Android中关于APP打包的那些事
在Android系统中,要求所有应用程序必须经过数字签名后才能安装。Android系统使用这个证书来识别应用程序的作者,并建立程序间的信任关系。 证书并不用让于用户控制可以安装哪些程序,证书也不需要授权中心来签名。在Android系统中,应用程序使用自己签名的证书是完全允许而且是很普遍的。关于Android应用程序签名主要有以下几个重点:所有的应用程序都必须签名。系统不会安装任原创 2015-12-18 12:19:36 · 1207 阅读 · 0 评论 -
Android EditText的设置以及软键盘的各种设置
EditText相关属性EditText继承关系:View-->TextView-->EditText。 EditText的属性很多,这里介绍几个: android:layout_gravity="center_vertical" 设置控件显示的位置:默认 top,这里居中显示,还有bottom android:hint="请输入数字!" 设置显示在空间上的提示信息原创 2015-12-18 16:46:09 · 4865 阅读 · 0 评论 -
Android WebView总结
WebView可以使得网页轻松的内嵌到app里,还可以直接跟js相互调用。webview有两个方法:setWebChromeClient 和 setWebClientsetWebClient:主要处理解析,渲染网页等浏览器做的事情setWebChromeClient:辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等 WebVi原创 2015-12-22 16:17:39 · 437 阅读 · 0 评论 -
Android中那些似懂非懂的常用知识点与好用的 Eclipse快捷键
作为总结以及分享记录一下吧。Http方法:Get请求与Post请求的区别Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求Get是获取信息,而不是修改信息,类似数据库查询功能一样,数据不会被修改Get请求的参数会跟在url后进行传递,请求的数据会附在URL之后,以?分割URL和传输数据,参数之间以&相连,%XX中的XX为该符号以16进制表示的ASCII,如...原创 2015-12-24 15:06:24 · 827 阅读 · 0 评论 -
类似ios的用户体验
最近发现了一些自己感兴趣并且觉得有用的知识点,在这里就总结一下吧。万一以后用的到呢!1.ios打开很多应用,导航栏和状态栏都和应用融为一体了有木有,感觉棒棒哒有木有!不用羡慕啦,Goolge在4.4页添加了透明状态栏和透明导航栏功能。先看我盗的图的效果。具体使用就说在代码中加入代码: //透明状态栏 getWindow().addFlags(Wi...原创 2016-01-13 16:41:11 · 549 阅读 · 1 评论 -
Android事件分发详细介绍
在总结之前给大家说一个小的知识点吧,关于外部类使用内部类的内部类。(不知道内部类和外部类的一定要去百度学习一下哦)内部类也是外部类的一部分,所以在使用内部类的内部类的时候:内部类的内部类 a=内部类.内部类的内部类。不用new哦。好了,严肃点学习时间分发机制去啦鉴于手机屏幕的限制,所以android选择了分层的方式布局,这就引出了今天的主题--事件分发 Android 中与 Touc...原创 2016-03-02 10:56:50 · 458 阅读 · 0 评论 -
android测试工具小总结
今天同事问到了android测试工具有点懵。因为我一般不会去专业点的测试,我就用我肉嘟嘟的手指点啊点啊就完事了。既然人家问我我也不能丢了android人的面子,那么来学习一下吧。android自动化测试工具简介现在,已经有大量的Android自动化测试架构或工具可供我们使用,其中包括:Activity Instrumentation, DroidPilot,Mon...原创 2016-02-15 10:54:04 · 1426 阅读 · 0 评论 -
工作中一定用的到的小知识点
今天也没什么好说的就是一些在平时工作中,觉得很小的一点却不太会的地方的小总结吧。1.场景一:在textview中显示不同颜色的字。 在textview有textcolor这个属性,但是大家都知道,这个属性的设置会使所有的字都显示为同一个颜色。但是在一句话中间包含了几种其他颜色的字,我们总不能使用好几个textview去拼在一起吧,在这里我就给大家说一下的几种方法供大家选择...原创 2016-02-02 14:23:46 · 431 阅读 · 0 评论 -
杂货铺
都是些项目中的总结而已。1.相信大家对ViewPager已经很熟悉了,可惜最近项目中没有涉及我都快要忘了怎么用啦。但是有些知识我还是记得的,那么就来简单说说ViewPager的实现原理吧。一个是事件分发,一个是Scroller。事件分发我前面的博客有讲,今天就来讲讲Scroller。 Scroller是一个专门用于处理滚动效果的工具类,可能在大多数情况下,我们直接使用Scroller的...原创 2016-03-04 11:58:05 · 531 阅读 · 0 评论 -
杂货铺
动态获取textview的高度,对它进行设置展开与隐藏。以前呢,本渣渣是不知道还有这个知识点的,今天看到后感觉自己以前太笨了。下面就介绍一下这个强大的暂且叫它工具吧。Android ViewTreeObserver简介一、结构public final class ViewTreeObserver extends Object java.lang.Object ...原创 2016-03-07 15:06:53 · 572 阅读 · 0 评论 -
Android的线程和线程池
首先先分享一个小的知识点,如何让edittext在没有点击之前不显示光标?很多人都会用textIn.clearFocus();但是有时候会发现它是没有作用的,找了找发现clearFocus()并不是edittext的方法而是它父类的父类view中的方法。看了看源码大致就是说如果你使用了这个方法,它会从整个布局的顶部去找一个需要焦点的控件将焦点给它。本人英语比较渣,自己翻译理解就是这样的,不过也...原创 2016-03-10 18:08:24 · 378 阅读 · 0 评论 -
Listview中嵌套Checkbox的简单解决办法
最近项目中做了一个关于批量删除的这样一个操作,以前是会做的,谁知道记性不好忘光了,经过一番折腾还是完美的实现了,相信后面还有无数个和我一样的渣渣会遇到这个问题,那么就让我来分享一下咯。当然这个checkbox控件是写在item布局中的。我这边的需求是点击编辑按钮才会显示checkbox,点击取消隐藏。所以开始还是隐藏吧。 <CheckBox android:id...原创 2016-02-29 17:04:13 · 3774 阅读 · 0 评论 -
四大组件之BroadcastReceiver详解
在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiver是对发送出来的 Broadcast 进行过滤接受并响应的一类组件。这种组件本质上是一种全局的监听器,用于监听系统全局的广播消息。它可以接收来自系统和应用的的广播。下面是Android Doc中关于BroadcastReceiver的概述:①广播接收器是一个...原创 2016-03-15 14:33:25 · 721 阅读 · 0 评论 -
Butter Knife的使用(仅限Android Studio)
Butter Knife就是朋友介绍的比较好用的类库。今天用了一下还是很好用虽然和XUtils的注解很相似,但是呢如果项目中的网络请求没有使用XUtils,就可以使用它了,想说它的使用方法真的很简单,先了解一下吧。配置: 用gradle配置的时候加入: compile 'com.jakewharton:butterknife:6.1.0' ...原创 2016-05-07 18:26:52 · 1673 阅读 · 0 评论 -
Android开发中一些琐碎的小功能的实现
今天就来分享一个小功能,虽然很简单,但是基本上好多项目中都不会少了它。还有补充上一篇分享的关于tab标签和viewpager联动的文章中的优化,当时在写的时候比较匆忙就没有注意用了TextView虽然也是可以没有什么bug但是建议使用RadioButton,因为RadioButton主要用于多选一的操作,也就是当有多个选项,但永远只选择一个选项。好处大家知道了吧。废话不多说来记录一点最近用到的小知...原创 2016-06-02 11:23:09 · 670 阅读 · 0 评论 -
仿新浪热门微博页面动态添加Tab标签与Fragment联动的实现
大概与新浪热门微博相似我就照着写了,自我感觉很好用,趁公司的人都在测试就给大家分享一下咯。效果如下图: 使用控件:HorizontalScrollView和ViewPager 代码如下:xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ...原创 2016-05-20 14:43:02 · 1023 阅读 · 0 评论 -
Android之NDK开发
一、NDK产生的背景 Android平台从诞生起,就已经支持C、C++开发。众所周知,Android的SDK基于Java实现,这意味着基于Android SDK进行开发的第三方应用都必须使用Java语言。但这并不等同于“第三方应用只能使用Java”。在Android SDK首次发布时,Google就宣称其虚拟机Dalvik支持JNI编程方式,也就是第三方应用完全可以通过JNI调用自己的C原创 2016-01-15 16:38:34 · 450 阅读 · 0 评论