- 博客(325)
- 资源 (29)
- 问答 (12)
- 收藏
- 关注
原创 SwipeRefreshLayout与RecyclerView的巧夺天工
平常开发我们需要使用ListView下拉刷新或者其下拉加载的时候,不是自己写就是用别人写好了,但是编程中有一点是不变的,就是一般封装好的东西,其扩展性极低,比如你使用xutils,imageloader等开源框架的时候,它允许你扩展吗?答案当然是否,那我想要实现自己非常酷酷的ListView时候,只有自己动手实现。不过,谷歌在2015在v4开发包加入 豪华套餐SwipeRefreshLayout供
2016-01-23 19:13:18 14783 2
原创 Android Support Design Library之FloatingActionButton
本文分别用三个实例介绍了FloatingActionButton的使用,其中一个实例是模仿掌阅底部弹出菜单,其中涉及了自定义Behavior类模拟控件的相对位置,这个类也是Design库中最重要的类,也可以说该库中所有的类都是围绕者Behavior,如果你不了解Behavior,那么你还不怎么完全会使用Design。
2016-01-05 20:23:32 13307
原创 Android Support Design Library之TextInputLayout
相信普通的用户在使用手机的时候经常遇到一个输入框没输入的时候会有灰色的提示,可一旦输入些许字符后,用户很快忘记了这个输入框要输入什么,但是退回去却又要重新输入,对于用户的这个要求,谷歌看在眼里,在2015推出了TextInputLayout来满足这个需求。那么对于怎么使用这个控件,我将用模仿网易邮箱大师的登录界面来一一告诉大家怎么畅快的玩起来。下面来看看,我们将要实现的界面。...
2016-01-03 20:00:48 16038 11
原创 Android Support Design Library之TabLayout
对于TabLayout独有的属性比较多,我也是查看了文档才一一弄清楚是怎么个情况,我这里主要做一个总结,和实现其功能,给大家使用时候一个参考,免得网上百度不到众多属性是什么意思,以及要实现某个功能需要哪些属性。
2015-12-31 20:56:53 11702 3
原创 Android Support Design Library之NavigationView
此安卓支持库中需要讲解的第二个View就是NavigationView,相信大家在开发中经常会用到抽屉,那么谷歌也为大家提供了这个功能,并不需要去Github去下载使用开源的软件。NavigationView基本满足日常开发抽屉的所有要求,且效率也高。下面我们看下效果图后,将详细介绍其使用方式。1.NavigationView与DrawerLayout的天作之合NavigationView完整包名
2015-12-30 20:02:55 13617
原创 Android Support Design Library之CoordinatorLayout
从其英文名字可知道其为“协调者”,组织“协调”子View的父View,其继承自FrameLayout,其默认布局是一层一层往上叠加的,与FrameLayout一样。其神奇的地方就在于Behavior对象了。可以为任何View添加一个Behavior。Behavior是一系列回调。让你有机会以非侵入的为View添加动态的依赖布局,和处理父布局(CoordinatorLayout)滑动手势的机会。
2015-12-29 20:30:14 14925
原创 xUtils更新到3.0后的基本使用规则
说实话,对于Xutils,是我最近才用到的开发框架(也是刚接触),对于其功能不得不说,简化了很多的开发步骤,可以说是非常好的开发工具,但是其最近更新到3.0也没有解决加载自定义ImageView报错的问题。我总是喜欢用一些最新的东西,Xutils 3.0才刚更新,是一次比较大的重构,对于百度到的使用规则,基本都是3.0以前的,使得用3.0的开发者需要求解用法的时候,遇到许多阻碍,
2015-12-27 20:02:45 30359 15
原创 RecyclerView与CardView的使用
RecyclerView与CardView的使用,两者皆是为了扩展listView而存在的,其效果可以实现四种样式,横向listView,纵向listView,瀑布listView,网格ListView。具体的导入与实现步骤其查看博文。
2015-12-26 20:48:56 13036 11
原创 深入剖析Android四大组件(九)——Activity之AppCompatActivity与toolbar的结合
本文即介绍Activity之AppCompatActivity也介绍Toolbar。但重点讲解他们结合的效果,两者缺一,其界面的效果都会减分,唯有结合使用,才能将两者的优点放大。那么具体的细节,请查看博文。只要设计到的知识,基本都讲解过了。最后实现的效果也与微信差不多。
2015-12-25 19:42:45 19129 10
原创 深入剖析Android四大组件(八)——结束Activity的4个阶段
上一篇博文介绍了启动Activity请求的流程以及对相关数据结构的处理,那么当我们试图结束Activity的时候,ActivityManagerService的行为将会是怎样的呢?这一节将介绍结束Activity的3种主要方法和4个阶段。结束Activity的4个阶段:①第一阶段——参数初始化以及参数传递;②第二阶段——获取需要结束的Activity的记录信息;③第三阶段——处理需要结束的Activity信息;④第四阶段——Activity间调度准备.
2015-12-18 18:26:34 6145 4
原创 本市天气(百度定位与车联网之天气查询)
下面用到的知识有,百度定位及车联网API的使用,当然车联网API看起来高大上,其实我们这里只用来获取车联网中的天气查询功能。其他的功能还有渐变动画及缩放动画,以及定时更新天气及定位信息,存储天气信息到SharedPreference文件中。这些都是在后台执行的哦。
2015-11-02 19:14:49 9168
原创 仿微信通讯录滑动定位ListView功能
微信通讯录的浏览联系人的功能非常的酷炫,当点击侧边的滑动字母的时候,自动会定位到ListView联系人,这里不仅关系自定义控件如何控件字母,而且定义了如何让ListVieW中插入首字母,下面我们将自己实现这个微信通讯录。思路分析:当点击右侧的自定义控件的时候,将设置弹出对话框的字母,根据弹出对话框的变化,通知ListView,作出相应的响应。 下面我们就来一步一步剖析这个功能实现及其思路。1.分析界面的构成界面由上左右中四部分构成,控件分别为:Ⅰ上为EditText输入文本
2015-09-24 18:32:27 8808 4
原创 在Android中使用IOC框架让代码更清爽
很久很久以前,我们创建某件物品都是用双手在流水线上创建的,当我们有了机器后,这个机器就替代了人,帮助人创造物品,这个过程倒置了反转。在Android中,你获取控件,都需要自己手动获取,那么反转过来顾名思义就是程序自动获取控件。相信在系统学习过Java Web的Spring框架的人对IOC应该一点也不陌生,那你们知道在Android中怎么应用吗,这可能设及的知识有点多,包括反射,Java注解类,设计模式之代理模式等知识。下面我将演示怎么运行IOC来获取控件,设置回调方法的应用。
2015-09-22 20:24:29 7851 3
原创 仿QQ对话列表滑动删除与置顶的原理及实现
接下来,我们将完成QQ聊天界面的ListView滑动效果,大家可能都用过ListView,知道ListView是上下滑动的,并不会产生左右滑动的效果,如果想让ListView变成左右滑动的效果,必须对安卓源代码有所了解,如果你想了解源代码,请到http://blog.csdn.net/column/details/core-services.html 该专栏下了解详情。我的思路就是:所有的屏幕操作事件由ListView作做拦截,同时把事件传递给SlideView做滑动,这种实现的确可以达到效果,而且代码
2015-09-19 18:06:10 8162 5
原创 adb命令详解(一)——模拟器相关命令集
对于Android开发者来说,想要测试自己开发的程序在所有Android版本上的效果,拥有一台Android真机是不够,尽管你会刷机,那只会浪费你宝贵的时间,这个时候用ADB工具情况就不一样了,你可以尽情的在所有版本的Android模拟器上测试自己的APP是否达到你期望的效果。另一种情况就是最新的开发工具Android Studio在启动模拟器的时候要下载HAXM,甚至还要繁琐的配置,
2015-08-30 20:04:34 4177
原创 Android核心服务解析篇(二)——Android源码结构分析
获得Android源码后,我们来分析源码结构。源码的全部工程分为如下三个部分。①Core Project:核心工程部分,这是建立Android系统的基础,保存在根目录的各个文件夹中。②External Project:扩展工程部分,可以使其他开源项目具有扩展功能,保存在external文件夹中。③Package:包部分,提供了Android的应用程序,内容提供者,输入法
2015-08-29 19:29:49 12232 8
原创 Android核心服务解析篇(一)——下载Android源代码
在文字,语音,图像来说,人记住的最好或者是最多的往往是图像。对于想了解Android核心服务的程序员来说,下载Android源码来了解核心服务是最快,也是最好的方法。下面我们就从安装Android源码开头来了解Android核心服务。1.在Linux系统中获取Android源码⑴下载repo在用户目录下,创建bin文件夹,用于存放repo,并把该路径设置到环境变
2015-08-28 19:22:32 3670
原创 Android核心服务解析篇(三)——Android系统的启动
从大的方面来说,Android系统的启动可以分为两个部分:第一部分是Linux核心的启动,第二部分是Android系统的启动。第一部分主要包括系统引导,核心和驱动程序等,由于它们不属于本篇要讲的内容,这里就不再讨论。在本篇博客中,我们重点讲解Android系统的启动,这一过程主要经过两个阶段,分别是应用的初始化流程与system_service进程及核心服务的创建流程。1.初始化流程
2015-08-02 18:34:02 6383
原创 深入剖析Android四大组件(二)——Service服务之启动与绑定
被绑定的服务是Service类的一个实现,该类允许其他应用程序绑定到服务上并与之交互,为给服务提供绑定,我们必须实现onBind()回调方法。该方法返回一个IBinder对象,该对象定义了客户端可以用来与服务交互的编程接口。客户端可以通过调用bindService()方法绑定到这个服务。当这样做的时候它必须提供ServiceConnection实现,该实现将监视与服务的连接。没有值的bindService()方法会立即返回,但当Android系统创建客户端与服务之间的连接时,我们会调用ServiceCon
2015-07-30 20:34:48 7550 3
原创 深入剖析Android四大组件(一)——Activity生命周期详解
虽然如此,但即使你没有实现onSaveInstanceState()方法,也还是有一些Activity的状态通过Activity类默认实现的onSaveInstanceState()方法恢复。特别是,默认实现会为布局中的每一个视图调用onSaveInstanceState(),允许每一个视图提供它们自己要保存的信息。几乎每一个Android框架中的部件都会适当地实现这个方法。这样一来,当Activity被重新创建的时候,任何一个对于UI可见的变化都被自动保存和恢复。例如,EditText空间保存用户输入的所
2015-07-25 19:37:22 5495
原创 Android清单文件详解(六) ---- <activity>节点的属性
1.android:allowTaskReparentingandroid:allowTaskReparenting是一个任务调整属性,它表明当这个任务重新被送到前台时,该应用程序所定义的Activity是否可以从被启动的任务中转移到有相同亲和力的任务中。看过前面博文都知道,讲解过这个属性,为什么在这里还要在提一次呢?因为它与的android:allowTaskRepare
2015-07-20 20:18:06 5800
原创 Android清单文件详解(五)----<application>的属性详解
前面第三篇,第四篇博文虽然讲解了application节点的几个属性,但是还不够完全,本着对专业执着的精神,有必要深挖下去。1.android:allowBackup它表示是否允许应用程序参与备份。如果将该属性设置为false,则即使备份整个系统,也不会执行这个应用程序的备份操作,而整个系统备份能导致所有应用程序数据通过ADB来保存。该属性必须是一个布尔值,
2015-07-19 19:22:55 8859
原创 Android清单文件详解(四) ---- backupAgent的用法
android:backupAgent用来设置备份代理。对于大部分应用程序来说,都或多或少保存着一些持久性的数据,比如数据库和共享文件,或者有自己的配置信息。为了保证这些数据和配置信息的安全性以及完整性,Android提供了这样一个机制。我们可以通过这个备份机制来保存配置信息和数据以便为应用程序提供恢复点。如果用户将设备恢复出厂设置或者转换到一个新的Android设备上,系统就会在应用程序重新安装时自动恢复备份数据。这样,用户就不需要重新产生它们以前的数据或者设置了。这个进程对于用户是完全透明的,并且不影响
2015-07-16 19:31:51 14668 1
原创 Android清单文件详解(三)----应用程序的根节点<application>
当整个系统正在低内存运行时,并且希望应用程序缩减使用内存的时候,系统调用Application.onLowMemory()通知应用程序。但调用此方法的准确点没有定义时,通常它将在所有后台进程已经终止的时间附近发生。应用程序可执行此方法来释放任何缓冲或其拥有的不必要的资源。系统在从此方法中返回后运行垃圾回收操作。1.<application>节点配置;2.如何实现Application类;3.Application提供的函数及其用法。
2015-07-15 18:57:17 7405 1
原创 Android清单文件详解(二) ---- 应用程序权限声明
我们知道,Android系统的各个模块提供了非常强大的功能(比如电话,电源和设置等),通过使用这些功能,应用程序可以表现的更强大,更灵活。不过,使用这些功能并不是无条件的,而是需要拥有一些权限。接下来,我们就开始讲解另一个非常重要的知识点,其中主要包括应用程序的权限声明,自定义应用程序的访问权限和SDK版本限定。1.uses-permission——应用程序的权限申请;2.permission节点——自定义应用程序的访问权限;3.uses-sdk节点——SDK版本限定;4.instrumentation
2015-07-14 20:05:17 6562
原创 Android清单文件详解(一) ---- 一切从<manifest>开始
在AndroidManifest.xml文件中,首先看到是的节点,它是整个应用程序的基本属性,涵盖了默认进程名字,应用程序标识,安装位置,对系统的要求以及应用程序的版本等。它是AndroidManifest.xml文件的根节点,其中必须包含一个节点,并且必须指定xmlns:android和package属性,其语法如下面的代码所示:package="string"android
2015-07-13 18:57:42 24199
原创 Android OpenGL ES(九)----构建几何物体
1.三角形扇一个三角形扇以一个中心顶点作为起始,使用相邻的两个顶点创建第一个三角形,接下来的每个顶点都会创建一个三角形,围绕起始的中心点按扇形展开。为了使这个扇形闭合,我们只需要在最后重复第二个点。(以长方形为例)构建三角形扇的步骤,如下图所示:要使用OpenGL绘制这个三角形扇,需要在渲染类的onDrawFrame()中,使用如下方法:GLES20.g
2015-07-01 20:30:33 4307
原创 Android OpenGL ES(八)----纹理编程框架
1.把纹理加载进OpenGL中,2.创建新的着色器集合,3.为顶点数据创建新的类结构,4.为着色器程序添加类,5.绘制纹理。我们的第一个任务就是把一个图像文件的数据加载到一个OpenGL的纹理中。作为开始,让我们重新舍弃第二篇的框架,重新创建一个程序,新建一个util工具包,在该包下创建一个新类TextureHelper,我们将以下面的方法签名开始这个方法会把Android上下文,和资源ID作为输入参数,并返回加载图像的OpenGL纹理的ID。开始时,我们会使用创建其他OpenGL对象时一样的模式生成一个新
2015-06-28 20:50:13 4676 1
原创 Android OpenGL ES(七)----理解纹理与纹理过滤
1.理解纹理 OpenGL中的纹理可以用来表示图像,照片,甚至由一个数学算法生成的分形数据。每个二维的纹理都由许多小的纹理元素组成,它们是小块的数据,类似于我们前面讨论过的片段和像素。要使用纹理,最常用的方式是直接从一个图像文件加载数据。 每个二维纹理都有其自己的坐标空间,其范围是从一个拐角的(0,0)到另一个拐角的(1,1)。按照惯例,一个维度叫做S,而另一个称为T。当我们想要把
2015-06-27 20:05:37 6432
原创 Android OpenGL ES(六)----进入三维在代码中创建投影矩阵和旋转矩阵
我们现在准备好在代码中添加透视投影了。Android的Matrix类为它准备了两个方法------frustumM()和perspectiveM()。不幸的是,frustumM()的个缺陷,它会影响某些类型的投影,而perspectiveM()只是从Android的ICS版本开始才被引入,在早期的Android版本里并没有这个方法。我们可以简单地支持ICS及其以上的版本,但是这样会丢掉很大一部分市
2015-06-26 19:39:33 8486 4
转载 Android OpenGL ES(五)----进入三维正交投影和透视投影推导
在3D图形程序的基本矩阵变换中,投影矩阵是其中比较复杂的。平移和缩放浏览一下就能理解,旋转矩阵只要掌握了三角函数知识也可以理解,但投影矩阵有点棘手。如果你曾经看过投影矩阵,你会发现你的常识不足以告诉你它是怎么来的。而且,我在网上还未看到许多关于如何推导投影矩阵的教程资源。本文的话题就是如何推导投影矩阵。 对于刚刚开始接触3D图形的人,我应该指出,理解投影矩阵如何推
2015-06-25 19:32:23 7755 4
原创 Android OpenGL ES(四)----调整屏幕的宽高比
1.宽高比问题我们现在相当熟悉这样一个事实,在OpenGL里,我们要渲染的一切物体都要映射到X轴和Y轴上[-1,1]的范围内,对于Z轴也一样。这个范围内的坐标被称为归一化设备坐标,其独立于屏幕实际尺寸或形状。不幸的是,因为它们独立于实际的屏幕尺寸,如果直接使用它们,我们就会遇到问题,例如在横屏模式下被压扁的桌子。假设实际的设备分辨率以像素为单位是1280*720,这
2015-06-24 20:02:00 7123
原创 Android OpenGL ES(三)----编程框架
首先当然是创建Android项目,你可以选择最新的Android Studio也可以选择eclipse都是一样的。我们重点讲解开发OpenGL ES的流程1.定义顶点着色器和片段着色器第一节我们讲解的已经很细致了,为了便于理解在这里在详细的说明一下。并且换一种方式定义着色器。我们知道第一篇定义的顶点的坐标和颜色是分开的,这样可以但如果把它们放在一起会方便许多。假设我们要绘制一个长方
2015-06-23 21:00:49 5444
原创 Android OpenGL ES(二)----平滑着色
直线或者三角形上的每个片段混合后的颜色可以用一个varying生成。我们不仅能混合颜色,还可以给varying传递任何值,OpenGL会选择属于那条直线的两个值,或者属于那个三角形的三个值,并平滑地在那个基本图元上混合这些值,每个片段都会有一个不同的值,并平滑地在那个图元上混合这些值,每个片段都会有一个不同的值。这种混合是使用线性插值实现的。要了解它是怎么工作的,让我们首先以一条直线为例开始讲解。
2015-06-22 19:53:38 4321
原创 Android OpenGL ES(一)----必备知识
1.手机的坐标空间我们都知道要想在手机上随心所欲的绘制图形,就必须了解手机的坐标体系。下图就是将坐标映射到手机屏幕的坐标。 图1手机屏幕基本坐标系2.OpenGL基本图形在OpenGL里,只能绘制点,直线以及三角形。三角形是最基本的图形,因为它的结构如此稳定,它随处可见,比如桥梁的结构化构件,它有三条边用来连接它的三个顶点,如果我们拿掉其
2015-06-21 20:35:32 7548 5
原创 Android文字转语音
虽然视觉上的反馈通常是给用户提供信息最快的方式,但这要求用户把注意力设备上。当用户不能查看设备时,则需要一些其他通信的方法。Android提供了强大的文字转语音Text-to-Speech,TTS API。使开发者能够在应用中添加语音通知和其他语音反馈功能,而不要求用户看着屏幕。下面的代码展示了如何使用TTS API:public class TextToSpeechDemo impl
2015-05-29 20:39:44 12198 1
原创 Android语音识别(本地+第三方)
语音识别主要的功能就是在用户不方便输入的时候一个替代输入的选择。1.本地语音识别下面的代码首先创建SpeechRecognizer对象,并设置回调函数监听器。当在点击监听器中调用doSpeechRecognition()方法时,会使用语言参数和一个指示在处理过程中分发部分结果的标志参数初始化语音识别。public class MainActivity extends
2015-05-28 20:01:09 18041 2
原创 Android高级音频应用
说到音频应用,首先想到的就是音乐播放器。有些播放器可以播放流媒体,有些可以播放本地音乐文件。随着Android平台的演变,需要更多高级的音频API。好在谷歌新增了这方面的API,支持低延迟的音频流媒体和录制。Android音频API提供了一些高级的功能,开发者可以把它们集成到自己的应用中。有了这些API,现在可以更容易地实现VoIP应用程序,构建定制的流媒体音乐客户端,实现低延迟的游戏音效。此
2015-05-27 14:29:53 2590
原创 Android应用数据备份
在Android上可以很方便地管理数据备份,那些不慎丢失设备的用户会对该功能感激不尽。备份数据会很安全地存储在云端,并且只在具有相同谷歌ID设备上恢复数据。下面是典型的AndroidManifest.xml文件片段:android:allowBackup="true"android:backupAgent="MyBackupAgent"android:icon="@drawab
2015-05-26 14:20:31 4602
原创 Android使用NDK(从java调用本地函数'JNI')
当编写一个混合有本地C代码和Java的应用程序时,需要使用Java本地接口(JNI)作为连接桥梁。JNI作为一个软件层和API,允许使用本地代码调用Java对象的方法,同时也允许在Java方法中调用本地函数。在Java端,开发者所需要做的仅仅是在连接本地函数的方法之前加上native关键字。这样VM就会去寻找这个本地函数。1.从Java调用本地函数从Java调用本地函数时,需要在类中定
2015-05-25 20:52:56 4802
python音频处理thinkdsp.zip
2020-03-06
Android Support Design Library之TabLayout
2015-12-31
网易新闻之24小时要闻
2015-10-29
Protocol Buffers 2.6.1 full source
2015-05-22
VA_X_Setup1908.exe
2012-08-21
友盟qq登录错误no permission to write apn setting
2016-01-17
Android listpopupwindow怎么让其一直显示
2016-01-16
Android CardView的边框怎么去掉?
2015-12-26
二层爬虫程序数据获取问题?
2015-12-01
深层次的网络爬虫怎么实现?
2015-11-30
android动画问题,XML写闪烁,动态代码写为什么不闪烁?
2015-10-01
Android输入法挤压问题
2015-09-23
为什么drozer命令会出现下图的结果,别人为什么有详细信息?
2015-08-17
RIL中的I/O事件和超时事件和区别?
2015-08-10
Linux文件描述符相关问题?
2015-08-06
openGL关于圆柱的一些问题?
2015-06-30
openGL关于圆柱的一些问题?
2015-06-29
TA创建的收藏夹 TA关注的收藏夹
TA关注的人