Android高阶
文章平均质量分 68
Windy_Rinbow
Cease to the struggle and cease to the life
展开
-
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 · 896 阅读 · 0 评论 -
在Android Studio中读取properties文件
在开发过程中,如果有一些参数变量是需要经常改动的,就可以放在properties的配置文件中,而不用写死在代码中。如果想要修改这些参数,只需要在配置文件中修改即可。以Android Studio为例:1.首先在工程中建立assets文件夹,在文件夹中建立properties文件。首先,右键点击工程的app,选择New—>Folder—>Assets Folder,成功新建Ass...原创 2016-08-08 12:26:57 · 7019 阅读 · 0 评论 -
在Android studio的一个新建的Activity中添加Toolbar以及相应的功能添加
费了好大的劲才研究明白,中间出现了许多错误,其实一共就三步。1.在Activity的xml布局文件中添加如下代码:<android.support.v7.widget.Toolbar android:id="@+id/toolbarbar" android:layout_height="wrap_content" android:layout_width="ma原创 2015-12-15 10:09:48 · 2448 阅读 · 1 评论 -
Android学习路线指南
转自http://blog.csdn.net/singwhatiwanna/article/details/49560409#comments作者:任玉刚 百度公司Android资深工程师前言看到一篇文章中提到“最近几年国内的初级Android程序员已经很多了,但是中高级的Android技术人才仍然稀缺“,这的确不假,从我在百度所进行的一些面试来看,找一个适合的高级A转载 2015-12-24 14:54:38 · 376 阅读 · 0 评论 -
Android性能优化篇
1.布局优化(1)有选择的使用性能低的布局,比如RelativeLayout,在绘制布局的过程中,会占用更多的CPU时间。如果使用LinearLayout(或者FramLayout)跟RelativeLayout能达到相同的目的的话,那就用LinearLayout。但是使用LinearLayout时需要增加层级嵌套与使用RelativeLayout相比的话,还是使用RelativeLayout...原创 2019-01-07 17:44:09 · 246 阅读 · 0 评论 -
SharePreferences两个提交方法:commit与apply的区别
1.先说区别:commit()提交成功返回true,apply()提交没有返回值apply()提交失败的时候,不会有任何提示apply会把数据先原子提交(什么是原子提交:就是事务的所有修改动作,要么全部发生,要么一个都不发生)到内存,然后异步提交到磁盘上。而commit()是先提交到内存中然后同步提交到磁盘上。内存存储都是更新Map的值(具体请看下面原创 2019-07-01 21:36:14 · 1660 阅读 · 0 评论 -
Android IPC(跨进程通信)
目前在开发一部分模块的时候,碰到了一些跨进程通信的问题,查阅了相关资料,特此记录。1.首先说明进程与线程的区别:线程是CPU调度的最小单元,同时线程是一种有限的系统资源。进程是一个执行单元。一个进程可以包含多个线程(也可以只有一个,就是我们一般使用的主线程,可以操作UI)。但是如果在这个线程中执行大量的耗时任务,会导致界面无法响应,出现ANR,所以一般会在进程中创建多个线程,用主线程之外的线程...原创 2019-06-28 19:40:46 · 167 阅读 · 0 评论 -
从源码分析Android 消息机制(Handler)
1.Android 消息机制–>Handler概述Android的消息机制一般是指Handler,Handler的运行需要底层的MessageQueue以及Looper的支撑。MessageQueue是一个消息队列,以队列的形式提供插入和删除数据,同时它是是通过单链表实现数据的存储。MessageQueue只是一个消息的存储单元,不能处理消息,而Looper就填补了这个功能。Looper...原创 2019-07-14 22:46:24 · 138 阅读 · 0 评论 -
Android角度分析线程与线程池
1.什么是线程在操作系统中,线程是操作系统调度的最小单元(也就是CPU调度的做小单元)。线程本身是一种受限的资源,相应的创建跟销毁都有开销。2.线程的几种状态一个线程从创建到死亡一共有5中状态,分别是:NEW(新建状态):线程创建未启动RUNNABLE(就绪状态):调用start()之后的状态,已经进入线程队列中排队,等待获取资源RUNNING(运行状态):即拿到了CPU的使用权...原创 2019-07-20 16:21:29 · 177 阅读 · 0 评论 -
Bitmap的加载与缓存
1.前言Bitmap的使用一共有两个需要注意的地方,一个是加载,一个是缓存。缓存的策略一般有两种,LruCache与DiskLruCache。2.Bitmap的加载方式(1).Bitmap提供了四种加载图片的方式 BitmapFactory.decodeResource();//从资源中加载 BitmapFactory.decodeFile();//从文件中加载 ...原创 2019-08-04 15:23:12 · 280 阅读 · 0 评论 -
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 · 169 阅读 · 0 评论 -
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 · 187 阅读 · 0 评论 -
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 · 123 阅读 · 0 评论 -
Retrofit实现异步访问数据
使用Retrofit访问API接口,相对更安全也更强大方便。一般适用于通过API接口下载Json或者Xml的数据,下载完成能直接解析成Java类,通过类的对象直接获得数据。相比Retrofit1.9而言,Retrofit2.0在访问逻辑上做了调整,统一了异步与同步的调用模式。下面以Retrofit2.0,以解析Json数据为例。一.配置1.在AndroidManifest.xml加入网络请原创 2016-08-02 18:23:51 · 2201 阅读 · 0 评论 -
实现Progressbar的背景图片旋转
在网络请求拿取数据的过程中,如果出现网速太慢以及数据量太大的情况,一般加入一个要求用户先进行等待的界面,等到数据全部拿到再进行展示效果会好一些,展示如下。1.首先在drawable文件夹下新建一个animated-rotate标签的xml文件,如下:xml version="1.0" encoding="utf-8"?>animated-rotate xmlns:androi原创 2016-07-07 11:50:05 · 2237 阅读 · 0 评论 -
TextView实现跑马灯效果
TextView实现跑马灯只需要设置TextView的四个属性:<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World Hello World Hello World Hello World Hello W原创 2016-01-29 15:25:07 · 357 阅读 · 0 评论 -
如何在GitHub上创建一个工程
今天试一试在GitHub上创建一个项目,百度了很久未果,发现在GitHub上就有详细的步骤教的,只不过是英文的,那就来翻译一下吧,要不有的单词还得查,太费劲了。1.什么是GitHubGitHub是一个用于版本控制和协作的代码托管平台。它让你和其他人在任何地方都可以一起工作。本教程教你如何GitHub仓库,创建分支机构,commit,以及pull。你会创造你自己的项目库和学习使用pull拉取原创 2016-03-02 15:16:12 · 9964 阅读 · 0 评论 -
实现二级列表(实现QQ的好友列表)
实现QQ好友的列表功能,可以使用二级列表(ExpandableListView控件),显示标题,可将内容隐藏,同时点击标题,也可将内容展示出来,效果如图所示。代码实现如下:首先需要实现标题部分的布局,就是实现途中的分组名(同学,家人,朋友)。 layout_parent.xml:xml version="1.0" encoding="utf-8"?>xmlns:a原创 2016-01-20 19:53:28 · 597 阅读 · 0 评论 -
使用AndroidMultiChannelBuildTool进行多渠道批量打包
最近出现了一个多渠道打包的工具非常好用,是 AndroidMultiChannelBuildTool,这个工具打包只需要几步,也不用在Gradle中进行修改,同时使用一次所有的包都出来了。首先附一下这个工具的下载地址,在GitHub上:https://github.com/GavinCT/AndroidMultiChannelBuildTool。下面是操作步骤:1.下载完成的文件夹内容如下,同原创 2016-03-07 10:33:33 · 1046 阅读 · 0 评论 -
Android 时间转换
Android 时间转换:long time=System.currentTimeMillis();public static String generateTime(long time) { int totalSeconds = (int) (time / 1000); int seconds = totalSeconds % 60; int minutes原创 2016-01-22 14:03:52 · 916 阅读 · 1 评论 -
如何在一个APP中加入欢迎页,以及引导页
我们知道,一般刚打开一个APP的时候,都会出现一个欢迎页,比如下面这个界面,但是这个界面一般是不需要显示太长时间的,而且这个界面之后一般还会有一个带有广告的界面,那个界面可以根据需要停留一段时间。同时,当第一次安装一个APP的时候,一般会出现一个可以滑动的引导界面,用于提示用户该版APP的主要功能。当然,做的好更能吸引用户的眼球,增加点击量。原创 2015-12-23 09:40:41 · 9798 阅读 · 3 评论 -
实现短信验证码获取倒计时
一般的登录注册界面,都会有点击按钮发送验证码的过程,点击完成之后注册按钮会出现倒计时的字样。如图所示:原创 2016-03-23 10:45:02 · 545 阅读 · 0 评论 -
SpannableString属性
1、BackgroundColorSpan 背景色 2、ClickableSpan 文本可点击,有点击事件 3、ForegroundColorSpan 文本颜色(前景色) 4、MaskFilterSpan 修饰效果,如模糊(BlurMaskFilter)、浮雕(EmbossMaskFilter) 5、MetricAffectingSpan 父类转载 2016-03-23 10:56:03 · 268 阅读 · 0 评论 -
Android的四大组件
Android的四大组件都需要在AndroidManifest.xml文件中进行注册(如果不注册肯定会报错):Activity:<activity android:name=".MyActivity"> BroadcastReceiver:android:name=".MyBroadcastReceiver"> androi原创 2016-02-29 19:27:01 · 394 阅读 · 0 评论 -
Fresco使用详解
在一些项目中,典型的比如视频类的APP都会显示一些图片,通过图片的点击响应相应的事件,而这些图片的获取都需要从服务器拿取数据,就用到了网络访问。而在这个过程中,是否网络访问成功,是否能拿到数据,网络加载过程中显示什么,网络不好时重新加载显示什么,多种情况下,需要考虑很多问题,而Fresco非常好的解决了这些问题,下面实现一下Fresco。首先,新建一个AndroidStudio的工程,在bui原创 2016-03-24 17:59:20 · 3650 阅读 · 0 评论 -
Android中如何在代码中动态设置控件的高度以及宽度
有的时候我们为了让app的界面看起来更美观合理,会比较严格的规定一些控件的宽度以及高度。以一张大图为例,比如我们希望这张大图的宽度与手机屏幕的宽度相同,而希望它的宽度:高度=2:1(也可以是1.9:1),这样就不能简单的在xml文件中进行设置,就需要在代码中进行动态修改。1.首先,因为每个手机的屏幕大小不同,所以先通过代码获得当前手机的长宽(单位都是像素)。一般会在onCreate()中进原创 2016-04-19 15:28:12 · 63516 阅读 · 2 评论 -
详解Git的使用以及如何使用AndroidStudio上传工程到GitHub
Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目,说白了就是管理代码的。一般公司中的稍大型项目都不是一个人完成的,必须要几个人合作同时进行,如何高效的协调代码进度合并代码,就需要用到Git。代码合并之后一般会上传到云端(也就是每个公司的服务器端),但是我现在没有服务器可以利用,所以就以GitHub为例实现这个过程。如果换成是服务器的话(一般是GitLab),以下步骤原创 2016-04-22 18:20:03 · 674 阅读 · 0 评论 -
Animator的基本用法
这里仅仅介绍Animator的一些基本的用法:说到Animator,最重要的最常用的的就是ObjectAnimator类,因为这个类可以对任意View的任意属性进行操作。首先以ImageView为例,以下所有的操作都针对ImageView:1.只展示一种动画效果(只改变控件对象的一个属性),代码如下:ObjectAnimator animator=ObjectAnimator.原创 2016-07-25 20:34:12 · 6817 阅读 · 0 评论 -
将Activity设置成透明的或者弹窗形式
实现Activity的两种自定义属性:1.将Activity的背景设置成透明的或者是半透明的,这样可以看到Activity之下的界面显示的是什么但是不能点击。实现全透明:首先在styles.xml中添加全透明的style:style name="myTransparent" parent="@android:style/Theme.Translucent.NoTitleBar"原创 2016-07-26 12:32:51 · 14584 阅读 · 0 评论 -
Android PopupWindow简单使用
在Android中,有的时候我们会需要通过点击按钮,实现一个下拉功能的菜单,有点类似于Toolbar的菜单,但又有些不同,最近做项目有用到,所以来整理一下。效果如图所示。 如图,当点击消息时,会出现一个下拉菜单,内容包括通知,反馈,客服电话等不同的内容。可以将这些内容设置成按钮等控件,点击之后跳转到不同的界面。实现这个功能,就要用到PopupWindow这个类。 注:文中所有原创 2016-01-08 18:25:32 · 556 阅读 · 0 评论