自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (1)
  • 收藏
  • 关注

原创 Java注解,以及在框架中的使用

在Android开发中经常会使用到各种框架,如Retrofit、ButterKnife等,而这些框架中往往通过定义一些注解提供给我们使用,并且通过遵循框架暴露的简单规则就可以很方便的使用框架从而简化我们的开发过程。因此,今天我们就了解下注解的定义以及如何使用。注解,为在代码中添加信息提供了一种形式化的方法,使我们可以在稍后的某个时刻非常方便的使用这些数据。Java中提供了三种类型的注解:@Override 表示当前的方法定义将覆盖父类中的方法。如果不小心拼错,编译器会发出错误提示。 @Depr

2020-06-13 13:12:35 439

原创 Android事件传递机制,与滑动冲突解决

Android的事件传递机制是处理控件触摸等事件需要基本掌握的,而且网上资料也很多,本文只是简要介绍一下。而前一段时间在项目中对于滑动控件的嵌套使用导致内部控件的滑动受到影响,因此,本文重点介绍一下滑动控件嵌套使用时的冲突解决。首先,介绍一下事件传递机制,Android的事件分发与传递过程是在Activity、ViewGroup、View中进行传递的,主要涉及dispatchTouchEvent()、onInterceptTouchEvent()、onTouchEvent()三个方法。dispatc

2020-05-16 22:58:55 752

原创 IdleHandler原理以及延迟初始化方案实现

很多人在Android项目中都会遇到希望一些操作延迟一点处理,一般会使用Handler.postDelayed(Runnable r, long delayMillis)来实现,但是又不知道该延迟多少时间比较合适,因为手机性能不同,有的性能较差可能需要延迟较多,有的性能较好可以允许较少的延迟时间。之前在项目中对启动过程进行优化,用到了IdleHandler,它可以在主线程空闲时执行任务,而不影响其他任务的执行。先看一下怎么用吧: Looper.myQueue().addIdleHa

2020-05-09 23:39:58 3376

原创 MP4文件格式解析,获取指定的Box信息

之前的一个项目中需要根据设备生成的视频中保存的信息,与手机视频做一些视频融合处理,因此,需要对MP4文件进行解析获取其中保存的信息。mp4是由一个个“box”组成的,大box中存放小box,一级嵌套一级来存放媒体信息。box的基本结构是:其中,size指明了整个box所占用的大小,包括header部分。如果box很大(例如存放具体视频数据的mdat box),超过了uint32的最大数...

2020-05-06 23:03:25 2005

原创 Android卡顿自动化检测实现

最近在看一篇Android文章的时候看到一种检测Android卡顿的线上实现方案,然后自己动手简单实现了下。它的原理源于Android的消息处理机制,一个线程不管有多少Handler,它只会有一个Looper存在,主线程执行的任何代码都会通过Looper.loop()方法执行。而在Looper函数中,它有一个mLogging对象,这个对象在每个message处理前后都会被调用。主线程发生了卡顿...

2020-05-04 17:09:20 996

原创 通过反射直接获取Application对象

在Android开发中Context或者Application对象使用是比较多的,在Activity或者Service中可以直接使用this,比较方便。但是如果在其他类中还需要传入Context对象,那么有没有方法可以直接获取Application对象呢?通过反射方式调用系统方法可以获取: public static Application getApplicationByRefl...

2019-05-05 18:26:21 2712 1

原创 Android应用内多语言切换

在app内有时候需要用户手动切换语言,以适应不同的使用场景,正常来说如果做了语言适配的话,app语言会跟随系统语言进行自动适配。但有时候希望在app内进行语言选择和设置。设置app的语言环境,直接上代码 /** * 修改APP语言设置 * @param locale 如Locale.CHINESE、Locale.ENGLISH等 */ publ...

2019-05-05 18:15:42 2287

原创 ffmpeg pip实现和指令分析

pip(picture-in-picture)是指一个画面在另一个画面中显示,那么如果有两个视频,怎么着实现这种效果使其作为一个视频播放呢?可以使用ffmpeg工具将两个视频合成为一个视频。ffmpeg是一款强大的音视频处理开源工具库。如上图所示,将两个视频合成一个:>ffmpeg -ss 0 -t 10 -i input1.mp4 -ss 5.3 -t 10 -i inpu...

2018-11-26 20:08:42 1198

原创 android 获取视频帧并保存

android提供了获取视频帧的方法,比如获取第一帧作为视频缩略图,或者获取指定位置的帧快速浏览视频内容。   MediaMetadataRetriever类提供了获取视频各种信息的方法。MediaMetadataRetriever mmr = new MediaMetadataRetriever();mmr.setDataSource(videoPath);String rotat...

2018-11-09 18:06:46 4211

原创 Mina框架-Android消息发送的服务端和客户端实现

Mina是Apache提供的socket框架。Mina提供基于Java NIO的Reactor网络模型API,并且封装了会话层、表示层,减轻开发者开发编码器、解码器的负担,即便不需要NIO的特性也能很大程序的提高开发效率。通过Mina内置的API可以方便地解决粘包缺包问题,方便的将字节报文转换为应用层消息报文,通过IDLE事件可以轻松开发心跳协议,支持并发地处理应用层报文,满足于文件的并发随机读写...

2018-07-18 19:27:11 1746

原创 Android全局对话框的几种实现方法

第一种方法:利用系统的dialog在dialog.show()语句前加入:dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);其中Dialog使用的Context必须为ApplicationContext(即getApplicationContext())。然后在AndroidMa

2018-01-19 19:33:43 5038 1

原创 Activity isFinishing()判断Activity的状态

在Activity中调用finish()或按返回键退出时,若有资源被其他对象引用不能释放(如context被某个单例对象引用或正在线程中被使用),则activity不会被调用onDestory()方法。isFinishing() 可用来判断Activity是否处于活跃状态(false)还是等待回收状态(true)。isDestroyed()

2018-01-19 17:14:18 10357 2

原创 Android一键锁屏功能的实现

前不久换了部新手机,因为原来用的手机原装了一键锁屏的应用,用的还习惯,新手机上没有,就想着找一个装上,后来在网上搜了下一键锁屏的实现,自己拿来改了改,安装后感觉还可以。现在分享出来。源码:1. MainActivity.javaimport android.app.admin.DevicePolicyManager;import android.content

2017-10-12 19:32:59 4262 4

原创 LocalBroadcastManager 的使用和源码分析

LocalBroadcastManager是Android Support v4包提供的一个工具,用来在同一个应用内的不同组件间发送Broadcast的。相对 BroadcastReceiver,它只能用于应用内通信,安全性更好,同时拥有更高的运行效率。注意,这是同一个应用,也就是其他应用就算和你共进程,也是无法互相发送广播的。因此可以确保隐私数据不会泄露。那既然是同一个应用,为什么还要多此一...

2017-07-07 20:52:32 756

原创 Android Https的安全使用

一.Https介绍HTTP协议是没有加密的明文传输协议,如果APP采用HTTP传输数据,则会泄露传输内容,可能被中间人劫持,修改传输的内容。HTTPS是HTTP over SSL,HTTP是应用层协议,TCP是传输层协议,在应用层和传输层之间,增加了一个安全套接层SSL。安全套接字层 (SSL)现在技术上称为传输层安全协议(TLS)。SSL/TLS层负责客户端和服务器之间的

2017-06-23 18:09:48 1433

原创 Android ListView记录和恢复滑动位置

有时在Activity或view切换时,需要恢复listView之前滚动到的位置。在ListView停止滑动后记录滑动到的位置:int scrollPos;int scrollTop;listview.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public

2017-06-15 12:28:02 853

原创 android获取视频、图片时添加防盗链

使用HTTP协议时,可以利用头信息中的Referer做防盗链。我们在一些网站的网页里访问图片的时候,在图片本站是可以正常看到的,但在外头就不能看到了,这是因为在http的header信息中的referer元素。还有是做统计的时候,我们需要统计出来用户是从哪个地方,什么时间访问网站的。在HTTP协议中,头信息中有一个很重要的选项 referer,referer 表示的是网页的

2017-06-13 17:50:34 4074

原创 Android设置Dialog的屏幕位置、背景、大小

1. 设置Dialog在窗口底部,且宽度最大。可以使用DialogFragment实现底部弹窗布局(http://blog.csdn.net/caroline_wendy/article/details/51792532 )。Window window = getDialog().getWindow();WindowManager.LayoutParams layoutParam

2017-06-13 10:10:03 14457

原创 自定义圆形进度条控件,及圆形渐变颜色实现

圆形进度条的实现网上搜有很多,项目中需要用到就拿来主义了,然后进行了适当的改进。 1. 自定义控件实现java类package com.xxx.views;import android.content.Context;import android.content.res.TypedArray;import android.graphi

2017-05-27 11:30:40 2026

原创 Android一种限制同时下载个数的下载管理器实现

在Android开发中有时候会遇到需要对下载过程进行一些限制,比如只能同时下载一个文件或者允许同时下载N个文件的情况,但是不能让用户在下载完成一个或几个之后才能再次点击。因此需要对下载任务进行保存,在下载完一个后自动下载任务队列中的下一个。这种情况也是我在实际开发中遇到过的,因此分享出来,有些地方可能还不完善,但基本使用没有问题。public class DownloadManager {

2016-11-10 19:09:36 1925

原创 Android中判断当前API的版本号

Android中由于不同版本API会有一些变化,导致一些较早版本可能不支持新的方法,或者某些功能处理过程不太一样,需要判断当前版本然后进行适当的处理。那么,如何判断当前API的版本号呢?例如判断api版本号是否大于等于19:    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {...}  其中

2016-05-31 13:48:43 60300

原创 获取Android设备上的所有存储设备

Android系统提供了Environment.getExternalStorageDirectory()接口获得存储设备的路径,但是这个接口往往给出的结果并不是我们想要的,在某些设备上它返回的是手机内部存储,某些设备上返回的手机外部存储。还有就是某些Android设备支持扩展多个sdcard,这个时候想要获得所有存储器的挂载路径,这个接口是没有办法办到的。那么,Android系统的文件管

2016-05-16 18:08:18 10324 2

转载 Android中线程的正确使用

最近看到一篇讲解Android线程及其使用的文章,比较详细,在此分享出来,感谢原作者的分享。----------------------------- 来源:http://android.jobbole.com/82440/ ---------------------------------------线程是程序员进阶的一道重要门槛。对于移动开发者来说,“将耗时的任务放到子

2016-05-05 19:25:46 10382 1

原创 Android中IntentService源码分析及其使用

在Android中,Activity不能直接进行耗时操作,一般可启动子线程来完成耗时操作,但这样做有个缺点,一旦Activity不再可见,Activity所在的进程成为后台进程,而内存不足时后台进程可能会被系统杀死。一般情况下,服务进程的优先级高于后台进程。因此,我们可以启动一个Service,并在Service中创建子线程执行耗时操作。Android帮我们提供了一个类来解决这个问题,Inte

2016-05-04 18:35:52 369

原创 HandlerThread源码分析及使用

Android中Handler在使用时,一般都在UI主线程中执行,因此Handler在处理消息时,不能做一些很耗时的操作,否则将出现ANR错误。因此,Android中专门提供了HandlerThread类,来解决该类问题。HandlerThread类源码在frameworks/base/core/java/android/os/HandlerThread.java文件中。源码:

2016-05-03 17:19:16 379

原创 Android中连续按两次返回键退出应用

方法1: private long exitTime; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) { if

2016-04-28 18:59:31 409

转载 Android开发中通过源码彻底理解ListView工作原理

Android开发中ListView是用的非常多的控件,然而对其原理只有一个大概的了解,具体是怎么实现的呢?网上的这篇文章写的比较详细。-------------转自:http://www.111cn.net/sj/android/91132.htm ----------------------------------ListView控件是Android应用开发中原生控件中最复

2016-04-26 19:23:38 811

原创 如何让Toast消息在应用退出后不再显示

Android中Toast的消息是放在一个队列中的,系统会依次从队列中取出并显示。而我们在应用中,有时候希望在应用退出后不再显示还未显示过的Toast消息。比如,在代码中访问某个网络接口,待其返回后给出相应的Toast信息提示用户,然而有时候我们应用已经退出(或不再前台)了,还没有返回结果,但仍然会提示Toast。那么,如何让应用在退出(或当前屏幕不显示)之后不再显示Toast消息,我们通过可

2016-04-19 14:09:21 3024

原创 判断广播是否已注册

在做Android项目时,有时候需要知道某个BroadcastReceiver是否已经注册,从而决定是发送广播让Receiver处理,还是通过其他方式处理。那么,如何判断某个广播接收者BroadcReceiver是否已经注册了呢?PackageManager 类中提供了 List queryBroadcastReceivers(Intent intent, int

2016-04-18 18:53:09 26619 4

Android一键锁屏功能的实现源码(含apk)

Android一键锁屏源码实现,apk文件可直接安装到手机使用

2017-10-12

空空如也

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

TA关注的人

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