Android
文章平均质量分 81
NoClay
立志成为一名段子手
展开
-
开发的过程中注意下自己的代码质量
背景大多数项目中,存在着或多或少的“屎山”代码,这些代码臭不可闻,又无法进行变更,让人每次看到都不仅眉头紧皱,直呼What’s up! 为了不让别人在接手自己代码时一边厚礼蟹,一边优美的中国话,所以在开发的过程中也要关注自己的代码质量问题。本文仅从Android开发角度阐述。魔法值代码中遗留魔法值,比如1000,0, 10, 1.0,这些值单独出现在某一处代码,会让人摸不着头脑,且如果涉及到传参协议的地方,如果用魔法值为key,很可能在解析数据的地方会出现错误的解析。这些既不美观,也存在风险。if原创 2021-10-22 17:51:06 · 258 阅读 · 0 评论 -
广播机制
摘要: 我们在编写Android程序时,常常会用到广播(Broadcast)机制。从易用性的角度来说,使用广播是非常简单的。不过,这个不是本文关心的重点,我们希望探索得再深入一点儿。我想,许多人也不想仅仅停留在使用广播的阶段,而是希望了解一些广播机制的内部机理。如果是这样的话,请容我斟一杯红茶,慢慢道来。品茗论道说广播(Broadcast内部机制讲解)侯 亮1 概述 我们在编写And转载 2017-08-07 14:30:45 · 685 阅读 · 0 评论 -
一个文本跑马灯的“学”案
不管三七二十一,我们先上车if (isMarqueeFadeEnabled()) { if (!mSingleLine && getLineCount() == 1 && canMarquee() && (absoluteGravity & Gravity.HORIZONTAL_GRAVITY_MASK) != Gravity.LEFT) { fina原创 2017-08-04 19:47:21 · 672 阅读 · 0 评论 -
关于应用debug版本的签名问题
写在前面本文介绍关于keystore的两种方法,即签名的使用方法,如有错误,欢迎指正。通过设置来添加一个签名文档在Android Studio中的做法是”Project Structure”中“Modules”中的应用的模块。然后选择”Signing”,点击”+”号,起名为“debug”,并在“Store File”里选择Demo中的debug.keystore,如下图然后在选择“Build Ty原创 2017-07-27 12:08:09 · 1611 阅读 · 0 评论 -
将一个应用安装为系统应用
如何将一个应用安装为系统应用首先,我们需要获得root权限 adb root其次,我们需要重新挂载 adb remount经过上边的两步,我们应该已经获取了足够的权限来进行下列操作,将你的apk,push到/system/app底下 adb push target.apk /system/app/targetDir/尝试重启 adb reboot应该这样子可以安装了如何更新一个原创 2017-07-26 18:16:55 · 3381 阅读 · 0 评论 -
关于PackagerManager的一些使用:判断手机上是否安装了某个应用
声明本文部分为转载内容注明出处:[http://blog.csdn.net/qinjuning本文中的错误欢迎指正转载部分:PackagerManager的介绍Android系统为我们提供了很多服务管理的类,包括ActivityManager、PowerManager(电源管理)、AudioManager(音频管理)等。除此之外,还提供了一个PackageManger管理类,它的主要职责是管理原创 2017-07-26 18:00:17 · 749 阅读 · 0 评论 -
aapt使用手册
转自——http://blog.csdn.net/electricity/article/details/6540247aapt 是android assert packaging tool的缩写,具体如下: 1.列出apk包的内容 aapt l[ist][-v] [-a] file.{zip,jar,apk} -v 以table形式列出来 -a 详细列出内容 例如:aap原创 2017-08-03 18:52:32 · 421 阅读 · 0 评论 -
高性能编码优化
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/43376527在前面几篇文章当中,我们学习了如何通过合理管理内存,以及高性能编码技巧的方式来提升应用程序的性能。然而实际上界面布局也会对应用程序的性能产生比较大的影响,如果布局写得糟糕的话,那么程序加载UI的速度就会非常慢,从而造成不好的用户体验。那么本篇文章我们就来学习一下,如何通过转载 2017-08-17 11:56:11 · 707 阅读 · 0 评论 -
ECGWaveView心电图
ECGWaveView这是一个心电图的自定义View 项目地址:https://github.com/NoClay/UtilsDemo属性自定义属性如下: <declare-styleable name="ECGWaveView"> <attr name="tableLineColor" format="color"/> 表格线的颜色 <attr nam原创 2017-08-09 18:46:52 · 1902 阅读 · 0 评论 -
adb push 失败提示 ‘Read-only file system’
$ adb push ./xxx /xxx/ failed to copy ‘./xxx’ to ‘/xxx/xxx’: Read-only file system解决方法: $ adb root restarting adbd as root $ adb remount remount succeeded $ adb push ./libba转载 2017-07-24 14:31:40 · 1650 阅读 · 0 评论 -
如何将zxing导入到Android Studio项目
如何将zxing导入到Android Studio项目我们这里新建一个demo来示范导入的动作!首先这里我们所依赖的是一个zxing的项目:建立Module导入zxing1. 下载这个zxing项目源码这个项目中有一些文件是我们所需要的,所以我们进行下载后解压放到某个文件夹2. 创建一个新的module具体的创建方法是File > new > new Module > Android Library原创 2017-08-08 15:22:11 · 5510 阅读 · 0 评论 -
RemoteView的使用
版权说明文章原载于:天意博文本文在此基础上进行了部分修改。AppWidget想要完全的理解RetmoteViews必须要说明一下Android Widet。Android widget 也称为桌面插件,其是android系统应用开发层面的一部分。Android中的AppWidget与google widget和中移动的widget并不是一个概念,这里的AppWidget只是把一个进程的控件嵌入到别外原创 2017-08-01 15:07:46 · 4665 阅读 · 0 评论 -
ZXing 二维码扫描
ZXing 二维码扫描ZXing开源项目地址:https://github.com/zxing/zxing将ZXing集成到工程中集成方法一Demo地址:https://github.com/fangmd/ZXingDemo下载上面的Demo添加 core.jar 或 ‘com.google.zxing:core:3.2.1’依赖将com.google.zxing 整个包(包含路径)复制到自己转载 2017-08-07 18:51:21 · 489 阅读 · 2 评论 -
Util方法:收集了一些常用的方法,一起free,open,share啊
说明本Util方法集为博主收集使用而来,不一定都使用过,如遇到一下问题请联系博主!方法错误=_=请一定联系我,大家互相帮助下!方法过时=_=这个讲真,太有可能了,同上!有新的方法想要给我的,太感谢了!方法库:https://github.com/NoClay/UtilsRepositoryAndroidUtil方法列表 限定符和类型 方法和说明 static Bitmap ge原创 2017-07-22 17:11:20 · 528 阅读 · 0 评论 -
解决打开Android Device Monitor一系列问题
问题1:解决打开Android Device Monitor之后一片空白问题描述将手机升级到Android 7.0后,打开android Device Monitor(DDMS)后,File Explorer中显示一片空白。如下:Android Device Monitor (DDMS)的版本如下:不管用monitor.bat(注ddms.bat已弃用)还是通过Android Studio中的图标启原创 2017-07-22 16:49:27 · 22796 阅读 · 0 评论 -
Android--利用相机或相册截取用户头像(解决了miui无法截取,以及部分机型拍照无返回Uri)【上】
声明:本文的Demo可用于从本地获取用户头像时使用,解决了有些手机系统相机拍照后获取不到拍摄照片的问题,以及解决小米miui系统调用系统裁剪图片功能camera.action.CROP后崩溃或重新打开app的问题。主活动文件ChooseImageMainActivitypackage com.example.no_clay.demolist.ChooseImage;import android.c原创 2016-06-06 17:35:56 · 3545 阅读 · 0 评论 -
Android--利用相机或相册截取用户头像(解决了miui无法截取,以及部分机型拍照无返回Uri)【下】
声明本文的Demo可用于从本地获取用户头像时使用,解决了有些手机系统相机拍照后获取不到拍摄照片的问题,以及解决小米miui系统调用系统裁剪图片功能camera.action.CROP后崩溃或重新打开app的问题。修改了部分机型拍照后返回的是缩略图的临时文件的问题。如何获得一张原图先看代码:UtilClass.requestPermission(ChangeMyDataActivityCopy.t原创 2017-04-20 16:57:45 · 2486 阅读 · 0 评论 -
Bluetooth
这是一个折线图的自定义View,用户可以自定义添加线的条数,具体使用方法如下。 项目地址:https://github.com/NoClay/UtilsDemoBluetooth这个SDK,封装了蓝牙通信相关的模块,使用了装饰者,单例,策略等设计模式,进行了抽象,蓝牙操作均通过Bluetooth进行,在UtilsDemo中利用SDK,实现了一个蓝牙聊天的功能,个人使用中,可以自由拓展。涉及权限蓝原创 2017-08-25 14:51:45 · 516 阅读 · 0 评论 -
FoldLineView折线图
FoldLineView这是一个折线图的自定义View,用户可以自定义添加线的条数,具体使用方法如下。 项目地址:https://github.com/NoClay/UtilsDemo原创 2017-08-17 09:45:54 · 413 阅读 · 0 评论 -
初识OkHttp(一)
OKHttpAndroid为我们提供了两种HTTP交互的方式:HttpURLConnection 和 Apache HTTP Client,虽然两者都支持HTTPS,流的上传和下载,配置超时,IPv6和连接池,已足够满足我们各种HTTP请求的需求。但更高效的使用HTTP可以让您的应用运行更快、更节省流量。而OkHttp库就是为此而生。OkHttp是一个高效的HTTP库: 支持 SPDY ,翻译 2017-09-04 17:44:35 · 720 阅读 · 0 评论 -
Android优化小技巧
本篇文章只是简单的总结下一些android的优化小技巧,欢迎有其他方式的同学联系我补充!im.noclay@gmail.comcell的预载对于一些列表,我们希望cell中的图片在出现在屏幕中的时候就是已经加载完毕的,或者是其他的需求。我们可以通过以下方式进行设置:拓展LayoutManager示例代码:LinearLayoutManager linearLayoutManager = ...原创 2019-05-16 19:50:17 · 214 阅读 · 0 评论 -
软件加速,潜在的掉帧攻击者
问题的暴露与探索使用universal图片库过程中发生了页面掉帧1. 迁移的图片库的用法导致问题,根据uc侧图片库用法进行了对图片适配器做了修改。2. 容器问题: 2.1 单独使用原生RecyclerView的页面 2.2 使用原生ImageView的页面 2.3 使用原生RecyclerView、ImageView页面 2.4 使用原生ListVie...原创 2019-02-27 20:29:58 · 281 阅读 · 0 评论 -
Demo安装后无图标但可以运行排查
自己写得测试应用安装后发现找不到应用图标,但是可以运行。可以尝试进行调试三部曲:1、AndroidManifest中application元素属性设置问题属性设置错误<application android:icon="@drawable/icon" android:label="@string/app_name">设置图标为icon,而上面的icon资源文件不存在解决方法...原创 2019-01-25 16:49:17 · 184 阅读 · 0 评论 -
如何看待Handler使用中的警告
如何看待Handler使用中的警告相信很多时候,我们都可以看到自己在使用Handler的过程中,好像得到了一个warning,虽然只是一个警告,但这总是让强迫症的我们有那么一丝丝不爽。那么应该如何解决这样的警告呢?如图可见:可以看到提示信息:This Handler class should be static or leaks might occur[这个Handler类应该是静态的,否则可能会发原创 2017-11-25 20:46:01 · 428 阅读 · 0 评论 -
夜间模式的切换的实现方式
声明整理自http://www.jb51.net/article/93852.htm本文中给出三种切换日间/夜间模式的方案用 setTheme 的方法让 Activity 重新设置主题;设置 Android Support Library 中的 UiMode 来支持日间/夜间模式的切换;通过资源 id 映射,回调自定义 ThemeChangeListener 接口来处理日间/夜间模式的切换。转载 2017-10-17 18:06:17 · 1439 阅读 · 0 评论 -
APK的安全(二)--如何防御
如何防御1.代码混淆原理:“用不能直接猜出含义的通用变量名和函数名a,b,c等”替换编译后程序包中“具有明显语义信息的变量名和函数名”。这样,通过逆向工程得到的只是 难以理解 的代码。从混淆的原理可以得出以下两点信息:重命名变量名可能会导致程序异常。因为程序是需要跟平台交互的,平台只会以固定类名来调用我们的app,这就涉及到需要屏蔽不能重命名的函数及类 proguard.cfg文件就是起这个作用的原创 2017-09-18 16:38:24 · 2461 阅读 · 0 评论 -
APK的安全性(一)--如何攻击
APK的安全性可以通过修改客户端文件篡改客户端行为。攻击者可以让客户端显示自己制作的钓鱼网站,偷取用户信息以下攻击部分摘自知乎:https://www.zhihu.com/question/41368839/answer/112182560防御部分摘自如下博文:http://blog.csdn.net/jiangwei0910410003/article/details/48415225http:/原创 2017-09-18 16:35:58 · 2549 阅读 · 0 评论 -
关于Crash和ANR以及应用保活
如何记录应用crash首先,引起应用crash的可能是我们对于NullPointer等未进行合理的处理导致的,所以这些抛出的异常没有被很好的处理,那么如果我们的应用发生了这样的crash,应该怎么去监听呢?解决办法:设置默认的未处理异常处理机制,例如:public class CrashHandler implements Thread.UncaughtExceptionHandler {原创 2017-08-30 17:11:45 · 1731 阅读 · 0 评论 -
图片加载库对比
图片加载库原理为什么要使用三级缓存如今的 Android App 经常会需要网络交互,通过网络获取图片是再正常不过的事了假如每次启动的时候都从网络拉取图片的话,势必会消耗很多流量。在当前的状况下,对于非wifi用户来说,流量还是很贵的,一个很耗流量的应用,其用户数量级肯定要受到影响特别是,当我们想要重复浏览一些图片时,如果每一次浏览都需要通过网络获取,流量的浪费可想而知所以提出三级缓存策略,原创 2017-08-30 17:45:07 · 462 阅读 · 0 评论 -
热修复初识
热修复技术APP提早发出去的包,如果出现客户端的问题,实在是干着急,覆水难收。因此线上修复方案迫在眉睫。概述基于Xposed中的思想,通过修改c层的Method实例描述,来实现更改与之对应的java方法的行为,从而达到修复的目的。阿里的基于C/C++层操控method指针的Dexposed,AndFix,以及QQ空间的基于dex分包的HotFix,后者和前者的热修复方案在原理上截然不同,可以说各有千原创 2017-08-29 16:24:10 · 501 阅读 · 0 评论 -
RxJava笔记2
背压问题背压是指在异步场景中,被观察者发送事件速度远快于观察者的处理速度的情况下,一种告诉上游的被观察者降低发送速度的策略简而言之,背压是流速控制的一种策略。需要强调两点:背压策略的一个前提是异步环境,也就是说,被观察者和观察者处在不同的线程环境中。背压(Backpressure)并不是一个像flatMap一样可以在程序中直接使用的操作符,他只是一种控制事件流速的策略。响应式拉取(reacti原创 2017-08-29 14:49:15 · 292 阅读 · 0 评论 -
RxJava笔记1
RxJava为什么要使用RxJava,因为RxJava能够简化逻辑,虽然代码量可能变多,但带来的是更好的逻辑体现。RxJava的异步实现它的实现方式是通过一种扩展的观察者模式来实现的。上面一根水管为事件产生的水管,叫它上游吧,下面一根水管为事件接收的水管叫它下游吧。两根水管通过一定的方式连接起来,使得上游每产生一个事件,下游就能收到该事件。注意这里和官网的事件图是反过来的, 这里的事件发送的顺序是先原创 2017-08-29 14:48:34 · 287 阅读 · 0 评论 -
ContentProvider的详解
转载自:http://blog.sina.com.cn/s/blog_49f62c350101hhhl.html一.Android四大组件Android四大组件是Activity, Service, Content Provider, Broadcast Receiver。Activity作为程序界面,直接与用户交互Service运行在后台,没有界面,完成特定的功能ContentProvider维护转载 2017-08-23 18:17:54 · 412 阅读 · 0 评论 -
杀进程场景
转载自:http://gityuan.com/2016/04/23/kill_process_case/一. 杀进程场景理解杀进程的实现原理, 介绍了杀进程的过程, 接下来本文介绍系统framework层, ActivityManagerService在哪些场景会调用ProcessRecord.java中的kill()方法来杀进程.void kill(String reason, boolean n转载 2017-08-23 17:12:04 · 5005 阅读 · 0 评论 -
ListView的Choice模式
ListView的Choice模式/** * Normal list that does not indicate choices */ public static final int CHOICE_MODE_NONE = 0; /** * The list allows up to one choice */ public static final int CHOICE原创 2017-05-16 15:58:00 · 432 阅读 · 0 评论 -
Android的消息机制概述
Android的消息机制概述Android的消息机制主要是指Handler的运行机制,Handler的运行需要底层的MessageQueue和Looper的支撑。MessageQue:消息队列,以队列的形式提供插入和删除的工作,内部利用单链表的数据结构来存储信息列表Looper:消息循环,无限循环的处理消息,没有则等待ThreadLocal:并不是线程,用来在不同的线程中互不干扰的存储并提供数据,通原创 2017-03-20 20:41:52 · 410 阅读 · 0 评论 -
View的事件体系
3.1 View基础知识3.1.1 什么是View我们在安卓中使用的各种View,如TextView和Button等等,其实都可以分为两类,一类是View,一类是ViewGroup,而ViewGroup内部可以嵌套子View,而子View可以是一个View,也可以是一个ViewGroup,同时需要注意的是ViewGroup继承自View。3.1.2 View的位置参数View具有四个位置属性: 1原创 2017-03-06 22:16:53 · 292 阅读 · 0 评论 -
Android--HelloWorld
px:表示屏幕实际的象素。例如,320*480的屏幕在横向有320个象素,在纵向有480个象素。 in:表示英寸,是屏幕的物理尺寸。每英寸等于2.54厘米。例如,形容手机屏幕大小,经常说,3.2(英)寸、3.5(英)寸、4(英)寸就是指这个单位。这些尺寸是屏幕的对角线长度。如果手机的屏幕是3.2英寸,表示手机的屏幕(可视区域)对角线长度是3.2*2.54 = 8.128厘米。读者可以去量一量自己的手机屏幕,看和实际原创 2016-03-09 00:37:33 · 309 阅读 · 0 评论 -
Android--五大布局
为了适应各式各样的界面风格,Android系统提供了5种布局,这5种布局分别是:LinearLayout(线性布局)TableLayout(表格布局)RelativeLayout(相对布局)AbsoluteLayout(绝对布局)FrameLayout(框架布局)利用这五种布局,可以在屏幕上将控件随心所欲的摆放,而且控件的大小和位置会随着屏幕大小的变化作出相应的调整。下面是这五个布局在View的继承转载 2016-03-10 19:56:28 · 392 阅读 · 0 评论 -
Android--活动创建&简单布局
一、活动的创建在所属的包中创建新的活动类 项目中的任意活动都应该重写Activity中的onCreate()方法,代码如下: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } 二、布局文件的创建这里使用原创 2016-03-13 13:59:19 · 911 阅读 · 0 评论