- 博客(41)
- 资源 (7)
- 收藏
- 关注
原创 Android P 非SDK限制 源码分析
官方说明从Android 9(API级别28)开始,该平台限制您的应用可以使用哪些非SDK接口。 只要应用程序引用非SDK接口或尝试使用反射或JNI获取其句柄,这些限制就适用。 这些限制旨在帮助改善用户和开发人员体验,降低用户崩溃的风险以及开发人员的紧急部署。一般来说,公共SDK接口是在Android框架包索引中记录的那些接口。 非SDK接口的处理是API抽象出来的实现细节,因此这些接口如有更...
2019-03-14 17:58:30
345
原创 Android优化笔记(三)——内存篇
1.内存优化的意义(1)减少因频繁GC引起的卡顿(2)避免出现OOM现象(3)减小内存占用,提高应用后台的存活率(4)减少异常发生,减少代码逻辑隐患2.内存分析工具(1)Memory Monitor,android studio自带, 3.1已换成Android Profiler,可查看一段时间内具体的内存占用。(2)Heap Viewer,可以查看不同数据类型在内存中的占用情况。...
2019-01-24 11:17:13
298
原创 Android优化笔记(二)——渲染篇(优化)
UI过度绘制过度绘制是指屏幕上的某个像素点在同一帧的时间内绘制了多次。 1.调试GPU过度绘制选项检测过度绘制可以借助开发者选项里自带的调试GPU过度绘制选项。 1.原色 – 没有被过度绘制 – 绘制了一次。 2.蓝色 – 1次过度绘制 – 绘制了两次。 3.绿色 – 2次过度绘制 – 绘制了三次。 4.粉色 – 3次过度绘制 – 绘制了四次。 5.红色 – 4次...
2018-05-29 17:56:11
573
原创 Android优化笔记(一)——渲染篇(原理)
显示机制和刷新机制 Android的显示系统是一个典型的显示系统,它由CPU,GPU,Display组成,CPU负责计算数据,把计算好数据交给GPU,GPU会对图形数据进行渲染,渲染好后放到buffer里存起来,然后Display负责把buffer里的数据呈现到屏幕上。对于 Android 而言,第一个步骤:CPU 计算屏幕数据指的也就是 View 树的绘制过程,也就是 Activity...
2018-05-23 17:07:40
779
转载 码流 / 码率 / 比特率 / 帧速率 / 分辨率 / 高清的区别
GOP/ 码流 /码率 / 比特率 / 帧速率 / 分辨率GOP(Group of picture) 关键帧的周期,也就是两个IDR帧之间的距离,一个帧组的最大帧数,一般而言,每一秒视频至少需要使用 1 个关键帧。增加关键帧个数可改善质量,但是同时增加带宽和网络负载。 需要说明的是,通过提高GOP值来提高图像质量是有限度的,在遇到场景
2017-08-18 13:56:53
929
原创 android 视频编辑框架(分割,裁剪,旋转,合并,添加logo,背景音乐等等)
EpMediaAndroid上基于FFmpeg开发的视频处理框架,简单易用,体积小,帮助使用者快速实现视频处理功能。包含以下功能:剪辑,裁剪,旋转,镜像,合并,分离,变速,添加LOGO,添加滤镜,添加背景音乐。github地址:https://github.com/yangjie10930/EpMedia使用方法:build.gradle里添加:allprojects { repositori
2017-06-26 14:23:13
19848
21
原创 Android ffmpeg调试信息打印在logcat里
移植ffmpeg到android上,由于无法查看调试信息而无法分析错误,特此记录下如何打印ffmpeg的信息至logcat里。1.编写android_log.h文件#include static int use_log_report = 0;#define FF_LOG_TAG "FFmpeg_VideoTest"#define FF_LOG_UNKNOWN
2017-02-23 10:40:42
3056
原创 Android 使用mp4parser进行视频的分割与合并
mp4parser 是一个优秀的视频处理框架,下面就教大家使用mp4parser在android上进行视频的分割与合并。Github:https://github.com/sannies/mp4parser\Gradle:dependencies { compile 'com.googlecode.mp4parser:isoparser:1.1.21'}
2016-12-26 15:16:12
12864
3
原创 【Scala】实现一个求平方根的算法
实现思路:采用牛顿迭代法,设y为x平方根的猜测值。此时如果(y+x/y)/2-y的绝对值小于一个足够小的浮点数时,y就约等于x的平方根,此时y足够接近x的平方根;如果不是,则用(y+x/y)/2作为新的猜测值,用递归再次进行计算。代码:(define abs(lambda(g)(if(< g 0) (- 0 g) g)))(define asq(lambda(x y)(if(>
2016-12-26 10:39:09
6776
1
原创 Android Retrofit使用指南,让网络请求更简单。
Retrofit与okhttp都是Square公司的出品,Retrofit是对okhttp做了一层封装,只要简单的配置,就可以是用Retrofit。github地址:https://github.com/square/retrofitGradle依赖:compile 'com.squareup.retrofit2:retrofit:2.1.0'注
2016-08-31 14:16:38
1294
转载 Android学习资料整理
一、RxJava1、教你写响应式框架 2、学习 RxJava 操作符的 APP 3、给 Android 开发者的 RxJava 详解—–扔物线 4、RxJava从零开始详解二、android插件补丁1、Android热补丁动态修复技术系列 2、Android 利用 APT 技术在编译期生成代码 3、Android中的动态加载机制 4、掌阅 Andro
2016-08-31 11:32:06
394
原创 解决6.0以上ScrollView嵌套RecyclerView能同时滑动的问题。
解决各个版本Scrollview嵌套Recycleview 滑动冲突的问题.
2016-07-01 16:14:17
6643
原创 android获取控件宽高为0的原因
很多时候我们想获取控件的宽高,但如果调用getWidth()和getHeigth(),取到的结果是0。这是因为我们执行方法时,View的绘制还未完成所以取到的宽高都是0。这时我们可以用ViewTreeObserver来监听View的绘制完成,此时再取即可获取控件的宽高,代码如下: ViewTreeObserver vto2 = mView.getV
2016-06-21 09:15:05
2583
转载 框架模式MVP在Android中的使用
前一篇文章中学习了MVC框架模式在Android中的使用,不了解什么是MVC框架模式的亲戳这里 框架模式 MVC 在Android中的使用。其实谷歌Android开发团队是鼓励开发者利用MVC框架模式开发项目的,我们平时写代码也或多或少的在使用MVC框架模式开发项目,比如说谷歌自己退出来的Volley网络请求框架就是遵循MVC框架的。我们可以理解为Volley框架是MVC当中的模型,也就是网络数据
2016-02-17 09:26:58
1013
转载 框架模式 MVC 在Android中的使用
算来学习Android开发已有2年的历史了,在这2年的学习当中,基本掌握了Android的基础知识。越到后面的学习越感觉困难,一来是自认为android没啥可学的了(自认为的,其实还有很多知识科学),二来网络上的很多框架已经帮我们做了太多的事情了,我们只需要画画UI就可以了,感觉Android开发没有太多的技术含金量。最近闲来无事,开始总结之前学过的知识点,想着是否应该学点其他的东西呢?总不能局限
2016-02-17 09:24:01
3121
原创 android 开源项目GuillotineMenu,酷炫的铡刀菜单
开源项目GuillotineMenu使用指南先上效果图:IDE使用的是Android studio.首先下载GuillotineMenu项目的library引用到项目中,下载地址:http://download.youkuaiyun.com/detail/u012027644/8840527guillotine.xml:这个XML是菜单的布局<
2015-06-26 10:03:02
1787
原创 android 实现加载动画对话框
先来两张效果图 自定义对话框:public class LoadingProgressDialog extends ProgressDialog { private AnimationDrawable mAnimation; private Context mContext; private ImageView mImageView; priva
2015-06-24 15:53:48
3202
转载 volley获取网络图片的一些方法
1. ImageRequest的用法前面我们已经学习过了StringRequest和JsonRequest的用法,并且总结出了它们的用法都是非常类似的,基本就是进行以下三步操作即可:1. 创建一个RequestQueue对象。2. 创建一个Request对象。3. 将Request对象添加到RequestQueue里面。其中,StringRequ
2015-05-27 15:06:32
1051
原创 Android网络请求开源框架Volley快速使用指南(2)——异步获取图片
直接上源码: /** * 利用Volley异步加载图片 * * 注意方法参数: * getImage(Context context,String imageUrl,ImageView mImageView) * 第一个参数:上下文 * 第二个参数:图片地址 * 第三个参数:要加载图片的ImageView
2015-05-15 09:26:41
955
原创 android拍照,并获取压缩后的图片。
1.设置要保存图片的路径的方法 private String getPhotopath(int type) { // 照片全路径 String fileName = ""; // 文件夹路径 String pathUrl = Environment.getExternalStorageDirectory()+"/myimag
2015-05-08 11:48:17
2338
转载 关于Bitmap的内存优化
在Android应用里,最耗费内存的就是图片资源。而且在Android系统中,读取位图Bitmap时,分给虚拟机中的图片的堆栈大小只有8M,如果超出了,就会出现OutOfMemory异常。所以,对于图片的内存优化,是Android应用开发中比较重要的内容1) 要及时回收Bitmap的内存Bitmap类有一个方法recycle(),从方法名可以看出意思是回
2015-05-08 09:12:12
807
原创 SQL SERVER自动提示插件
下载后安装在任意目录即可,好用~支持SQL Server2000,2005,2008,以及Visual Studio 2010,2012。下载地址:http://download.youkuaiyun.com/detail/u012027644/8637607
2015-04-27 15:56:04
6766
转载 TextView四周边框和单边边框
设置四周边框http://schemas.android.com/apk/res/android"> 只设置底部边框http://schemas.android.com/apk/res/android">
2015-04-27 13:31:47
2304
原创 android studio 快捷键大全
----常用快捷键 1.Ctrl+E,可以显示最近编辑的文件列表 2.Shift+Click可以关闭文件 3.Ctrl+[或]可以跳到大括号的开头结尾 4.Ctrl+Shift+Backspace可以跳转到上次编辑的地方 5.Ctrl+F12,可以显示当前文件的结构 6.Ctrl+F7可以查询当前元素在当前文件中的引用,然后按F3可以选择
2015-04-24 15:25:41
423
转载 Android UI 优化 使用<include/>和 <merge />标签
使用 标签来重用layout代码如果在一个项目中需要用到相同的布局设计,可以通过 标签来重用layout代码,该标签在android开发文档中没有相关的介绍。在android主屏程序中 用到了这个标签: <include android:id="@+id/cell2" layout="@layout/workspace_screen" /> 这样可以多次引用一个
2015-04-24 10:38:13
469
原创 SQLServer查看一个库里所有表的数据量
SELECT a.name,b.rows FROM sysobjects aINNER JOIN sysindexes b ON a.id=b.id WHERE b.indid IN(0,1) AND a.Type='u'ORDER BY a.name
2015-04-20 15:03:45
11932
转载 四种方案解决ScrollView嵌套ListView问题
以下文章转自@安卓泡面在工作中,曾多次碰到ScrollView嵌套ListView的问题,网上的解决方法有很多种,但是杂而不全。我试过很多种方法,它们各有利弊。在这里我将会从使用ScrollView嵌套ListView结构的原因、这个结构碰到的问题、几种解决方案和优缺点比较,这4个方面来为大家阐述、分析、总结。实际上不光是ListView,其他继承自AbsListVie
2015-04-13 15:01:28
478
原创 Android网络请求开源框架Volley快速使用指南(1)——发起Get和Post请求
1.下载编译好的jar包http://download.youkuaiyun.com/detail/u012027644/85478252.get请求RequestQueue mQueue = Volley.newRequestQueue(getApplicationContext()); StringRequest stringRequest = new StringRequest(
2015-03-30 17:25:49
763
转载 获取android 设备信息
首先是获取设备型号、设备SDK版本以及设备的系统版本信息:String device_model = Build.MODEL; // 设备型号 String version_sdk = Build.VERSION.SDK; // 设备SDK版本 String version_release = Build.VERSION.RELEASE; // 设备的系统版本
2015-03-30 09:54:12
571
原创 ViewPager里Fragment的生命周期
一个ACTIVITY中包含3个Fragment,做成可切换的标签页,生命周期如下。三个Fragment从左到右依次是frist,second,thrid打开Activity03-24 13:15:51.622: V/first(3844): +onAttach+03-24 13:15:51.622: V/first(3844): +onCreate+03-24 13:1
2015-03-24 13:29:31
581
原创 开源项目SlidingMenu简单使用指南
一.简介SlidingMenu能很方便的实现侧滑菜单栏,很多有名的软件都是用这种效果。如Evernote、Google+、Foursquare等,国内的QQ,豌豆夹,人人,360手机助手等都使用SlidingMenu的界面方案。二.准备工作1.下载开源项目SlidingMenu,地址:https://github.com/jfeinstein10/SlidingMenu2.下载
2015-03-24 09:16:13
561
原创 Fragment实现Tab页切换,滑动和点击都可切换。
1.TAB标题栏,top1.xml<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="60dp" android:background="#eee"
2015-03-20 16:41:15
806
原创 android 基础知识 字体加粗
1.代码方式TextView tv = (TextView)findViewById(R.id.tv); TextPaint tp = tv.getPaint(); tp.setFakeBoldText(true); 2.XML里修改android:textStyle="bold"
2015-03-20 16:24:22
428
转载 android权限大全
访问登记属性android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限获取错略位置android.permission.ACCESS_COARSE_LOCATION,通过WiFi或移动基站的方式获取用户错略的经纬度信息,定位精度大概误差在30~1500米获取精确位置
2015-03-14 10:17:36
466
转载 IntentFilter 监控
当Intent在组件间传递时,组件如果想告知Android系统自己能够响应和处理哪些Intent,那么就需要用到IntentFilter对象。 顾名思义,IntentFilter对象负责过滤掉组件无法响应和处理的Intent,只将自己关心的Intent接收进来进行处理。 IntentFilter实行“白名单”管理,即只列出组件乐意接受的Intent,但IntentFilter只会过滤
2015-03-14 10:13:54
416
转载 ANR的问题
1.ANR有哪几种?从ActivityManagerService的实现可以看到,ANR有四种,分别对应Android的四个fundermetals。这个也不难理解:所有fundermetal都会在main thread上运行,如果超过了响应的间隔,那么就会ANR。另外JNI调用native函数时也会发生无响应,不过我觉得应该不算单独的一种,它只是未响应发生在了native里,而不是vm里
2015-03-11 20:41:23
852
转载 内存泄露
1. android内存泄露概念 不少人认为JAVA程序,因为有垃圾回收机制,应该没有内存泄露。其实如果我们一个程序中,已经不再使用某个对象,但是因为仍然有引用指向它,垃圾回收器就无法回收它,当然该对象占用的内存就无法被使用,这就造成了内存泄露。如果我们的java运行很久,而这种内存泄露不断的发生,最后就没内存可用了。当然java的,内存泄漏和C/C++是不一样的。如果java程序
2015-03-11 20:38:19
550
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人