- 博客(14)
- 资源 (12)
- 收藏
- 关注
原创 更新UI的四种方式分析
在Android开发中,更新UI有以下四种常用方式。方式一:Handler类的sendEmptyMessage()或sendMessage()方法。private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what ==
2016-07-31 23:13:21 3911
原创 使用PinnedHeaderListView实现固定头部的列表
在手机自带的通讯录中,我们会发现联系人被分组,按首字母索引排列,当列表向上滑动时,分组的标题栏会悬浮在列表顶部。常用的一些app如美团的选择城市,也是使用的这种效果。效果图如下。关于这个效果,实现的方式有多种,这里使用PinnedHeaderListView实现固定头部的列表。实现步骤:(1).PinnedHeaderListView的实现首先是Pi
2016-07-30 23:42:21 4811 1
原创 浅析Fragment为什么需要空的构造方法
今天,有同事在看了我的代码后,告诉我当我们的类继承自Fragment时,需要添加一个空的public构造方法。我很好奇问他为什么,他说官方建议我们这么做,不然可能会出问题,我们的产品已经被友盟统计到因Fragment没有空的构造方法而报错。晚上回来,打算研究下。我们在Android Studio中创建Fragment类,如图所示。创建完后的代码如下。public
2016-07-23 01:25:49 6894 1
原创 使用PagerSlidingTabStrip实现顶部导航栏
在开发中,我们有时会遇到顶部导航栏滑动切换页面的设计,如网易新闻。实现的方式有很多种,今天我们使用PagerSlidingTabStrip配合ViewPager实现顶部导航栏。效果图如下。PagerSlidingTabStrip是github上的一个开源项目,项目地址如下。https://github.com/astuetz/PagerSlidingTabStrip
2016-07-22 10:35:39 5510 1
原创 设计模式之单例模式
定义:确保一个类只有一个实例,并提供一个全局访问点。简介:单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例。要实现这一点,可以从对其进行实例化开始。因此需要用一种只允许生成对象类的唯一实例的机制,阻止所有想要生成对象的访问。使用工厂方法来限制实例化过程。这个方法应该是静态方法(类方法),因为让类的实例去生成另一个唯一实例毫无意义。首
2016-07-16 23:42:47 1897
原创 使用apktool反编译apk文件
ApKtool是一个apk编译工具,能够反编译apk文件。Apktool官方介绍:http://ibotpeaches.github.io/Apktool/当前Apktool的最新版本为2.1.1,需要JDK1.7的支持。在进入Apktool的安装之前,请确保电脑已安装JDK1.7。可通过命令行java -version查看当前已安装JDK的版本信息。一、安装A
2016-07-16 14:03:42 13673
原创 AsyncTask的使用和源码分析
官方文档:https://developer.android.com/reference/android/os/AsyncTask.htmlAsyncTask是一个封装了Thread和Handler的帮助类。使用该类,我们无需自行操作Thread和Handler,就可以完成后台任务处理,并将结果返回到主线程。先来看AsyncTask类的声明:package android.
2016-07-15 14:50:56 2126
原创 使用python实现多渠道打包
每次发布新版本时,app会发布到国内各大应用市场,为了统计不同应用市场的推广效果,我们会为每一个apk添加唯一的标识(渠道号),方便进行统计。对于渠道号的统计,可以使用第三方统计工具,如友盟,也可以在请求接口时将渠道号传递到后台自行统计。这里以友盟统计为例。可以选择在清单文件中添加渠道号,假如渠道号为wandoujia:或者在java代码中添加:import c
2016-07-13 00:26:53 6417 1
原创 圆形图片CircleImageView的使用和分析
在项目开发中,我们经常需要用到圆形图片效果,典型案例是用户头像的显示。如图所示。下面我们使用开源控件CircleImageView来实现该效果。CircleImageView项目下载地址:https://github.com/hdodenhof/CircleImageView(1).CircleImageView的使用首先我们将CircleImage
2016-07-12 15:33:06 23827 2
原创 仿新浪微博加号弹出界面动画
在使用新浪微博时,通过点击主界面底部的“+”按钮,会弹出一个包含各种按钮操作的界面。这个界面的用户体验比较酷炫,如中华万年历等app都在使用,首先我们来看一下效果图。接下来,我们对该页面的动画效果进行分析。在整个操作流程中,涉及到的动画如下:(1).当面板视图显示时,按钮从屏幕底部进入并附带弹性效果的动画;<translate xmlns:andr
2016-07-11 09:52:45 9833 5
原创 获取短信验证码时的倒计时按钮实现
在Android中实现倒计时有多种方式,如使用传统的java方式Timer+TimerTask等,这里我们使用系统自带的类CountDownTimer。CountDownTimer内部使用的是Handler来实现倒计时功能的。为了方便在多个页面中使用该功能(如注册、找回密码、重置密码),这里将该功能封装到CountDownTimerButton类中。在使用CountDownTi
2016-07-09 13:25:49 6976 1
原创 使用Fragment实现Tab切换(高仿微信主界面)
先来看效果图:在2.x版本时代,我们都是使用TabActivity和TabHost组合来实现页面的tab切换。TabActivity是一个特殊的Activity,它继承自ActivityGroup,内部可容纳多个Activity,违反了Activity的单一窗口原则,虽风靡一时却难免被抛弃。3.0版本出现之后,Google推出了一个新的类Fragment,且TabAct
2016-07-08 00:22:15 8629
原创 布局属性layout_weight解析
关于Layout Weight,我们先来看一下官方释义。LinearLayout通过子View的android:layout_weight属性,来为子View分配权重。layout_weight属性指定子View在屏幕上占有空间的重要性。较大的权重值使得子View可以扩充到填充父视图的任何剩余空间。子View可以指定一个weight值,然后LinearLayout根据子View声明的w
2016-07-05 17:59:05 3521
原创 原生下拉刷新SwipeRefreshLayout的使用
说到下拉刷新,最为人所知的就是chrisbanes的Android-PullToRefresh,一个强大的下拉刷新开源项目,支持各种常用控件。后来,Google为我们提供的android-support-v4包,从19.1版本开始,推出了自己的下拉刷新控件SwipeRefreshLayout。在知乎和豌豆荚等应用中我们都可以看到SwipeRefreshLayout的影子。SwipeRefr
2016-07-04 17:31:05 4297
Android使用PagerSlidingTabStrip实现顶部导航栏
2016-07-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人