dashen的博客

失败是注定的,成功只是偶然

无需自定义View,彻底放弃shape,selector吧

前言 作为一个android程序员,对于shape、selector这两个标签一定不陌生。每当UI设计师给我们设计出一个个button背景的时候,我们就需要去drawable文件夹下去新建一个bg_xxx.xml,然后很多时候区别仅仅是一个边框的颜色或者填充的颜色。这就导致了很多非常相似...

2018-09-11 00:28:13

阅读数 499

评论数 2

android基于libjpeg-turbo的图片压缩框架

Light a lightweight image compress framework for Android based on libJpeg. 一个基于libJpeg的压缩图片框架, 支持配合rxjava使用。 可以一行代码解决图片下载->压缩->显示的过程。 d...

2018-01-26 16:47:49

阅读数 1132

评论数 0

仿微信长按菜单

FloatMenuA menu style pop-up window that mimics WeChat。仿微信的长按菜单。效果如下引入方法:dependencies { .... compile 'com.noober.floatmenu:common:1.0.2' } 使...

2017-12-21 18:19:58

阅读数 2507

评论数 0

Android 一个轻量级的自动恢复内存数据框架

通过简单的接入代码自动对Activity 或者Fragment进行内存恢复操作

2017-12-14 17:58:26

阅读数 704

评论数 0

Android图片压缩,自己编译libjpeg

之前的博客提到过关于图片压缩的方法: Android 图片压缩,Bitmap优化 Android原生的压缩方法,不在乎两种:通过设置simpleSize根据图片尺寸压缩图片;通过Bitmap.compress方法通过压缩图片质量,去压缩。但是我们当我们对图片质量和图片文件大小同时存在要求时,我...

2016-12-26 19:50:00

阅读数 6718

评论数 10

对Android进程守护、闹钟后台被杀死的研究

最近公司要求要做一个提醒功能,一说到提醒,那肯定就和闹钟差不多的意思,那么肯定就要用到AlarmManager。 但是,我们知道,android系统很坑爹,不同的厂商对rom的定制,导致对进程的管理都不太相同,但是如何做到在各个手机上都能一直保持后台执行呢?。 为了解决这个问题,特地去研究了各种保...

2016-10-11 20:20:42

阅读数 14103

评论数 18

解决mFactorySet在Android Q中被非SDK接口限制的问题

mFactorySet问题由来 mFactorySet这个值如果熟悉的同学一定知道,通常我们在使用换肤框架的时候,需要使用我们自定义的LayoutInflater.Factory类,这时候就需要调用LayoutInflater的setFactory方法。而我之前编写的一个基于Factory去给原生...

2019-08-23 11:01:53

阅读数 23

评论数 0

DSL形式的基于retorfit、协程的网络请求封装

前言 协程正式版出来已经有一段时间,相对于线程,协程占用更小的资源同时也可以更加方便的进行各个线程的切换。从retrofit2.6.0开始,retrofit直接可以支持哦诶和协程的使用。那么接下来就给大家展示一下如何快速封装一个基于协程的dsl形式的请求方法。 文章内容以目前较为常用的mvp架构为...

2019-08-06 16:19:59

阅读数 45

评论数 0

java kotlin解析2018-12-28T09:17:30.875+0000这种类型的时间

fun praseTime(time: String): String { val df = SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSSZ", Locale.CHINA) val result: Dat...

2019-01-16 10:46:40

阅读数 109

评论数 0

android权限判断时shouldShowRequestPermissionRationale的使用

shouldShowRequestPermissionRationale用于处理用户勾选下次不再询问的权限情况: 如果用户在过去拒绝了权限请求,并在权限请求系统对话框中选择了 Don’t ask again 选项,此方法将返回 false。如果设备规范禁止应用具有该权限,此方法也会返回 false...

2018-11-23 14:50:46

阅读数 114

评论数 0

安卓apk一键反编译工具

安卓apk反编译工具,一键反编译AndroidMainfest.xml layout res等资源以及class文件 使用效果 使用方法 1:复制apk文件到android-apk-decompile所在目录 2:windows:直接把apk文件拖入bat即可 mac:执行shell...

2018-11-21 14:09:08

阅读数 467

评论数 0

IdleHandler优化Activity启动时间

IdleHandler是主线程在开始加载页面完成后调用的方法,可以提高性能: @Override protected void onResume() { super.onResume(); Looper.myQueue().addIdleHandler(() -> ...

2018-11-14 10:59:28

阅读数 273

评论数 0

android studio 3.1.2以上查看app的控件布局

使用uiautomatorviewer即可。 路径是/Users/xiaoqi/Library/Android/sdk/tools/bin/uiautomatorviewer

2018-09-05 16:35:53

阅读数 2629

评论数 0

Android 常用换肤方式以及原理分析

Android 换肤 常用方法 1.通过Theme切换主题 通过在setContentView之前设置Theme实现主题切换。 在styles.xml定义一个夜间主题和白天主题: <style name="LightTheme&qu...

2018-09-05 13:49:01

阅读数 868

评论数 0

判断textview是否变成两行

TextView tv2 = (TextView) findViewById(R.id.tv2); ViewTreeObserver vto2 = tv1.getViewTreeObserver(); vto2.addOnGlobalLayoutListener(n...

2018-07-18 15:07:30

阅读数 490

评论数 0

ARouter there's no route matched解决方法

原因 ARouter是一个组件化开发常用的一个路由框架,它可以很方便的让我们进行组件之间的跳转。但是随着module的增多我们很容易出现there’s no route matched的错误,出现这种问题会让我们在开发的时候很麻烦,却又没有报错的日志让我们查看。 在百度了很多之后发现网上的方法...

2018-06-11 14:40:02

阅读数 8222

评论数 3

通过aspectj对Android数据统计的简单实现

功能需求 一个项目实现之后,我们并不知道用户对某个部分的使用频率是对少,为了更好的来对项目各个功能的使用统计,我们需要做一些数据埋点的功能,也就是每当用户点击按钮的时候,都对这次点击进行保存处理,然后再之后统一上传到服务器,进行数据分析。 实现思路 条件 假如,当前有两个方法进行数...

2018-03-21 14:55:02

阅读数 739

评论数 1

android 获取视频某一时间的帧,并获取bitmap

方法如下,注意单位是微秒us MediaMetadataRetriever mmr = new MediaMetadataRetriever(); mmr.setDataSource(mp4Path); //获取第一帧图像的bitmap对象 单位是微秒 Bitma...

2018-01-18 13:17:18

阅读数 3853

评论数 0

android 使用mediaplayer播放视频的时候设置请求头header

很简单,使用如下代码就行 Uri uri = Uri.parse("http://47.96.22.18:8002/test.pg1"); Map headers = new HashMap<>(); headers.put("...

2018-01-18 13:14:44

阅读数 1674

评论数 0

使用MediaCodec硬解码h.265视频及音频进行播放

h.265这个视频是很多播放器不支持的,就算是bilibili开源的ijkplayer也不能直接播放,需要自己去重新编译 才可以支持。 这里通过这个demo来演示一下如何硬解码视频,播放h.265视频,其实编码的视频同样道理。 视频的播放主要在surfaceView中显示,而解码过程则在音频...

2018-01-06 17:56:17

阅读数 6104

评论数 3

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