- 博客(22)
- 资源 (49)
- 收藏
- 关注
原创 关于性能优化的感悟
布局优化:1、减少布局的嵌套 使用<include>标签:将一个指定的布局文件加载到当前布局 使用<merge>标签:一般和<include>标签一起减少布局的层级,这个标签可以去掉多余的同类型布局,比如include的linearlayout和根linearlayout的布局参数相同,就可以使用这个标签来去掉对于的那一层linearlayout 使用ViewStub,在使用的时候再加载布
2016-06-30 23:10:50 623
原创 viewpager轮播图的实现(简洁易懂)
在做这个效果的时候,我第一时间看了网上的轮播方式,发现问题很多,有的人在代码里大量的判断手动滑动和自动滑动的状态改变,有的人的轮播是定义了一个很大的Int值,通过顺序播放相同的图片来实现的伪轮播,看过这些代码感觉并不满意,所以尝试自己实现。在轮播更新UI的时候,我尝试了Thread+handler,handler.postdelay,和timer+timertask+handler的方式,前两种方式
2016-06-30 14:08:09 9962
原创 android下拉刷新+左滑删除的实现(第一种方式)
下拉刷新+左滑删除的效果实现一:使用谷歌官方的SwipeRefreshLayout和第三方左滑删除的库swipemenu-recyclerview先看效果: 实现步骤: 1、导入swipemenu-recyclerview库 2、使用SwipeRefreshLayout包裹 3、代码1、导入swipemenu-recyclerview库dependencies { compile '
2016-06-25 23:10:59 3401
原创 Retrofit2使用(非常简洁易懂)
1、什么是Retrofit框架?它是Square公司开发的现在非常流行的网络框架,所以我们在导入它的包的时候都可以看到这个公司的名字,目前的版本是2。特点:性能好,处理快,使用简单,Retrofit 是安卓上最流行的HTTP Client库之一 使用REST API设计风格 支持 NIO(new i/o) 默认使用OKHttp处理网络请求,我觉得可以看成是OKHttp的增强。 默认使用Gs
2016-06-25 18:03:22 21140 6
原创 Binder连接池的实现步骤
为什么: 当我们的业务模块越来越多,每个业务模块都需要一个AIDL文件的时候,我们不可能对每个AIDL文件都建立一个对应的service,这会让我们的应用看起来很重,并且会消耗更多的系统资源,所以就需要用到Binder连接池。工作机制:1、每个业务模块提供自己的AIDL接口并实现这个接口,不同业务模块之间不能有耦合,所有实现要独立,防止数据冲突。 2、向服务端提供自己的唯一标识和对应的Binde
2016-06-24 19:19:32 694
原创 TCP和UDP的区别
两者都属于网络传输控制层的协议TCP协议: 面向连接的,需要经过三次‘握手’才能完成,为了稳定的数据传输功能,其本身提供了网络超时重传机制,因此具有很高的稳定性。UDP协议: 面向无连接的,提供不稳定的单向通信,当然UDP也可以实现双向通信,UDP由于是无连接的,发出的消息并不需要反馈,所以效率更高,但是缺点就是不能保证数据正确传输。android里使用到的socket有两种,一种是流式套接字,
2016-06-24 17:30:41 426
原创 Android里的Binder机制(简洁易懂)
Binder是一个很深奥的知识,看别人写的文章总是云里雾里的,搞了好久总算是有点眉目了。 Binder的底层实在是很复杂,本文介绍Binder的上层实现和使用。Binder是什么?1、是android中实现了IBinder接口的一个类 2、从IPC角度看是一种跨进程的通信方式 3、从内核驱动看,它有自己的设备文件/dev/binder,这种通信方式是Linux没有的 4、framework角
2016-06-24 12:58:55 1188
原创 国外人气APP网站,论坛,推广平台。
国外比较有人气的APP网站和APP论坛-国外app推广平台 下面整理的一些国外比较有人气的APP网站和APP论坛 http://www.ipadown.com/ http://topapp.net/ http://www.appolicious.com/ http://mobile.butterscotch.com/Mobile/IPhone/ http://wwdc.slidetopl
2016-06-24 10:27:31 5439
原创 android序列化之Serializable,Parcelable
为什么序列化: 1、当我们需要在不同的Activity之间使用intent传递对象的时候就需要把这个对象序列化然后再放入intent当中,同样在使用Binder传递数据的时候也需要序列化 2、需要将对象永久保存在存储设备上或者通过网络传输。 3、跨进程通信的时候序列化的方式: 1、使用JAVA中的序列化接口:Serializable 2、使用Android的序列化接口:Parcelable
2016-06-23 20:43:00 461
转载 PinnedHeaderExpandableListView的使用
转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/25546871(来自singwhatiwanna的csdn博客) 前言 Android中,大家都用过ListView,ExpandableListView等,也许你还用过PinnedHeaderListView,但是如果我说PinnedHeaderExpandableList
2016-06-23 15:08:45 1519
原创 自定义topbar
效果图: 1、定义自己的属性文件attrs.xml 2、自定义view,将自定义的属性和view绑定起来 3、使用接口实现点击事件的回调 4、实现按钮的隐藏和显示方法代码:1、定义自己的属性文件attrs.xmlattrs.xml :<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name=
2016-06-22 15:46:10 410 1
转载 Android 编程下 Touch 事件的分发和消费机制
转载自:http://www.cnblogs.com/sunzn/archive/2013/05/10/3064129.htmlAndroid 中与 Touch 事件相关的方法包括:dispatchTouchEvent(MotionEvent ev)、onInterceptTouchEvent(MotionEvent ev)、onTouchEvent(MotionEvent ev);能够响应这些方法
2016-06-22 12:07:43 365
原创 Glide的使用
Glide:谷歌推荐的一个网络图片加载库,和Picasso类似,Picasso缓存的是原图,而Glide缓存的是你所设置的Imageview的大小的图片。使用:1、导入Glide库和V4包,因为Glide依赖于V4dependencies { compile 'com.android.support:support-v4:24.0.0-beta1' compil
2016-06-21 17:56:09 1848
原创 eventbus的使用(二)简洁易懂
上一篇提到的eventbus接受事件的四个方法: 1、onEvent 2、onEventMainThread 3、onEventBackgroundThread 4、onEventAsynconEvent:这个接受事件的方法会和发布事件的方法在同一个线程执行,并不一定在UI线程。因为它和事件发送在同一个线程在这个方法不能执行耗时操作,不然就会导致事件分发的延迟。onEventMainThre
2016-06-21 14:33:37 508 1
原创 eventbus的使用(一)简洁易懂
一句话解释eventbus:为了代替Intent,Handler,Broadcast这些传递数据的机制,使数据在Fragment,Activity,Service和线程之间传递更加的方便。代码量更少,更简洁。eventbus原理简介:eventbus使用的是观察者模式如图可以看出eventbus的三个组成部分:Publisher: 事件发布者 (就是观察者模式里说的所谓的观察者
2016-06-21 13:49:56 1582
转载 Android Matrix详解
原文地址:http://www.cnblogs.com/qiengo/archive/2012/06/30/2570874.html#code Android Matrix Matrix的数学原理平移变换旋转变换缩放变换错切变换对称变换代码验证 Matrix
2016-06-15 11:33:55 381
原创 greendao的使用(简洁易懂)
今天在项目里使用到了greendao,记录一下greendao的使用过程。greendao是对sqlite数据库操作的封装,可以让我们更加方便的使用sqlite,其它类似的框架还有OrmLite、SugarORM、Active Android、Realm。但是greendao的性能要远远的高于其它四个框架,在官网有测试结果,因为它不是使用反射的机制,而是直接生成相关的代码。这就大幅度提升了它的性能。
2016-06-14 23:20:58 14408 10
原创 RelativeLayout布局id找不到的问题
最近犯过几次这样的错。在RelativeLayout布局里,有两个控件,如图:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" an
2016-06-13 17:03:05 2530
原创 android动画使用三
使用ValueAnimator实现一个点击view展示次级view的效果效果图: 代码: MainActivity.javapackage com.example.lhd.myvalueanimator;import android.animation.Animator;import android.animation.AnimatorListenerAdapter;import andro
2016-06-09 17:57:02 554
原创 android动画使用二
视图动画包括:透明度动画:AlphaAnimation 旋转动画:RotateAnimation 位移动画:TranslateAnimation 缩放动画:ScaleAnimation视图动画执行后,它的点击事件还在动画执行前的地方,所以视图动画通常用来做没有交互的动画效果,因为他不需要考虑点击事件,往往效率比较高。而当我们需要在动画执行后要进行交互的时候就要用到属性动画了。属性动画:Obje
2016-06-09 00:00:15 405
原创 Android: failed to convert @drawable/picture into a drawable
这是由于drawable目录下图片资源命名不符合规范引起的错误的命名:注意不要有点,不要用大写字母,需要分割单词的时候用下划线。
2016-06-06 14:15:31 2721
原创 android 获取坐标的方法
View提供的获取坐标的方法: getTop(): View自身的顶边到父布局顶边的距离 getLeft(): View自身的左边到父布局左边的距离 getRight(): View自身的右边到父布局左边的距离 getBottom(): View自身的底边到父布局顶边的距离MotionEvent提供的方法: getX():获取点击事件距离控件左边的距离,即视图坐标 getY():获取
2016-06-02 21:59:28 716
使用idea开发的知识分享插件的后台工程
2021-05-27
android11 weex_sdk-release.aar
2020-11-13
kotlin的run,let,apply,also,takeIf,takeUnless,with的使用和区别
2018-08-03
scrollview嵌套viewpager嵌套fragmetn嵌套recyclerview的demo
2018-06-22
cuteRecorder的使用
2017-07-04
CollapsingToolbarLayout的使用
2016-10-13
app开发框架
2016-08-24
android下拉刷新+左滑删除效果demo
2016-06-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人