- 博客(57)
- 资源 (5)
- 收藏
- 关注
原创 Android GradientDrawable angle 属性值的具体释义
网上没有解释的很详尽的,正好需要。直接把源码拷出来,记录一下,方便以后使用:1.角度与值的对应关系: /** * Update the orientation of the gradient based on the given angle only if the type is * {@link #LINEAR_GRADIENT} */ private void updateGradientStateOrientation() {
2021-04-21 17:36:21 926
原创 抓包 : Charles + Mac + Android SDK level above 7.0 + Https/Http
1.Mac 使用命令ifConfig 获取地址手动进行代理配置,主机名配置上述ip地址,端口号配置8888(与Charles设置一致)保存后,Charles弹出是否允许接入弹窗,选择allow.2.选择Charles --> Preference --> Viewers,取消勾选下面两个Tab,用于看请求链接参数以及返回数据。3.Charles在 安卓7.0以上手机抓包,遇到以下问题:You may need to configure your browser or applic
2021-01-21 22:12:15 276
原创 日期-SimpleDataFormate使用
1.示例代码:Date date1 = new Date(System.currentTimeMillis());SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM月dd日 EEEE",Locale.CHINA);String time = simpleDateFormat.format(date);结果:12月12日...
2019-12-12 18:21:18 1148
原创 Git仓库迁移(包括分支以及提交记录的迁移)
要求Git仓库迁移:把一个Git上的工程,从A目录迁移到B目录,要求包含代码,所有的分支以及所有的提交记录步骤找一个文件夹,把A目录的代码clone一个bare的版本,这里面包括了分支以及提交记录还有代码(注意:此步骤clone的是线上代码,跟本地无关,所以要保证线上代码是最新的)。git clone --bare A目录地址(旧地址)进入到该文件夹中(clone完成会生成一个以...
2019-10-29 10:45:14 1088
原创 AndroidStudio Kotlin中添加日志快捷键
在AndroidStudio的java类中,输入logd里可能出现全部log日志调用(在Live Templates中设置),最近在Kotlin的类中,发现这个不好使了,原来是AndroidStudio没有对Kotlin进行设置,所以需要如下设置:1.下载文件 AndroidLogKotlin.xml:https://gist.github.com/goodev/b691dd936d558878...
2019-10-11 10:44:02 1204
原创 计算机基础之位移运算
1.前言二进制整数最终都是以补码的形式呈现的。正数的最高位是0,负数的最高位是1。正数的原码,补码,反码都一样。负数的反码为原码取反,补码为反码加1。位移运算有两种,一种是带符号位移运算一种是不带符号位移运算。2.带符号位移运算(<< 与 >>)带符号位移运算分为<<(左移)与>>(右移)。这两种位移,都是针对补码运算,符号位均参与位移运算,除...
2019-08-12 21:14:33 4644
原创 Android事件分发机制
1 View基础概念View是所有Android控件的基类,View本身可以是单个控件或者是多个控件组成的一组控件。1.1 Android中的坐标系以及位置参数(1) Android中的坐标系是以手机屏幕的左上角为原点,x轴向右为正方向,y轴向下为正方向。(2) View的四个属性:top left bottom right 分别是 相对于View的父容器来说 对应了View的左上角纵坐标...
2019-08-11 21:46:17 138
原创 View的绘制过程
1.View的绘制主要指onMeasure(),onLayout(),onDraw()的过程。measure()确定View的测量宽高,layout()确定View的最终宽高和四个顶点的位置。draw()负责把View绘制到屏幕上。1.1 Measure过程1.1.1 View的Measure过程View通过调用measure()方法来完成测量,但是measure()是一个final方法,...
2019-08-11 20:54:38 197
原创 Gradle DEBUG调试
1.在终端当前工程的根目录下输入命令(调试命令),先stop当前daemon,开启debug模式之后会一直阻塞在此,等待另一个进程来连接(根据TCP/IP协议进行连接)。如果没有别的进程来连接,会一直死锁阻塞,想要退出,只能kill当前进程。./gradlew --stop./gradlew assembleDebug --quiet --stacktrace -Dorg.gradle.d...
2019-08-07 16:47:17 6206
原创 Bitmap的加载与缓存
1.前言Bitmap的使用一共有两个需要注意的地方,一个是加载,一个是缓存。缓存的策略一般有两种,LruCache与DiskLruCache。2.Bitmap的加载方式(1).Bitmap提供了四种加载图片的方式 BitmapFactory.decodeResource();//从资源中加载 BitmapFactory.decodeFile();//从文件中加载 ...
2019-08-04 15:23:12 292
原创 Window与WindowManager
1.简单介绍Window与WindowManagerAndroid中所有视图都是通过Window来实现的,不管是Activity Dialog还是Toast。他们都是附加在Window上,所以Window是View的直接管理者。Window是一个抽象类,它的实现类是PhoneWindow。WindowManager是外界访问Window的入口。2.简单介绍Window与WindowManage...
2019-07-28 22:59:20 178
原创 Android角度分析线程与线程池
1.什么是线程在操作系统中,线程是操作系统调度的最小单元(也就是CPU调度的做小单元)。线程本身是一种受限的资源,相应的创建跟销毁都有开销。2.线程的几种状态一个线程从创建到死亡一共有5中状态,分别是:NEW(新建状态):线程创建未启动RUNNABLE(就绪状态):调用start()之后的状态,已经进入线程队列中排队,等待获取资源RUNNING(运行状态):即拿到了CPU的使用权...
2019-07-20 16:21:29 191
原创 从源码分析Android 消息机制(Handler)
1.Android 消息机制–>Handler概述Android的消息机制一般是指Handler,Handler的运行需要底层的MessageQueue以及Looper的支撑。MessageQueue是一个消息队列,以队列的形式提供插入和删除数据,同时它是是通过单链表实现数据的存储。MessageQueue只是一个消息的存储单元,不能处理消息,而Looper就填补了这个功能。Looper...
2019-07-14 22:46:24 150
原创 SharePreferences两个提交方法:commit与apply的区别
1.先说区别:commit()提交成功返回true,apply()提交没有返回值apply()提交失败的时候,不会有任何提示apply会把数据先原子提交(什么是原子提交:就是事务的所有修改动作,要么全部发生,要么一个都不发生)到内存,然后异步提交到磁盘上。而commit()是先提交到内存中然后同步提交到磁盘上。内存存储都是更新Map的值(具体请看下面
2019-07-01 21:36:14 1705
原创 Android IPC(跨进程通信)
目前在开发一部分模块的时候,碰到了一些跨进程通信的问题,查阅了相关资料,特此记录。1.首先说明进程与线程的区别:线程是CPU调度的最小单元,同时线程是一种有限的系统资源。进程是一个执行单元。一个进程可以包含多个线程(也可以只有一个,就是我们一般使用的主线程,可以操作UI)。但是如果在这个线程中执行大量的耗时任务,会导致界面无法响应,出现ANR,所以一般会在进程中创建多个线程,用主线程之外的线程...
2019-06-28 19:40:46 183
原创 Mopub广告 SDK 更新到5.6.0出现 amazon moat-sdk 连接Forbidden问题
Mopub 广告 SDK更新到5.6.0本次更新与之前的更新差异比较大,主要问题在于本次mopub使用了amazon的依赖,一直下载不成功,查了很多文章以及StackOverflow的很多回答,找到了解决方案,特此记录。1.问题:在build.gradle添加依赖maven { url “https://s3.amazonaws.com/moat-sdk-builds” }之后,一直显示如下错...
2019-03-28 11:18:32 1310 2
原创 Map:遍历与删除
1.遍历Map:(1)通过map.keySet()拿到key,需要获取value,再通过key获取value。一般有两种写法,一种是使用iterator遍历,一种是直接遍历。示例代码如下://直接遍历for (String key : mHashMap.keySet()) { value = mHashMap.get(key);}//iterator遍历for(Iterator...
2019-01-31 17:55:35 11497
原创 使用静态工厂方法需要注意的地方
1.静态工厂方法优于构造器的原因:(1).静态工厂方法可以有名称(即方法名)。如果构造器的参数没有确切的描述被返回的对象,那么有名称的静态工厂方法会更容易使用。(2).不必在每次调用的时候都创建一个新的对象。(3).可以返回原返回类型的任何子类型的对象(上转型)。(4).在创建参数化类型实例的时候,会使方法变的更加简洁(相对来说)。缺点:它们都不能扩展到大量的可选参数,如果碰到...
2019-01-11 13:46:51 355
原创 Java 继承
声明一个子类继承父类,一般会继承以下内容:1.子类继承父类的非private的方法以及成员变量(假设父类有一个变量a,那父类可以不用声明就可以调用这个变量a)2.子类可以有自己新的方法以及成员变量(单独在子类中声明的,比如父类中没有变量a,但是可以在子类中单独声明变量a)3.如果子类中的方法或者变量名跟父类中的重复了,在子类的调用中,以子类本身的方法为准,父类的方法会被自动隐藏(假设父...
2019-01-10 21:23:05 118
原创 Android性能优化篇
1.布局优化(1)有选择的使用性能低的布局,比如RelativeLayout,在绘制布局的过程中,会占用更多的CPU时间。如果使用LinearLayout(或者FramLayout)跟RelativeLayout能达到相同的目的的话,那就用LinearLayout。但是使用LinearLayout时需要增加层级嵌套与使用RelativeLayout相比的话,还是使用RelativeLayout...
2019-01-07 17:44:09 268
原创 AndroidStudio全局依赖aar文件
在工程的最外层build.gradle文件中添加存放aar文件的lib目录的绝对路径(假设当前在external/sdk/lib文件中放置aar文件):allprojects { repositories { flatDir { dirs rootProject.rootDir.absolutePath + "/external/sdk/li...
2018-07-17 14:55:20 825
原创 linux环境下安装jDK,Android Studio,SVN以及Git
Window运行实在是太慢,昨天终于换了Linux系统,不为别的,编译速度快就行。一.安装JDK1.去官网下载2.解压到home文件夹的java目录下,当前jdk的路径为/home/用户名/java/jdk1.8.0_172(这个路径很重要,一会设置环境变量的时候会用到,路径不匹配,配置结束使用java -version时,会出现找不到java command的错误)3.用vi命令编辑/etc/p...
2018-06-02 12:29:35 680
原创 2018年,继续写博客
今天偶然登录CSDN,发现上一次写博客是一年半之前。那个时候真的是小白,会的也少,学习一个知识点特别兴奋,恨不得多写几个demo,记住这个知识点。开始工作之后,要写模块,写项目。一般是工期短,任务多,知识点就呈现出井喷式的,根本多到数不过来,博客慢慢就不写了,只是简单做一些笔记。工作快2年了,平时没感觉怎么样,看看之前写的文章就一下子觉得学到了很多,成长了很多。我很感谢我公司的同事和前...
2018-03-16 14:38:51 317 3
原创 Git 常用命令行
Git常用命令:1.git 创建版本:创建一个空的目录,在此添加 git init,即创建成功(创建版本时,Git会自动创建一个分支,即master分支)。2.git提交代码git add. (将更改添加到暂存区)git commit -m "本次提交内容" (将暂存区的所有内容提交到当前分支)3.git clone代码(ssh地址 在GitLab上查找)git ...
2018-03-16 12:14:16 269
原创 在Android Studio中读取properties文件
在开发过程中,如果有一些参数变量是需要经常改动的,就可以放在properties的配置文件中,而不用写死在代码中。如果想要修改这些参数,只需要在配置文件中修改即可。以Android Studio为例:1.首先在工程中建立assets文件夹,在文件夹中建立properties文件。首先,右键点击工程的app,选择New—>Folder—>Assets Folder,成功新建Ass...
2016-08-08 12:26:57 7041
原创 使用Collections.sort对List进行排序
对List用sort()方法进行排序,一共有两种方法(这里是在Android Studio中实现的)。1.让List内部的类实现Comparable接口,再重写compareTo()方法,在这个方法中处理排序过程。List的内部的类如下:public class User implements Comparable { private Integer age;//注意,这里的类
2016-08-04 17:02:09 1427
原创 Retrofit实现异步访问数据
使用Retrofit访问API接口,相对更安全也更强大方便。一般适用于通过API接口下载Json或者Xml的数据,下载完成能直接解析成Java类,通过类的对象直接获得数据。相比Retrofit1.9而言,Retrofit2.0在访问逻辑上做了调整,统一了异步与同步的调用模式。下面以Retrofit2.0,以解析Json数据为例。一.配置1.在AndroidManifest.xml加入网络请
2016-08-02 18:23:51 2213
原创 将Activity设置成透明的或者弹窗形式
实现Activity的两种自定义属性:1.将Activity的背景设置成透明的或者是半透明的,这样可以看到Activity之下的界面显示的是什么但是不能点击。实现全透明:首先在styles.xml中添加全透明的style:style name="myTransparent" parent="@android:style/Theme.Translucent.NoTitleBar"
2016-07-26 12:32:51 14605
原创 Animator的基本用法
这里仅仅介绍Animator的一些基本的用法:说到Animator,最重要的最常用的的就是ObjectAnimator类,因为这个类可以对任意View的任意属性进行操作。首先以ImageView为例,以下所有的操作都针对ImageView:1.只展示一种动画效果(只改变控件对象的一个属性),代码如下:ObjectAnimator animator=ObjectAnimator.
2016-07-25 20:34:12 6842
原创 怎样在Android Studio中导入Module
一般Module的功能类似于jar包的功能,封装好了某些功能等着被调用,想要导入Module,首先要确定你导入的是Module。步骤如下:1.点击File—>Project Structure—>"+"号,选择import Gradle Project,选择module所在的路径然后选中它即可。(如果想创建新的Module,改成选择Android Library即可)。2.一般这样导入之后
2016-07-15 14:58:03 1072
原创 实现Progressbar的背景图片旋转
在网络请求拿取数据的过程中,如果出现网速太慢以及数据量太大的情况,一般加入一个要求用户先进行等待的界面,等到数据全部拿到再进行展示效果会好一些,展示如下。1.首先在drawable文件夹下新建一个animated-rotate标签的xml文件,如下:xml version="1.0" encoding="utf-8"?>animated-rotate xmlns:androi
2016-07-07 11:50:05 2249
原创 详解Git的使用以及如何使用AndroidStudio上传工程到GitHub
Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目,说白了就是管理代码的。一般公司中的稍大型项目都不是一个人完成的,必须要几个人合作同时进行,如何高效的协调代码进度合并代码,就需要用到Git。代码合并之后一般会上传到云端(也就是每个公司的服务器端),但是我现在没有服务器可以利用,所以就以GitHub为例实现这个过程。如果换成是服务器的话(一般是GitLab),以下步骤
2016-04-22 18:20:03 685
原创 Android中如何在代码中动态设置控件的高度以及宽度
有的时候我们为了让app的界面看起来更美观合理,会比较严格的规定一些控件的宽度以及高度。以一张大图为例,比如我们希望这张大图的宽度与手机屏幕的宽度相同,而希望它的宽度:高度=2:1(也可以是1.9:1),这样就不能简单的在xml文件中进行设置,就需要在代码中进行动态修改。1.首先,因为每个手机的屏幕大小不同,所以先通过代码获得当前手机的长宽(单位都是像素)。一般会在onCreate()中进
2016-04-19 15:28:12 63539 2
原创 如何安装Android Studio
一般安装一次Android Studio就用很长时间,想要再次安装的时候有很多地方又不太确定,这里在这里整理一下,下次就会方便很多,不用东翻西找。首先需要把所有东西都备好,jdk,Android Studio安装包,SDK。jdk都配置好才能安装Android Studio,要不然会出现Android Studio连接不到jdk错误。附一下jdk下载的地址:http://www.oracl
2016-04-05 17:29:19 607
原创 Fresco使用详解
在一些项目中,典型的比如视频类的APP都会显示一些图片,通过图片的点击响应相应的事件,而这些图片的获取都需要从服务器拿取数据,就用到了网络访问。而在这个过程中,是否网络访问成功,是否能拿到数据,网络加载过程中显示什么,网络不好时重新加载显示什么,多种情况下,需要考虑很多问题,而Fresco非常好的解决了这些问题,下面实现一下Fresco。首先,新建一个AndroidStudio的工程,在bui
2016-03-24 17:59:20 3665
原创 AndroidStudio使用常见问题(实时更新)
AndroidStudio现在虽然已经被Google完善的比原来了,但是毕竟是刚出不久,开发过程中总会出现很多莫名其妙的小问题,来总结一下,以后解决能更快。1.今天在使用Fresco的时候,导入Fresco的包时出现了以下问题:Error:Execution failed for task ':app:processDebugManifest'.> Manifest merger ...
2016-03-24 16:18:02 4840
转载 SpannableString属性
1、BackgroundColorSpan 背景色 2、ClickableSpan 文本可点击,有点击事件 3、ForegroundColorSpan 文本颜色(前景色) 4、MaskFilterSpan 修饰效果,如模糊(BlurMaskFilter)、浮雕(EmbossMaskFilter) 5、MetricAffectingSpan 父类
2016-03-23 10:56:03 279
原创 使用AndroidMultiChannelBuildTool进行多渠道批量打包
最近出现了一个多渠道打包的工具非常好用,是 AndroidMultiChannelBuildTool,这个工具打包只需要几步,也不用在Gradle中进行修改,同时使用一次所有的包都出来了。首先附一下这个工具的下载地址,在GitHub上:https://github.com/GavinCT/AndroidMultiChannelBuildTool。下面是操作步骤:1.下载完成的文件夹内容如下,同
2016-03-07 10:33:33 1054
转载 color.xml
放在values文件夹下面:xml version="1.0" encoding="utf-8" ?>resources>color name="white">#FFFFFFcolor>白色 -->color name="ivory">#FFFFF0color>象牙色 -->color name="lightyellow">#FFFFE0color>亮黄色-->color name=
2016-03-03 17:13:16 431
Android 开发艺术与探索(高清完整版)
2018-03-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人