
Android
Jesse_liao
不卑不亢
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
RecyclerView的性能优化
通过如下方法替换直接调用notifyDataSetChanged,减少不必要的刷新, calculateDiff方法能够计算出那些Item需要刷新,那些不需要刷新。 DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(new DiffCallBack(mData, list), true);...原创 2020-03-09 15:39:43 · 414 阅读 · 0 评论 -
Activity相互启动生命周期的变化
A启动B流程如下:2020-03-18 23:48:26.720 2720-2720/com.mobilevoice.findyou I/TestActivity: A = onPause 2020-03-18 23:48:26.747 2720-2720/com.mobilevoice.findyou I/TestActivity: B = onCreate 2020-03-18 23:4...原创 2020-02-19 18:34:43 · 529 阅读 · 0 评论 -
Android通过openGL实现视频贴纸功能
Android通过openGL实现视频贴纸功能GLSL代码1.vertex代码,文件vertex_filter_stricker.glslattribute vec2 inputTextureCoordinate; //纹理坐标attribute vec4 position;// 顶点坐标varying vec2 textureCoordinate;//纹理坐标点变换后输出voi...原创 2020-01-13 18:07:02 · 2158 阅读 · 2 评论 -
SurfaceView相互叠加的坑
SurfaceView相互叠加的坑SurfaceView相互叠加的坑SurfaceView相互叠加的坑我们知道可以通过如下代码设置SurfaceView的层级 surfaceView.setZOrderOnTop(isOnTop) surfaceView.setZOrderMediaOverlay(isOnTop)但是在实际使用过...原创 2020-01-08 14:24:44 · 3044 阅读 · 2 评论 -
Recyclerview使用过程中遇到的坑
1.调用notifyItem**方法导致闪烁:方法一((SimpleItemAnimator)recyclerView.getItemAnimator()).setSupportsChangeAnimations(false);方法二recyclerView.getItemAnimator().setChangeDuration(0);原因由于Recycleview调用方法...原创 2019-12-23 15:57:00 · 684 阅读 · 0 评论 -
Android设置Dialog设置圆角
dialog设置圆角1.dialog @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setBackgroundDrawable(new ColorDrawable(Col...原创 2019-12-23 15:47:16 · 1461 阅读 · 0 评论 -
Android相机开发中遇到的坑(注意事项)
Android相机开发中遇到的坑(注意事项)相机预览界面方向的设定在默认情况下有些相机用户看到的预览界面和真实世界的情况是颠倒的,所以我们需要设定预览界面的方向,如下所示: public static int getDisplayRotation(Activity activity) { int rotation = activity.getWindowManager().ge原创 2017-06-08 17:52:16 · 1264 阅读 · 0 评论 -
避免应用冷启动时候的短暂黑屏的问题
避免应用冷启动时候的短暂黑屏的问题原理因为在应用启动的时候窗口(window)先创建出来,所以当窗口显示出来的时候我们再通过onCreate方法中执行setContentView方法设置视图的时候窗口已经显示到界面上了,所以导致短暂的黑屏现象。所以为了解决这个问题我们可以预先通过xml来设置window的默认背景。实现 <style name="splash_style" parent="@a原创 2017-06-15 15:44:02 · 477 阅读 · 0 评论 -
Android动态加载SO文件
动态加载SO文件一般编译进APK的so文件,我们可以通过以下方式去加载SO文件(注意:例如我们的so文件是libscanner.so,那么我们加载so文件的时候去掉前面的lib和后面的.so后缀) System.loadLibrary("scanner");有时候我们希望通过下载so后然后再动态去加载,那么可以用以上方式(注意:该方式加载so文件必须是全路径,同时由于权限的原因,必须在我们app内原创 2017-07-18 09:38:14 · 1725 阅读 · 0 评论 -
RenderScript应用(四)实现相机模糊切换效果
使用RenderScript实现相机模糊切换效果实现原理步骤: 1.得到相机每一帧数据的回调 2.将YUV格式转换为ARGB格式 3.缩小图片 4.模糊图片 5.显示到视图中。具体实现代码renderscript相关代码YUV转换为ARGB代码如下:// Needed directive for RS to work#pragma version(1)// The java_packag原创 2017-08-25 14:38:54 · 948 阅读 · 0 评论 -
实现 ViewPager 回弹效果
实现 ViewPager 回弹效果在开发遇到产品需要实现回弹效果,我通过继承V4中的ViewPager来实现, 具体代码如下: public class ZoomViewPager extends ScanViewPager { private float preX = 0f; private static final float RATIO = 0.6f;//摩擦系数原创 2017-01-13 18:05:07 · 2837 阅读 · 1 评论 -
Android屏幕常用术语
Android屏幕常用术语Px(Pixel像素)也称为图像元素,是作为图像构成的基本单元,单个像素的大小并不固定,跟随屏幕大小和像素数量的关系变化(屏幕越大,像素越低,单个像素越大,反之亦然)。所以在使用像素作为设计单位时,在不同的设备上可能会有缩放或拉伸的情况。Resolution(分辨率)是指屏幕的垂直和水平方向的像素数量,如果分辨率是 1920*1080 ,那就是垂直原创 2018-01-12 14:39:03 · 549 阅读 · 0 评论 -
建议使用TextureView替代SurfaceView
使用SurfaceView的坑问题描述由于工作需要,需要开发相机界面,一开始的时候使用SurfaceView,开发完成后发现存在一些问题。 一、很多手机activity页面切换都有动画(我使用测试的小米手机),发现在其他界面跳转到相机界面的时候对SurfaceView没有效果,而相机界面其他View会产生动画效果,所以看起来会很奇怪。 通过查找发现原因如下(参考博文:这里写链接内容): Sur原创 2017-06-29 10:03:27 · 5333 阅读 · 0 评论 -
Android下实现多线程断点下载
Android下实现多线程断点下载原理主要通过设置Http的请求头Range字段,然后启动多个线程让每一个线程负责一段数据的下载,然后当所有线程的数据下载完整后,那么整个文件就一下完成。在下载过程中当我们每次写入一段数据后,我们同时记录当前线程已经下载的大小,那么当程序异常退出或者用户暂停下载后,用户下次再次下载的时候可以继续从之前下载的基础上继续下载文件而不用整个文件再次下载了。 例如:http原创 2017-05-18 16:22:48 · 381 阅读 · 0 评论 -
实现拉绳效果(类似UC浏览器首页效果)
实现拉绳效果(类型UC浏览器首页效果)前段时间,由于需求需要实现一个拉绳效果的首页,所以自己是实现了这样一个功能,需要的同学可以参考一下import android.animation.Animator;import android.animation.AnimatorSet;import android.animation.ObjectAnimator;import android.anim原创 2017-01-16 09:19:26 · 970 阅读 · 0 评论 -
只启动系统相机(排除第三方相机)
只启动系统相机(排除第三方相机)需求我们都知道启动相机可以通过如下代码实现 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); // 指定调用相机拍照后照片的储存路径 intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file)); c原创 2017-01-17 15:03:34 · 1551 阅读 · 0 评论 -
增强APP的安全性(一)
增强APP的安全性前言当我们发布一款新的APP的时候,最不愿看到的是我们的成果被别人窃取,所以如何提高我们APP的安全性在开发过程中也是非常重要的。常见增强安全性的手段有很多。例如:混淆Java代码、用C/C++实现关键代码、APK加固等等。今天我介绍的是可以迅速添加到项目中的来增强APP安全的方式。通过检查APP信息来增强APP的安全性具体代码如下:package com.dong.mobiles原创 2017-01-14 16:04:50 · 1636 阅读 · 0 评论 -
增强APP的安全性(二)
增强APP的安全性(二) –通过混淆ProGuard的常用语法 # 指定代码的压缩级别 -optimizationpasses 5 # 是否使用大小写混合 混淆时不会产生形形色色的类名 -dontusemixedcaseclassnames # 是否混淆第三方jar -dontskipnonpubliclibraryclasses原创 2017-01-17 16:27:29 · 669 阅读 · 0 评论 -
优化APP性能(一)
优化APP性能(一) —通过线程池前言我们都知道如何在Android中创建一个线程,如下: new Thread(new Runnable() { @Override public void run() { ... }).start();但是这样子创建线程有一个缺点就是当一个项目非常大,很多地方都需原创 2017-01-18 16:56:07 · 469 阅读 · 0 评论 -
NDK开发入门(一)
准备工作工具选择开发NDK我选择最新版的Android Studio2.2.2,主要原因是最新版已经很好的支持了c/c++的代码提示、代码调试和源代码跳转等功能,个人感觉非常好用。开始实践1.首先下载最新版Android studio并且下载ndk开发中需要的工具,如下图所示: 2.安装好三个工具后我们就可以进行开发了,首先我们新建一个项目,其中选中“Include C++ Support”,如下原创 2017-01-13 23:54:28 · 614 阅读 · 0 评论 -
Android相关的日志输出
Android相关的日志输出Android.mk文件日志输出例:$(warning "the value of LOCAL_PATH is$(LOCAL_PATH)")Ant编译脚本日志输出例:<echo level="info">NDK_DEBUG=${ndkDebugFlag}</echo>Gradle编译脚本日志输出例:println 'hello gradle'Android native开原创 2017-04-27 10:59:37 · 432 阅读 · 0 评论 -
实现自定义相机(camera的使用)
实现自定义相机(camera的使用)实现步骤1.获取一个相机对象(Camera) 2.设置相机相关的回调和参数 3.创建一个预览界面(SurfaceView)、 4.捕捉一张图片(mCamera.takePicture(null, null, mPicture);) 5.保存图片 6.释放相机对象 虽然步骤很简单,但是设计到和硬件打交道就会设计到兼容性的问题,同事Android平台下碎片原创 2017-05-23 17:44:11 · 1340 阅读 · 0 评论 -
android-ndk-r14b 编译renderscript的BUG(Window平台下)
android-ndk-r14b 编译renderscript的BUG报错如下报错原因是找不到路径,其实是ndk Windows平台下的bug, error: error opening ‘D:/func_scanner_optimize_fix_pdf_bug_branch/thirdparty/scan/ScanDemoExample/app/src/main/jni/D:/func_scan原创 2017-04-22 11:04:43 · 670 阅读 · 0 评论 -
RenderScript使用教程(一)
RenderScript使用教程(一)Java中使用RenderScript创建rs目录编写一个rs脚本文件// Needed directive for RS to work#pragma version(1)// Change java_package_name directive to match your Activity's package path#pragma rs java_p原创 2017-05-08 15:51:00 · 3250 阅读 · 2 评论 -
RenderScript使用教程(二)
RenderScript使用教程(二)NDK中使用RenderScript编写一个rs脚本文件实现灰度转换的代码#pragma version(1)#pragma rs java_package_name(com.example.android.rs.hellocomputendk)const static float3 gMonoMult = {0.299f, 0.587f, 0.114f};原创 2017-05-09 10:12:08 · 1991 阅读 · 1 评论 -
获取前台进程包名(ForegroundProcess)
获取前台进程包名(ForegroundProcess)在之前我们可以通过下面的方式获取到前台进程的包名public String getForegroundApp(Context context) { ActivityManager mActivityManager = (ActivityManager) mContext.getSystemService(Conte原创 2017-01-14 15:42:54 · 1251 阅读 · 1 评论