Android进阶
-Sloth-
脚踏实地 仰望星空
展开
-
RecyclerView的使用
RecyclerView在android5.0之后被引进,可以通过导入support-v7对其进行使用。 该控件用于在有限的窗口中展示大量数据集。提供了一种插拔式的体验,高度的解耦,异常的灵活,通过LayoutManager,ItemDecoration , ItemAnimator可以实现多样的效果。实例一:public class RecyclerActivity01 extends原创 2016-10-22 11:47:18 · 1102 阅读 · 0 评论 -
Android使用CollapsingToolbarLayout实现折叠效果
在各种应用中,可能会遇到这样的折叠效果:Toolbar是透明的,有一个背景图片以及大标题,随着页面向上滑动,其标题逐渐缩放到Toolbar上,而背景图片则在滑动到一定程度后变成了Toolbar的颜色。实现这样的效果可以使用Google推出的Design Library库中的CollapsingToolbarLayout控件,它是一个增强型的FrameLayout。 效果图:原创 2017-07-10 13:49:11 · 12753 阅读 · 1 评论 -
EventBus使用详解
EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦。下面先展示一个实例:当点击按钮的时候,跳到第二个Activity,当点击第二个activity上面的按钮的时候向第一个Activity发送消原创 2016-11-17 22:22:14 · 338 阅读 · 0 评论 -
Android线程池总结
使用线程池的好处: 1.重用已经创建的好的线程,避免频繁创建进而导致的频繁GC 2.控制线程并发数,合理使用系统资源,提高应用性能 3.可以有效的控制线程的执行,比如定时执行,取消执行等线程池的构造方法:public ThreadPoolExecutor(int corePoolSize, int maxi原创 2017-07-03 16:54:39 · 313 阅读 · 0 评论 -
Android实现手势监听
在Android系统中,每一次手势交互都会依照以下顺序执行。 1. 接触接触屏一刹那,触发一个MotionEvent事件。 2. 该事件被OnTouchListener监听,在其onTouch()方法里获得该MotionEvent对象。 3. 通过GestureDetector(手势识别器)转发次MotionEvent对象至OnGestureList原创 2017-07-06 15:56:01 · 1843 阅读 · 0 评论 -
高德地图定位
1、注册开发者,创建应用这个几乎是所有开放平台都通用的做法,无外乎注册帐号,成为开发者,然后创建一个Android应用,会为你分配一个key绑定你的服务。2、下载SDK,导入jar包,add to libraryjar包.PNG第一个是2D地图的jar包,因为最后定位以后我要在地图上标出来位置第二个是用于定位的jar包注意:如果使用的是3D地图,那么地图SDK和导航原创 2017-01-04 18:19:41 · 739 阅读 · 0 评论 -
Android自定义控件——创建复合控件
创建复合控件可以很好的创建出具有重用功能的控件集合,这种方式通常是需要继承一个合适的ViewGroup,再添加指定的控件,形成新的控件。下面的例子基于《Android群英传》实现TopBar:定义属性:原创 2017-07-14 16:29:33 · 400 阅读 · 0 评论 -
Android 朋友圈 输入框评论效果
点击按钮弹出评论框: InputMethodManager imm = (InputMethodManager)Context.getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); editsendLayout.se原创 2017-06-22 15:23:13 · 1977 阅读 · 0 评论 -
Android中canvas常用方法
在自定义VIew中经常使用到Canvas对象的方法:1 绘制点:public void drawPoint(float x, float y, Paint paint)x:表示x轴方法的坐标y:表示y轴方法的坐标 这坐标是相对于它的父view,而不是屏幕paint:表示你所画点用到的画笔public void drawPoints(float[] pts原创 2017-08-01 12:01:57 · 716 阅读 · 0 评论 -
Android 屏幕适配:最全面的解决方案
前言Android的屏幕适配一直以来都在折磨着我们Android开发者,本文将结合:Google的官方权威适配文档郭霖: Android官方提供的支持不同屏幕大小的全部方法Stormzhang:Android 屏幕适配鸿洋:Android 屏幕适配方案凯子: Android屏幕适配全攻略(最权威的官方适配指导)自身的思考&实践 给你带来一种全新、全面而逻辑清晰的Android屏幕适转载 2017-08-16 11:24:26 · 473 阅读 · 0 评论 -
使用Toolbar与DrawerLayout实现侧滑菜单
public class MainActivity extends AppCompatActivity { private Toolbar toolbar; private DrawerLayout mDrawerLayout; private ActionBarDrawerToggle mDrawerToggle; private ExpandableListV原创 2017-08-23 18:51:23 · 563 阅读 · 0 评论 -
Android属性动画解析
Android动画分为帧动画,补间动画和属性动画。帧动画就是将每一张静止的图片依次的显示出来,利用人眼暂时停留的错觉,得出的动画。对于补间动画,包含移动、缩放、旋转和淡入淡出,开发者只需要指定动画开始和结束的关键帧,而进行中的中间帧是由系统来计算并且补齐的,详情参考Android动画详解。现在着重介绍属性动画。 属性动画相较于补间动画,主要的有点是:(1)不仅可以实现移动、缩放、原创 2017-07-04 17:59:01 · 557 阅读 · 0 评论 -
Android实现APP版本升级
最近写的项目中有用到版本升级,所以简单的写了一个例子来实现这个功能页面大概是这个样子的:在服务中使用okgo下载APK,下载过程中在通知栏显示显示下载进度,下载完成后,通知栏消失,进入APK安装页面;主要代码:public class Update_app { private Context context; private String update_ur原创 2017-07-28 11:07:28 · 998 阅读 · 0 评论 -
Android WIFI工具类
package com.jczb.smartlife.common;import java.net.Inet4Address;import java.util.List;import android.content.Context;import android.net.ConnectivityManager;import android.net.NetworkInfo;import原创 2017-08-11 18:53:01 · 1378 阅读 · 0 评论 -
Android实现多线程下载与断点续传
通常情况下,从服务器下载文件时,服务器都是同时与多个用户连接,用户之间共享带宽。如果N个用户的优先级都相同,那么每个用户连接到该服务器上的实际带宽就是服务器带宽的N分之一。可以想象,如果用户数目较多,则每个用户只能占有可怜的一点带宽,下载将会是个漫长的过程。如果使用多线程:具体实现过程中会出现很多问题:1.怎么在一个文件里面写数据的时候按照指定的位置写(因为每个线程的下原创 2017-07-27 16:01:31 · 683 阅读 · 0 评论 -
Android APP必备高级功能,消息推送之MQTT
1. Android端实现消息推送的几种方式轮询:客户端定时向服务器请求数据。伪推送。缺点:费电,费流量。拦截短信消息。服务器需要向客户端发通知时,发送一条短信,客户端收到特定短信之后,先获取信息,然后拦截短信。伪推送。缺点:贵而且短信可能被安全软件拦截。持久连接(Push)方式:客户端和服务器之间建立长久连接。真正的推送。 Google的C2DM(Cloudto Device M转载 2017-08-11 17:37:40 · 2329 阅读 · 0 评论 -
SD工具类
public class SDCardHelper { // 判断SD卡是否被挂载 public static boolean isSDCardMounted() { // return Environment.getExternalStorageState().equals("mounted"); return Environment.getExternalStorageState原创 2017-07-27 10:46:31 · 328 阅读 · 0 评论 -
Android百分比布局
以往在写网页中我们经常用到百分比布局,现在在Android中我们也可以百分比布局,为屏幕适配带来一些方便。在使用时导入android-percent-support-lib-sample包。使用说明:1.需要在build.gradle文件当中导入以下内容:dependencies { compile 'com.android.support:percent:24.4.0'原创 2016-10-28 21:04:24 · 8512 阅读 · 0 评论 -
ViewDragHelper详解
2013年谷歌i/o大会上介绍了两个新的layout: SlidingPaneLayout和DrawerLayout,现在这俩个类被广泛的运用,其实研究他们的源码你会发现这两个类都运用了ViewDragHelper来处理拖动。ViewDragHelper是framework中不为人知却非常有用的一个工具。ViewDragHelper解决了android中手势处理过于复杂的问题,在DrawerL原创 2017-06-05 17:01:37 · 402 阅读 · 0 评论 -
Android实现吸顶效果
上图: 本文代码的Github地址sticky.gif思路:每一个RecyclerView的item的布局(下文叫itemUI)里面都包含“吸顶文本”这个布局(下文叫StickyLayout),根据当前itemA和上一个itemB的吸顶信息是否相同,决定是否展示itemA的StickyLayout.包含RecyclerView的布局(下文叫wrapperUI)最上部转载 2017-06-08 14:16:40 · 8198 阅读 · 0 评论 -
Android 拍照适配方案
拍照功能实现Android 程序上实现拍照功能的方式分为两种:第一种是利用相机的 API 来自定义相机,第二种是利用 Intent 调用系统指定的相机拍照。下面讲的内容都是针对第二种实现方式的适配。通常情况下,我们调用拍照的业务场景是如下面这样的:A 界面,点击按钮调用相机拍照;A 界面得到拍完照片,跳转到 B 界面进行预览;B 界面有个按钮,点击后触发某个业务转载 2016-10-17 20:02:53 · 411 阅读 · 0 评论 -
Google原生下拉刷新组件SwipeRefreshLayout
SwipeRefrshLayout是Google官方更新的一个Widget,可以实现下拉刷新的效果。该控件集成自ViewGroup在support-v4兼容包下,不过我们需要升级supportlibrary的版本到19.1以上。基本使用的方法如下:setOnRefreshListener(OnRefreshListener):添加下拉刷新监听器setRefreshing(boolean):原创 2016-10-22 17:09:17 · 537 阅读 · 0 评论 -
Android自定义控件——组合控件
今天和大家分享下组合控件的使用。很多时候Android自定义控件并不能满足需求,如何做呢?很多方法,可以自己绘制一个,可以通过继承基础控件来重写某些环节,当然也可以将控件组合成一个新控件,这也是最方便的一个方法。今天就来介绍下如何使用组合控件,将通过两个实例来介绍。第一个实现一个带图片和文字的按钮,如图所示:整个过程可以分四步走。第一步,定义一个layout,实现按钮内转载 2016-10-15 17:28:11 · 412 阅读 · 0 评论 -
Android自定义控件——自定义属性
自定义属性的过程: 1.在res/values文件夹中创建attrs的xml文件。 2.写入标签, 定义子标签attr,放入自定义属性的名称。format 可以用|来同时使用1、reference 参考某一资源Id2、color 颜色值3、boolean 布尔值4、dimension 尺寸值(带有单位的 sp/dp)5、flo原创 2016-10-15 16:39:19 · 976 阅读 · 0 评论 -
Android 自定义图形实例
public class CV1 extends View { private Paint paint; private int rect_width = 30; private int rect_space = 20; private int[][] rect_array = {{Color.RED, 300}, {Color.GREEN,原创 2016-10-06 22:55:51 · 513 阅读 · 0 评论 -
DrawerLayout的使用
drawerLayout是Support Library包中实现了侧滑菜单效果的控件,可以说drawerLayout是因为第三方控件如MenuDrawer等的出现之后,google借鉴而出现的产物。drawerLayout分为侧边菜单和主内容区两部分,侧边菜单可以根据手势展开与隐藏(drawerLayout自身特性),主内容区的内容可以随着菜单的点击而变化(这需要使用者自己实现)。实例一:原创 2016-10-22 16:25:15 · 2293 阅读 · 0 评论 -
Android的非对称加密与MD5加密
非对称加密与解密:RSARSA由于公钥和私钥不同,所以非对称加密算法可以极大的提高文件的安全性,RSA是可逆的,一个字符串可以经过rsa加密后,经过解密后的字符串传到对端如服务器上,在进行解密即可(前提条件是服务器知道解密的私钥)。实例:public class RSAUtils { public static byte[] encrypt(byte[] data, Priva原创 2016-11-09 17:55:34 · 845 阅读 · 0 评论 -
RxAndroid 与 Retrofit的使用
Retrofit与okhttp共同出自于Square公司,retrofit就是对okhttp做了一层封装。首先使用Retrofit进行网络请求: 导入依赖: compile 'com.squareup.retrofit2:retrofit:2.0.2' compile 'com.squareup.retrofit2:converter-gson:2.0.2'实际请求中主要用到的是原创 2017-06-19 16:48:09 · 691 阅读 · 0 评论 -
Android App包瘦身优化实践
随着业务的快速迭代增长,美团App里不断引入新的业务逻辑代码、图片资源和第三方SDK,直接导致APK体积不断增长。包体积增长带来的问题越来越多,如CDN流量费用增加、用户安装成功率降低,甚至可能会影响用户的留存率。APK的瘦身已经是不得不考虑的事情。在尝试瘦身的过程中,我们借鉴了很多业界其他公司提供的方案,同时也针对自身特点,发现了一些新的技巧。本文将对其中的一些做详细介绍。在开始讲瘦身技巧之转载 2017-04-27 15:51:21 · 2984 阅读 · 0 评论 -
Android反编译
在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局可能会让你爱不释手,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用的APK进行反编译查看。下面是我参考了一些文章后简单的教程详解。测试环境: win 7 使用工具: CSDN上下载地址: apktool转载 2017-05-26 11:48:53 · 445 阅读 · 0 评论 -
高德地图计算两地距离
private AMapLocationClient mLocationClient = null; private AMapLocationListener mLocationListener = null; private double d1,d2,d3,d4; private LatLng latLng1,latLng2; //进行定位 mLoca原创 2017-01-06 11:40:01 · 6749 阅读 · 1 评论 -
酷炫的几款下拉刷新框架之Phoenix Pull-To-Refresh
转载请注明出处:http://blog.csdn.net/qq347198688/article/details/52518150开源框架地址:https://github.com/Yalantis/Phoenix看到这个酷炫的下拉刷新,是不是有点蠢蠢欲动,觉得很激动,当你继续看完整篇文章,了解到它的用法那么简单之后,估计你会更加的兴奋,这可比自己写一个下拉刷新强多了,动画转载 2016-11-24 22:40:38 · 683 阅读 · 0 评论 -
对象的引用的四种级别以及serializable作用和实现
1.强引用以前我们使用的大部分引用实际上都是强引用,这是使用最普遍的引用。如果一个对象具有强引用,那就类似于必不可少的生活用品,垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足问题。2.软引用(SoftReference)如果一个对象只具有软引用,那就类似于可有可物原创 2016-10-19 21:35:16 · 1197 阅读 · 0 评论 -
Android的对称加密与Base64加密
对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)。常用的对称加密方式为:DES,AES。DES的加密解密实例:public class MainActivity extends AppCompatActivity { private EditText des_input; privat原创 2016-11-09 17:16:44 · 1261 阅读 · 0 评论 -
Android ConstraintLayout属性详解
ConstraintLayout, 即约束布局, 在2016年由Google I/O推出. 从支持力度而言, 将成为主流布局样式, 完全代替其他布局, 减少布局的层级, 优化渲染性能. 在新版Android Studio中, ConstraintLayout已替代RelativeLayout, 成为HelloWorld项目的默认布局. ConstraintLayout作为非绑定(Unbundled原创 2017-08-31 12:37:08 · 771 阅读 · 0 评论