
Android开发
文章平均质量分 73
编程日记
这个作者很懒,什么都没留下…
展开
-
使用canvas与Paint在View中居中绘制文字
我们在自定义View中有的时候会想自己绘制文字,自己绘制文字的时候,我们通常希望把文字精确定位,文字居中(水平、垂直)是普遍的需求,所以这里就以文字居中为例,看一下android中的文字应该如何绘制,它与Java又有什么区别。先来看看我们的目标,见下图上图是我打开了“显示布局边界”后截的图,所有会有好多框框。仔细观察上图文字区域,我们会发现文字区域中有5条颜色不同的转载 2017-12-10 11:36:44 · 461 阅读 · 0 评论 -
Android ijkplayer详解使用教程
1 源地址:https://www.cnblogs.com/zhujiabin/p/7211983.html.认识ijkplayer最近公司准备开发一款视频播放及直播的应用,找了许多开源的框架,大部分都是基于ffmpeg开发的。最开始准备用Vitamio框架开发的,相关的文章也比较丰富,结果对于非个人移动应用均需购买Vitamio使用授权。不过B站开源的ijk转载 2017-11-10 10:23:16 · 946 阅读 · 0 评论 -
重磅教程!帮你全面彻底搞定Material design的学习笔记
编者按:这一年就快完了,你还没搞懂Material design吗?是嫌文档太长,还是觉得自己英文不好?都没关系,我们善良热情的@十萬個為什麽 帮同学们通读了一遍官方的设计指南,去糙取精,整理出这篇干货超多的学习笔记,打包票学完基本就掌握90%了,别错过咯!自从Material design发布以来,可乐橙就在一直收集相关素材与资源,研究别人的作品。这套设计风格非常鲜明,带有浓郁的Goo转载 2017-09-27 10:31:38 · 1443 阅读 · 0 评论 -
AspectJ基本用法
参考:深入理解Android之AOPAOP虽然是方法论,但就好像OOP中的Java一样,一些先行者也开发了一套语言来支持AOP。目前用得比较火的就是AspectJ了,它是一种几乎和Java完全一样的语言,而且完全兼容Java(AspectJ应该就是一种扩展Java,但它不是像Groovy[1]那样的拓展。)。当然,除了使用AspectJ特殊的语言外,AspectJ还支持原生的Java,只要加上转载 2017-09-07 09:26:57 · 343 阅读 · 0 评论 -
Android中使用AspectJ
aop学习 深入理解Android之AOP什么是AOPAOP是Aspect Oriented Programming的缩写,即『面向切面编程』。它和我们平时接触到的OOP都是编程的不同思想,OOP,即『面向对象编程』,它提倡的是将功能模块化,对象化,而AOP的思想,则不太一样,它提倡的是针对同一类问题的统一处理,当然,我们在实际编程过程中,不可能单纯的安装AOP或者OOP的思想来编程,转载 2017-09-07 09:26:01 · 276 阅读 · 0 评论 -
JNI中javah命令的使用,生成.h的头文件
cd D:\AndroidWork\NdkTest\bin\classes javah -jni com.example.ndktest.MainActivity 参考:http://blog.sina.com.cn/s/blog_6e4511450100yq3d.html 最近一直在折腾这个JNI和Android NDK,今天通过javah生成h文件时遇到各转载 2017-08-06 16:37:54 · 552 阅读 · 0 评论 -
自定义控件实现不规则区域点击事件
上来先看看效果对于上面的图形实现主要用到svg,通过解析svg获取不规则的图形,对于svg文件这个一般需要美工提供,不需要我们开发实现。实现上面效果第一步是解析svg文件代码如下package demo.zjd.com.taiwandemo.utils;import android.graphics.RectF;import android.util.Xml;im原创 2017-06-02 11:32:34 · 1968 阅读 · 0 评论 -
在Android中通过jni方式使用编译好的FFmpeg库-Android中使用FFmpeg媒体库(二)
整体调用逻辑为:1 编译完ffmpeg库2 使用jni方式撰写c代码,其中需要包含相应的ffmpeg的头文件3 撰写相应的Android.mk文件,里面指定需要编译的c代码以及需要链接的动态库4 执行ndk-build生成相应的jni库5 创建andorid java程序,代码中loadLibrary相应ffmpeg库以及刚才生成的jni库6 静态方法声明native函数,转载 2017-04-06 11:15:56 · 483 阅读 · 0 评论 -
Android 一个绚丽的loading动效分析与实现!
http://blog.youkuaiyun.com/tianjian4592/article/details/44538605前两天我们这边的头儿给我说,有个 gif 动效很不错,可以考虑用来做项目里的loading,问我能不能实现,看了下效果确实不错,也还比较有新意,复杂度也不是非常高,所以就花时间给做了,我们先一起看下原gif图效果:从效果上看转载 2017-04-04 12:53:20 · 611 阅读 · 0 评论 -
Android Paint、Canvas、Matrix使用讲解(一、Paint)
http://blog.youkuaiyun.com/tianjian4592/article/details/44336949好了,前面主要讲了Animation,Animator 的使用,以及桌面火箭效果和水波纹效果,分别使用Android框架和自己绘制实现,俗话说,工欲善其事,必先利其器,接下来几篇文章主要讲绘制中我们需要常使用的一些利器;Paint:画笔Canvas:画转载 2017-04-04 12:52:02 · 887 阅读 · 0 评论 -
Android沉浸式UI实现及原理
沉浸式体验首先别吐槽沉浸式这个名词吧,毕竟这各名字是广为人知并且比透明状态栏加透明导航栏更酷。充分使用整个屏幕将这2个系统视图融入自己APP也算沉浸式体验吧。首先2个名词:StatusBar:Paste_Image.pngNavigationBar:Paste_Image.png下面是Google的官方标准模版:转载 2017-04-03 10:46:47 · 433 阅读 · 0 评论 -
Jmockit使用指南
mock对象虚拟的对象就是mock对象。mock对象就是真实对象在调试期间的代替品。 关于什么时候需要Mock对象,Tim Mackinnon给我们了一些建议:真实对象具有不可确定的行为(产生不可预测的结果,如股票的行情)真实对象很难被创建(比如具体的web容器)真实对象的某些行为很难触发(比如网络错误)真实情况令程序的运行速度很慢转载 2017-03-15 13:32:14 · 3439 阅读 · 2 评论 -
一个优秀的Android应用从建项目开始
1.项目结构现在的MVP模式越来越流行。就默认采用了。如果项目比较小的话:app——Application Activity Fragment Presenter等的顶级父类config——API,常量表等model——数据层entities——数据模型presenter——MVP的Pservice——服务ui——MVP的Vutils——工具类集合widget——各转载 2017-03-13 11:02:00 · 311 阅读 · 0 评论 -
Android客户端性能优化(魅族资深工程师毫无保留奉献)
本文由魅族科技有限公司资深Android开发工程师degao(嵌入式企鹅圈原创团队成员)撰写,是degao在嵌入式企鹅圈发表的第一篇原创文章,毫无保留地总结分享其在领导魅族多个项目开发中的Android客户端性能优化经验,极具实践价值!众所周知,一个好的产品,除了功能强大,好的性能也必不可少。有调查显示,近90%的受访者会因为APP性能差而卸载,性能也是造成APP用户沮丧的头号原因。转载 2017-04-07 14:28:59 · 1236 阅读 · 0 评论 -
屏幕适配之百分比方案详解
最近看到DrawerLayout,support v4中提供的类,想到对google提供的这些支持库,自己一点都不熟悉,想着看看Google提供的支持库都有什么内容。结果看着看着在最后忽然看到了Percent Support Library。寻思怎么还百分比呢?仔细一看介绍,我擦,真是太有用了。Percent Support LibraryThe Percent package转载 2017-03-27 23:17:45 · 787 阅读 · 0 评论 -
Android app性能优化解决卡慢顿之布局优化
前面博客分析了导致app卡顿慢的直接原因,这里就从原因出发,分析一些优化方案(这里主要是从直接影响渲染机制的布局相关进行分析)1)Invalidations,Layouts,andPerformance(动画,布局的优化)顺滑精妙的动画是app设计里面最重要的元素之一,这些动画能够显著提升用户体验。下面会讲解Android系统是如何处理UI组件的更新操作的。通常来说,And转载 2017-03-27 23:14:47 · 427 阅读 · 0 评论 -
Android中使用canvas定制控件(控件周围阴影)
首先上一张效果图:基本的思路是:1.绘制圆角矩形。2.四周添加阴影。 开始绘制在onDraw中,首先初始化画笔:1 Paint paint = new Paint();2 paint.setColor(Color.WHITE);3 paint.setShadowLayer(10f, 0, 0, IFUIConstants.BACK转载 2017-12-05 17:27:43 · 1526 阅读 · 0 评论 -
Android 视频录制中的分辨率问题
视频录制的教程很多了,也不是很复杂。这里不展开了。然而某天搞来一只华为手机开始录制的时候报我MediaRecorder: start failed错误。经过一番折腾,才发现是分辨率的问题。事情是这个样子的:按正常流程,在录制前,我们需要设置camera的分辨率和录制的分辨率。也就是Parameters parameter=camera.getParameters();par转载 2018-02-01 15:30:36 · 4889 阅读 · 0 评论 -
[原创]HierarchyView的实现原理和Android设备无法使用HierarchyView的解决方法
最近在看一个老外写的东西,发现里面有个类,使用这个类可以让任何设备使用HierarchyView。众所周知,市面上卖的Android设备,一般都不能使用HierarchyView,所以借此机会,了解一下HierarchyView的实现原理,并学习一下老外的解决方法。HierarchyView的源码在/sdk/eclipse/plugins/com.android.ide.eclipse.hiera转载 2018-01-18 21:41:47 · 288 阅读 · 0 评论 -
Android 沉浸式状态栏的实现
Android 沉浸式状态栏的实现一提到沉浸式状态栏,第一个浮现在脑海里的词就是“碎片化”。碎片化是让 Android 开发者很头疼的问题,相信没有哪位开发者会不喜欢“write once, run anywhere”的感觉,碎片化让我们不得不耗费精力去校验代码在各个系统版本、各个机型上是否有效。因此以前我一直把沉浸式状态栏看作一块难啃的骨头,�但是该面对的问题迟早还是要面对,所以,不如就此开...转载 2018-11-22 10:31:38 · 374 阅读 · 0 评论 -
Android中startActivity中的permission检测与UID机制
我们经常在一个activity中去start另一个activity,或者与另一个acitivity的结果进行交互(startActivityForResult)。但有没有想过可能会出现的permission问题呢?如果你遇到了permission denial的Exception,那么你需要读读这篇文章啦。 我们在同一个application内部,可以随意的startActivity from ...转载 2018-10-24 19:19:07 · 1305 阅读 · 0 评论 -
AOP 之 AspectJ 全面剖析 in Android
AspectJ 是 Android 平台上一种比较高效和简单的实现 AOP 技术的方案。相类似的方案有以下几种: AspectJ: 一个 JavaTM 语言的面向切面编程的无缝扩展(适用Android)。 Javassist for Android :用于字节码操作的知名 java 类库 Javassist 的 Android 平台移植版。 DexMaker :Dal...转载 2018-10-26 14:51:18 · 469 阅读 · 0 评论 -
如何处理:java . util . concurrent。TimeoutException: android.os.BinderProxy.finalize()在10秒错误后超时?
We're seeing a number of TimeoutExceptions in GcWatcher.finalize, BinderProxy.finalize, and PlainSocketImpl.finalize. 90+% of them happen on Android 4.3. We're getting reports of this from Crittercism...转载 2018-09-20 16:23:30 · 17052 阅读 · 0 评论 -
Android Studio 3.0中mipmap-anydpi-v26是什么东东
在Android Studio 3.0中一旦我们创建了一个项目,一个名为mipmap-anydpi-v26自动创建的文件夹在res文件夹下。它究竟能干什么?为什么我们需要这个?我们在开发时该如何利用它,下面通过本文给大家介绍下在Android Studio 3.0中一旦我们创建了一个项目,一个名为mipmap-anydpi-v26自动创建的文件夹在res文件夹下。它究竟能干什么?为什么我们...转载 2018-09-20 15:44:52 · 5516 阅读 · 2 评论 -
mac android apk反编译
在mac os系统上反编译android apk,首先需要准备好以下3个文件:1、apktool:https://ibotpeaches.github.io/Apktool/install/ 2、dex2jar:https://github.com/pxb1988/dex2jar 3、jd-gui:http://jd.benow.ca 下载好后,就可以开始我们的反编译之路了:...转载 2018-09-20 14:26:54 · 271 阅读 · 0 评论 -
Ubuntu 16.04下安装配置SonarQube+MySQL
环境:root@ubuntu:~# uname -aLinux ubuntu 4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linuxroot@ubuntu:~# root@ubuntu:~# cat /etc/issueUbuntu 16.04 LTS \n \l ro...转载 2018-06-04 16:18:36 · 1042 阅读 · 0 评论 -
Android 视频分离和合成(MediaMuxer和MediaExtractor)
Android 视频的分离和合成这方面的资源网上是少之又少,学习的过程也是各种demo的看,各种demo的实验,各种坑的踩,为了让大家能够android的视频的分离和合成又个了解,写了下面的例子,完整例子再最下面。例子写的比较草,中间有较多的容错处理和代码的重构,也就懒得做了。另外导入的项目的时候,需要将工程input.mp4导入sd卡中,放在根目录里,由代码可以知道。 理论上来,我们可以利用的视...转载 2018-03-29 17:03:11 · 895 阅读 · 0 评论 -
Android硬编码——音频编码、视频编码及音视频混合
视频编解码对许多Android程序员来说都是Android中比较难的一个知识点。在Android 4.1以前,Android并没有提供硬编硬解的API,所以之前基本上都是采用FFMpeg来做视频软件编解码的,现在FFMpeg在Android的编解码上依旧广泛应用。本篇博客主要讲到的是利用Android4.1增加的API MediaCodec和Android 4.3增加的API MediaMuxer...转载 2018-03-29 13:44:58 · 331 阅读 · 0 评论 -
分享几个Android摄像头采集的YUV数据旋转与镜像翻转的方法
最近在做直播推流方面的工作,因为需要添加美白,滤镜,AR贴图等效果。所以不能简单的使用SufaceView加Camera的方式进行数据的采集,而是需要对Camera采集到的YUV数据进行相关的处理之后然后再进行推流的操作,YUV数据的返回接口。@Override public void onPreviewFrame(byte[] data, Camera camera) { } 当然,美白,滤...转载 2018-03-14 14:56:25 · 4122 阅读 · 0 评论 -
Android OpenGL YUV 旋转花屏解决及Camera获取图像
一个自拍app,如何获取我们的surface view的截屏?在Camera的onPreviewFrame回调中(继承的PreviewCallback接口)。我们可以获取到data数组,里面存放着就是实时的图片data数组转文件为null,且转bitmap也为null怎么办?data数组里确实存放的是图片,但是格式不对,是YUV420格式。需要进行一个转换。所以采用open gl包下的YuvIma...转载 2018-03-14 14:49:02 · 1379 阅读 · 0 评论 -
Android MediaMuxer使用遇到的问题
1.IllegalStateException问题MediaMuxer的使用必须严格遵循如下顺序:addTrack->start->writeSampleData->stop->release如果有顺序冲突或者多次调用start、stop、release,会导致IllegalStateException在使用MediaMuxer时,经常遇到的场景是在两个不同的Thread中...转载 2018-03-13 16:14:57 · 1067 阅读 · 0 评论 -
GL ES中几个重要函数详细说明
glVertexPointer void glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer) Parameters size Specifies the number of coordinates per vertex. Must be 2, 3, or 4. The initial va...转载 2018-03-12 15:12:19 · 1335 阅读 · 0 评论 -
SIGBUS和SIGSEGV
一、导致SIGSEGV 1.试图对只读映射区域进行写操作 。 2.访问的内存已经被释放,也就是已经不存在或者越界。3.官方说法是:SIGSEGV --- Segment Fault. The possible cases of your encountering this error are: (1)buffer overflow --- usually caused by a po...转载 2018-03-15 18:08:01 · 667 阅读 · 0 评论 -
Fail to connect to camera service的几种原因和解决方法
在应用开发中涉及到camera相关的操作经常会出现Fail to connect to camera service的问题,相应的也就会出现上面类似的错误异常日志。下面就出现这个错误的场景和原因简单做下分析。1.手机上有安装安全过滤软件。因为camera属于较为敏感的权限,所以,有些手机安全管家会自动拒绝camera的打开操作。 针对这种错误,可以在手机安全管家软件中,降低一下camera的安全...转载 2018-03-08 15:35:26 · 27784 阅读 · 2 评论 -
把图片转换成视频-ffmpeg
http://blog.youkuaiyun.com/huangxiansheng1980/article/details/6819271ffmpeg是一个非常强大的工具,使用他可以转换视频格式,包括视频容器格式,视频编码格式。这里所说的视频,包括了视频和音频。可以更改视频的其他的参数,比如帧率-每秒播放的帧数, 视频的大小-尺寸等等。还可以将图片转换视频。图片转换成视频,实际上是通过内置的视频编码格式将你的...转载 2018-03-06 22:05:08 · 13162 阅读 · 3 评论 -
android studio快捷键
Alt+回车 导入包,自动修正Shift+F6重构-重命名Ctrl+Shift+先上键Ctrl+Y删除行(ctrl+x不是删除行,是剪切。如果不选中,则为剪切当行。ths for 貌似掉线)Ctrl+D 复制行Ctrl+/ 或 Ctrl+Shift+/注释(// 或者/*...*/ )Ctrl+J自动代码Ctrl+E 最近打开的文件Ctrl+H 显示类结构图Ct转载 2017-03-27 23:13:38 · 227 阅读 · 0 评论 -
Android-贝塞尔曲线
——前言——什么是贝塞尔曲线——贝塞尔曲线的分类——贝塞尔曲线代码实现——贝塞尔曲线的应用 前言: 从去年开始了解贝塞尔曲线之后,发现开发中,不管是Android/Ios平台,还是web前端等,都有贝塞尔曲线的应用,通过绘制贝塞尔曲线,可以帮助开发者实现很多效果,例如一段时间内很流行的粘合型的下拉刷新、又如天气曲线图,同时,以贝塞尔曲线为基础的贝塞尔转载 2017-03-27 23:12:29 · 508 阅读 · 0 评论 -
JMockit本土编译,并引入Eclipse
目标:将从官方下载的JMockit代码编译生成Eclipse工程,方便后续学习JMockit原理之用。 环境说明:JMockit 0.997maven2 步骤:1、下载 我对maven实在不熟悉,从google上下载了JMockit 0.997版的代码(链接:http://code.google.com/p/jmockit/do转载 2016-10-26 19:44:43 · 818 阅读 · 0 评论 -
android怎样加快ui的加载速度
1.减小主线程的阻塞时间 若一个操作耗时教长(超过5秒 用户无响应5秒 网络和数据库阻塞10秒 广播接收者执行超过10秒会导致ANR),我们应该将其放入后台线程中执行,只在需要修改UI界面时通知主线程进行修改。 Android已经提供了AsynTask以实现从主线程生成新的异步任务的方法。具体用法参见异步任务。2.提高Adapter和AdapterView的效率 (1)重转载 2016-08-22 13:38:47 · 1842 阅读 · 0 评论 -
Android中,什么是Presenter?
Presenter主要作为沟通View和Model的桥梁,它从Model层检索数据后,返回给View层,但是不想典型的MVC结构,因为它也可以决定与View层的交互操作。View通常来说是由Activity实现的(也许是Fragment,VIew,取决于app的整体结构),它会包含一个Presenter的引用,最理想的是Presenter由一个依赖注入管理器提供,比如Dagger,不过如果不用转载 2016-08-20 19:57:49 · 5345 阅读 · 0 评论