- 博客(425)
- 资源 (7)
- 收藏
- 关注
原创 第九章 多语言环境的支持和多屏幕的适配(3)
9.3.4详细说明DensityDensity值,表示每英寸有多少个显示点,它与屏幕分辨率是两个概念。HVGA屏density=160;QVGA屏density=120;WVGA屏density=240;WQVGA屏density=120。apk的资源包中,当屏幕density=240时,使用hdpi标签的资源;当屏幕density=160时,使用mdpi标签的资源;当屏幕density=120时
2016-03-23 13:49:49 2779 1
原创 第九章 多语言环境的支持和多屏幕的适配(2)
9.3多屏幕的适配9.3.1屏幕参数的基本概念Android手机屏幕大小不一,有480x320、640x360、800x480等等,还包括不同屏幕密度,怎样才能让应用程序自动适应不同的屏幕呢?首先我们来了解几个基本概念:1)屏幕尺寸Screensize即显示屏幕的实际大小,按照屏幕的对角线进行测量。为简单起见,Android把所有的屏幕大小分为四种尺寸:小、普通、大、超大(分别对应:small、n
2016-03-23 13:47:51 2695
原创 第九章 多语言环境的支持和多屏幕的适配(1)
第九章 多语言环境的支持和多屏幕的适配资源是在代码中使用到的,并且在编译时被打包进应用程序的附加文件。出于加载效率的考虑,资源被从代码中分离出来,而且XML文件被编译进二进制代码中。在Android中,程序代码可以不直接和资源发生关系,而是通过R文件提供的索引来间接的引用某一个资源。Android系统会自动根据用户当前的环境,和屏幕分辨率情况,自动选用最合适的资源。正是基于Android系统这种独
2016-03-23 13:46:33 3059
原创 第八章 网络的时代—网络开发(4)
8.5轻量级的数据交换格式—JSON8.5.1 客户端与服务器端的数据交互在Android应用开发中,尤其是网络应用的开发,我们经常需要从网络上获取数据,而不仅仅从本地数据库或者本地文件中取得数据,这个时候就涉及到客户端与服务器端的数据交互了。客户端如何需要与服务器端进行数据交互,就需要约定一种协议或者是数据交换格式。那么一般的,Android客户端与服务器端进行数据交互有哪些方式呢?根据业务需求
2016-03-21 11:43:11 3125
原创 第八章 网络的时代—网络开发(3)
8.4耗时操作的通用方式—多线程与异步处理Android通过一个主线程对用户界面进行更新,这个线程是UI线程。如果程序不使用任何并发构建、Android的所有代码都会在这个线程中运行。当我们在进行网络连接等比较耗时的操作时,如果此连接动作直接在主线程,也就是UI线程中处理,会发生什么情况呢?整个程序处于等待状态,界面似乎是“假死”掉了。如果5秒钟以上没有响应,系统就会弹出对话框提示是否要强制关闭应
2016-03-21 11:41:10 2786
原创 第八章 网络的时代—网络开发(2)
8.3基于最成熟的Web协议—HTTP协议编程8.3.1 HTTP协议简介超文本传输协定(HTTP,HyperTextTransferProtocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。HTTP是一个客户端和服务器端请求和应答的标准(TCP)。客户端是终端用户,服务器端是网站。通过使用Web浏
2016-03-21 11:37:03 2708
原创 第八章 网络的时代—网络开发(1)
在最近几年里,移动互联网已经是一个炙手可热的领域。移动互联网,简单的说,就是互联网的延伸,将互联网从电脑延伸至手机等移动设备上。伴随着智能手机的普及,以及基于智能手机的各种应用和服务的滋生,如今的移动互联网真正意义上进入了高速发展的阶段。而Android作为智能手机的重要平台之一,必然就会有越来越多的Android应用瞄准这个市场。在现有的Android应用中,有很大一部分都是网络相关的应用。所以
2016-03-21 11:35:06 3278
原创 SwipeRefreshLayout与ViewPager滑动事件冲突解决
问题描述:开发中发现,SwipeRefreshLayout的下拉刷新,与ViewPager开发的banner的左右滑动事件有一点冲突,导致banner的左右滑动不够顺畅。很容易在banner的左右滑动的过程中,触发SwipeRefreshLayout的下拉刷新,从而导致banner左右滑动的体验很差。解决方案:可以在ViewPager的滑动时候设置SwipeRefreshLayout暂时不可用,V
2016-01-13 11:42:38 6961 1
原创 2015 -> 2016
2015年。2015年前几个月,一直住在三亚,每天过着老年人般的生活。每天吃饭睡觉看电视遛弯游泳,生活倒也惬意。4月份开始,从三亚一路开车回到上海,开开停停,最后享受了一次沿路的风景和惬意。5月回到上海,开始找工作,猎头推荐到了一家第三方独立理财公司,做互联网金融产品app,主要做信托和私募。我本来自学过金融行业的课程,所以对金融行业有一点了解,工作了,更深入的了解了不少金融行业的知识。9月换了工
2016-01-08 11:47:02 2637 3
转载 Android应用安全防御
Android应用安全防御 http://www.cnblogs.com/GOODHACKER/P/3864680.HTML
2015-07-01 16:27:31 2854
转载 Android开源项目分类汇总
Android开源项目分类汇总https://github.com/singwhatiwanna/android-open-project个人记录于此,同时分享给大家。
2015-06-03 10:47:26 2501
原创 第七章 实现炫酷效果—图像和动画(6)
7.8 渐变动画—Frame AnimationFrameAnimation是按顺序播放事先做好的图像,跟播放电影类似。可以参考前面的7.3.7章节——《简单的帧动画—AnimationDrawable》。 经验分享: AnimationDrawable也可以通过代码来生成AnimationDrawable对象: AnimationDrawable mAnimationDrawable
2015-05-31 12:45:45 3279 2
原创 第七章 实现炫酷效果—图像和动画(5)
7.7 渐变动画—Tween Animation7.7.1Tween Animation简介一个Tween动画将对视图对象中的内容进行一系列简单的转换(位置,大小,旋转,透明性)。如果你有一个文本视图对象,你可以移动它,旋转它,让它变大或让它变小,如果文字下面还有背景图像,背景图像也会随着文件进行转换。可以使用XML来定义Tween Animation。首先将动画的XML文件在工程中res/ani
2015-05-31 12:43:18 3134 1
原创 第七章 实现炫酷效果—图像和动画(4)
7.4 轻量级图片—PictureDrawable、Bitmap都是比较常用的图形对象类。我们在阅读Android SDK文档还会发现一个类:android.graphics.Picture。那么Picture又是做什么用的呢?相对于Drawable和Bitmap而言,Picture对象就小巧的多,它并不存储实际的像素,仅仅记录了每个绘制的过程。整个类提供了两个重载形式,其中比较特别的是Pictu
2015-05-31 12:37:36 2545
原创 第七章 实现炫酷效果—图像和动画(3)
7.3.6超炫的特效—ShapeDrawable当你想去使用一些常用的图形,ShapeDrawable对象可能会对你有很大的帮助。当然通过ShapeDrawable,你可以通过编程画出任何你想到的图像与样式,因为ShapeDrawable有自己的draw()方法。ShapeDrawable继承了Drawable,所以你可以调用Drawable里有的函数,使用方法和其他的Drawable的子类差不多
2015-05-31 12:33:53 3031
原创 第七章 实现炫酷效果—图像和动画(2)
7.3 变化多端—Drawable(绘图类)Drawable资源是Android系统中使用最广泛、最灵活的资源,可以直接使用png、jpg、gif、9.png等图片做为资源文件,也可以使用多种XML文件做为资源文件。下面详细介绍下各种Drawable资源。7.3.1Drawable的一些常用子类Android平台的Drawable代表可以绘制在屏幕上的资源,可以使用getDrawable(int)
2015-05-31 12:29:59 2932 1
原创 第七章 实现炫酷效果—图像和动画(1)
第七章实现炫酷效果—图像和动画学完上一章,相信读者对Android画图核心部分有了一定的了解。为了实现更加炫酷的效果,我们可能会在我们的应用中使用大量的图像和动画效果。本章我们将详细介绍Android中的各种图像对象的使用,以及动画的使用。学习完本章,相信读者可以独立开发出有着绚丽的视觉效果的Android应用了。7.1 Android的几种常用图像类型Android中的图像对象,主要有andro
2015-05-31 12:24:28 3534
原创 第六章 一张白纸好作画—Canvas画布(5)
6.4.8区域 android.graphics.Region与Region.Op在Canvas的绘画时,我们可能碰到止需要显示半个矩形,或者显示一部分图片,那么我们就要用到Canvas的设置区域的方法,有clipRect(Rect rect,Region.Op op)、clipRegion(Region region)这两个方法。Region表示的是一个区域和Rect不同的是,它可以表示的一个不
2015-02-24 09:31:08 3497 1
原创 第六章 一张白纸好作画—Canvas画布(4)
6.4.4路径android.graphics.Path当我们的需求是一个不规则的图形的时候,Canvas的drawRect等方法就不行了,这里就要用到drawPath(Path path, Paint paint)方法来按路径绘画一个形状。Canvas还有一个方法clipPath(Path path)。这个方法用于按照设计的路径来设置Canvas中的有效区域。下面我们就介绍下路径类,它是一个多个
2015-02-24 09:23:06 3616 1
原创 第六章 一张白纸好作画—Canvas画布(3)
6.4 Canvas绘制的辅助类通过前面对Canvas的介绍,我们明白Canvas可以做很多事,绘画图形,变换等,当然在手机世界里我们看到的远远不是简单的图形就可以表现完全的,还有颜色,字体,等各种各样的元素组成,专门的工作交给专门的类来处理。下面我们介绍一些Canvas常用到的一些辅助类。6.4.1画笔android.graphics.Paint在Canvas绘制的辅助类中,使用频率最多的是画笔
2015-02-24 09:20:46 3439
原创 第六章 一张白纸好作画—Canvas画布(2)
6.2 Canvas常用绘制方法前面一节我们了解到如果创建一个画布,接下来我们就将要在这个画布上进行绘制。Android SDK的Canvas类中包含了一系列用于绘制的方法,方法分为3种类型,下面简单介绍这些常用的绘制方法。 1)Canvas类的几何图形(Geometry)方面的方法用于绘制点、绘制线、绘制矩形、绘制圆弧等。其中一些主要的方法如表6-1所示: 方法 返回值 说明 dr
2015-02-06 21:24:54 2098 2
原创 第六章 一张白纸好作画—Canvas画布(1)
第六章 一张白纸好作画—Canvas画布前面的相关章节,我们详细说明过Android UI组件的使用。通过前面章节的学习,开发者已经可以开发出令人满意的UI效果了。但是有的时候,我们需要实现更加漂亮的UI效果,此时可能就无法直接使用UI组件,而是需要自己画出各种UI效果了。在Android中,Canvas就是一个画布,开发者可以在画布上绘制想要的任何东西。在本章中,我们将介绍Canvas及相关的技
2015-02-04 09:53:13 3094
原创 第五章 以数据为中心—数据存取(6)
5.3 安全方便简单—使用SharedPreferences前面操作文件和数据库都相对比较复杂,需要打开,读取,关闭等等操作。可能有人就想,如果我只是需要存取几个简单的数据,有没有简单点的方法呢?的确,在Android中也封装了一种轻便的数据存取的方法—Preferences。Preferences是一种轻量级的数据存储机制,它将一些简单数据类型的数据,包括boolean类型、int类型、floa
2015-02-03 09:11:06 2204 1
原创 第五章 以数据为中心—数据存取(5)
5.2.3 添加、删除和修改操作下面具体说明如何进行添加、删除、修改的操作。下面我们将这些动作封装在一个类DBHelper中,通过这个类的几个方法,可以具体看到如何进行数据库的各种操作。 // import略 public class DBHelper { private static final String[] COLS = new String[] { "_id",
2015-01-29 09:51:44 1735
原创 第五章 以数据为中心—数据存取(4)
5.2 通用的数据操作方式—数据库说到数据的存取,数据库肯定是一个常用的解决方案。Android中也有它自己的数据库,下面我们来看看Android中的数据库与一般的数据库有什么不一样的地方。5.2.1SQLite数据库介绍目前在Android系统中集成的是SQLite3版本,它支持SQL语句,它是一个轻量级的嵌入式数据库。SQLite支持NULL、INTEGER、REAL、TEXT和BLOB数据类
2015-01-29 09:49:47 1591
原创 第五章 以数据为中心—数据存取(3)
5.1.3自由操作随心所欲—序列化和反序列化在Android开发中,除了经常会操作普通的文本文件和XML文件以外,也会经常使用序列化和反序列化的方式传递或者存取数据。Android序列化对象主要有两种方法,实现Serializable接口、或者实现Parcelable接口。实现Serializable接口是Java SE本身就支持的,而Parcelable是Android特有的功能,效率比实现Se
2015-01-29 09:47:02 1730
原创 第五章 以数据为中心—数据存取(2)
5.1.2结构性的文件—读写XML文件通过上面的介绍我们可以自由的操作Android中普通的文本文件了,下面我们来介绍下Android中比较常用的结构性的文件—XML文件。XML,可扩展标记语言(Extensible Markup Language),用于标记电子文件,使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。AndroidSDK提供
2015-01-26 19:55:22 1849
原创 第五章 以数据为中心—数据存取(1)
第五章以数据为中心—数据存取典型的桌面操作系统提供一种公共文件系统——任何应用软件可以使用它来存储和读取文件,该文件也可以被其它的应用软件所读取(会有一些权限控制设定)。而Android 采用了一种不同的系统。在Android 中,所有的应用软件数据(包括文件)为该应用软件所私有。然而,Android 同样也提供了一种标准方式供应用软件将私有数据开放给其它应用软件。这一章将描述一个应用软件存储和获
2015-01-26 19:51:47 2458
原创 第四章 Android开发三大基石—Activity、Service和Handler(7)
4.3.2Android中消息机制的详细分析下面,我们就来详细分析一下Android中的消息机制。熟悉Windows编程的朋友知道Windows程序是消息驱动的,并且有全局的消息循环系统。Google参考了Windows的消息循环机制,也在Android系统中实现了消息循环机制。Android通过Looper、Handler来实现消息循环机制。Android的消息循环是针对线程的,每个线程都可以有
2015-01-24 10:28:49 2560
原创 第四章 Android开发三大基石—Activity、Service和Handler(6)
4.3 Android线程间的通信—消息机制在Android程序运行中,线程之间或者线程内部进行信息交互时经常会使用到消息,如果我们熟悉这些基础的东西及其内部原理,将会使我们的Android开发变的更加容易,从而更好地架构系统。下面,就让我们来看看Android中的消息机制到底是怎样一回事吧。4.3.1消息的传递—Handler的使用在Android中,线程之间进行信息交互时经常会使用消息,那么,
2015-01-24 10:26:19 2116
原创 第四章 Android开发三大基石—Activity、Service和Handler(5)
2)和Activity交互的本地服务刚刚我们介绍的Service是不需要与Activity进行交互的,现在我们再来看看与Activity交互的本地服务。首先,我们新建一个BindLocalServide类继承自Serivce,代码如下: // import略 public class BindLocalServideextends Service { private sta
2015-01-21 09:55:38 2200 2
原创 第四章 Android开发三大基石—Activity、Service和Handler(4)
4.2 千变万化的服务-Service开发Service是Android系统中运行在后台、不和用户交互应用组件。它和Activity的级别差不多,只能在后台运行。每个Service必须在manifest文件中 通过来声明。4.2.1 Service的生命周期Service的生命周期并不像Activity那么复杂,它只继承了onCreate(),onStart(),onDestroy()三个方法,当
2015-01-21 09:52:07 3339
原创 第四章 Android开发三大基石—Activity、Service和Handler(3)
4.1.5Activity交互—Activity跳转一般的,我们的应用程序都不会简单到只有一个界面,而是会有很多个界面,这个时候我们就会创建多个Activity,然后根据业务逻辑在多个Activity之间进行跳转。我们可以用切换Layout的方式进行手机页面间的转换。但是如果要转换的页面并不单单只是背景、颜色或文字内容的不同,而是需要对整个Activity进行置换,并将主控权交给新的Activit
2015-01-21 09:45:26 2454
原创 第四章 Android开发三大基石—Activity、Service和Handler(2)
4.1.3Activity的创建在 Android 中创建一个 Activity 是很简单的事情,编写一个继承自 android.app.Activity的类,并在 AndroidManifest.xml文件中声明即可。下面,我们来看一个例子,我们创建一个MyActivity类继承自Activity,代码如下: public class MyActivity extends Activity
2015-01-18 15:27:19 2285
原创 第四章 Android开发三大基石—Activity、Service和Handler(1)
第四章 Android开发三大基石—Activity、Service和Handler 学习Android开发,首先就不得不学习Activity和Service这两个组件。Activity是有界面的程序,几乎承载着用户对应用程序的所有操作。而Service是没有界面的程序,它是所谓的服务,也叫后台程序。掌握好它们,是我们学习Android开发必不可少的环节。Handler是Android开发中
2015-01-18 15:24:59 2643
原创 第三章 界面UI的基石—UI布局(5)
3.3 样式(Style)和主题(Theme)的使用3.3.1样式(Style)的使用不管是应用开发还是游戏开发,我们开发出来的产品,大部分的时候还是要让更多的人来使用的。因此,除了功能上的完善之外,布局上的合理而美观也是我们需要考虑的问题。Style和Theme的设计就是提升用户体验的关键之一。Style和Theme都是为了改变样式,但是二者又略有区别:1)Style是针对窗体元素级别的,改变指
2015-01-15 10:26:37 1726
原创 第三章 界面UI的基石—UI布局(4)
3.2.5表单布局(TableLayout)TableLayout,即表单布局,以行和列的形式管理控件。每行为一个TableRow对象,也可以为一个View对象。当为View对象时,该对象将横跨该行所有列。同样的,我们也以一个简单的例子来加以说明,看完例子之后相信大家对TableLayout的应用会有一个比较全面的了解。 android:layout_width="fill_p
2015-01-12 10:45:04 1735
原创 第三章 界面UI的基石—UI布局(3)
3.2.4框架布局(FrameLayout)FrameLayout是五大布局中最简单的一个布局,也称为层布局或者是帧布局。在这个布局中,整个界面被当成一块空白备用区域,所有的子元素都不能被指定放置的位置,它们统统放于这块区域的左上角,层叠式排列。此布局无法控制子控件的大小和位置,但是子控件自身可以控件其大小和位置。后一个子元素将会直接在前一个子元素之上进行覆盖填充,把它们部份或全部挡住(除非后一个
2015-01-08 09:16:43 1944
原创 第三章 界面UI的基石—UI布局(2)
3.2 百花齐放—各种Layout布局3.2.1Layout布局的简单介绍一般的,一个Android视图中会有很多的控件。为了界面的合理、美观,我们需要让它们按照我们设计好的思路排列在界面上,那么,我们就需要容器来存放这些控件,并控制它们的位置排列,就像HTML中的div、table一样,Android布局也起到了同样的作用。Android布局有很多种,它们各有各的特点,分别应用在不同的场合,而且
2015-01-08 09:14:12 2552
原创 第三章 界面UI的基石—UI布局(1)
第三章界面UI的基石—UI布局上一章我们一起学习了Android中的常用组件及一些UI编程的技术。在此基础上,我们就可以将这些组件有效的组织起来,构成一个美观、合理的界面。在本章,我们先来详细说明Android中UI的几种布局,通过这几种布局就能将组件有效的组合到一起。然后说明在Android开发中如何应用样式和主题,通过样式和主题,可以预定义一系列的属性值,使整个应用程序形成统一的显示风格。3.
2015-01-08 09:06:43 1954
GeoCon源码
2008-05-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人