自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 资源 (65)
  • 收藏
  • 关注

原创 使用Android库项目时适用的架构模式

在Android库项目(Library Project)发布之前,在不同Android项目间共享代码是很困难甚至是不可能的。通常使用JAR包共享Java代码,但是却无法共享那些需要引用资源文件的代码。共享Activity或者自定义视图是不可能的,因为开发者无法把资源文件添加到JAR包中,供其它应用程序使用。为了解决共享代码的问题,Android库项目应运而生了。

2015-11-22 20:02:53 415

原创 Android开发模式:模型—视图—主导器模式

我们有可能使用过MVC(Model—View—Controller)模式,但当我们用更优的方法测试Android代码时,使用MVP(模型—视图—主导器:Model—View—Presenter)模式可能更合适。

2015-11-22 17:51:54 562

原创 使用Hierarchy Viewer工具移除不必要的视图

Hierarchy Viewer工具可以用来查看视图树(View Tree)并分析视图树中各个视图在测量、布局、绘制阶段所消耗的时间。通过该工具提供的信息,开发者可以找出视图树中那些不必要的视图以及性能瓶颈。

2015-11-21 17:25:09 736

原创 在发布正式版本前移除日志语句

移除日志对于保持Logcat输出的清晰整洁是很重要的。另外,在代码中留下过多日志也会暴露一些开发者不想泄漏的敏感信息。我认为,移除日志的最佳方法是使用ProGuard工具。ProGuard可以移除无用代码,或者使用语义模糊的名称来重命名类、变量和方法,以此达到压缩、优化和混淆代码的目的。这样。生成的APK体积更小,并且更不易被逆向工程。

2015-11-21 16:42:16 568

原创 使用Gallery创建向导表单

当需要用户填充一个较长的表单时,开发者或许会找不到头绪。在接下来的这个例子中,我们会使用Gallery控件创建一个具有多个表单项的用户注册表单。

2015-11-19 21:44:27 639 1

原创 移除背景以提升Activity启动速度

Android SDK中提供了Hierarchy Viewer工具,该工具可以用来检测未被使用的视图以减少视图树的层次。如果开发者通过该工具浏览一颗视图树,会发现许多不可控的节点。接下来,我们来看看这些节点是什么以及如何微调它们来提升Activity的启动速度。

2015-11-14 19:48:52 2111

原创 更改Toast显示位置的技巧

根据应用程序布局的不同,我们可能需要将Toast显示在其他位置,比如,在指定视图的顶部显示一个Toast。

2015-11-14 18:54:11 3483

原创 VideoView的转屏处理技巧

当我们观看视频时,往往喜欢切换到横屏模式,那当屏幕旋转时,如何使视频全屏显示?

2015-11-14 16:36:43 3906

原创 在onCreate()方法中获取View的宽度与高度

当我们试图在Activity的onCreate()方法中获取控件的宽和高时,遗憾的是如果我们在onCreate()方法中调用View的getHeight()和getWidth()方法,会发现返回值都是0。为什么会是0呢?

2015-11-14 13:40:10 2016 1

原创 为背景添加圆角边框

若我们需要在应用程序中添加一个带圆角边框的灰色Button,且不能使用图片,我们应如何办?

2015-11-13 21:43:48 760

原创 为文本添加发亮的效果

假如我们要开发一个显示高亮绿灯的数字时钟,我们该怎么办?其实我们通过微调TextView控件来生成这样的效果。

2015-11-13 20:09:23 712

原创 格式化TextView的文本

很多情况下,开发者需要添加一些特殊样式的文本突出重点内容或者为链接提供视觉反馈,以此提高应用程序的用户友好度。

2015-11-12 20:57:31 716

原创 避免在EditText中验证日期

假设我们开发一个应用程序,里面使用了大量日期输入框。但我们不想验证每个日期字段,因此得想出一个简单的方法避免这个验证过程。该方法的思路是:开发一个外观看起来与EditText相同的Button,点击该Button后,会显示一个DatePicker控件。

2015-11-11 21:45:16 470

原创 附加Ken Burns特效的幻灯片

Ken Burns特效只不过是视频产品中使用的一种平移和缩放静态图片的特效。:要实现上述功能,需要使用Jake Wharton开发的Nine Old Androids库。这个库可以让开发者在旧版本上使用Android3.0的动画API。

2015-11-05 22:41:54 656

原创 在Canvas上显示动画

如果想为自定义的UI控件添加动画效果,会发现动画相关的API是很有限的。那么有没有API可以直接向屏幕绘图呢?答案是肯定的。Android提供了Canvas满足这一要求。

2015-11-03 22:45:04 1074

原创 为ViewGroup的子视图添加悦目的动画效果

Android提供了LayoutAnimationController类,用于为布局或者ViewGroup的子视图添加动画效果。有一点需要强调,开发者不可以为每个子视图分别指定不同的动画效果,但是LayoutAnimationController可以决定各个子视图显示动画效果的时间。使用LayoutAnimationController有两种方式:直接在代码中使用或者在XML文件中配置。

2015-11-02 21:53:02 804

Android绘图机制与处理技巧(一)——Android绘图技巧

Android绘图机制与处理技巧(一)——Android绘图技巧

2016-05-23

Android控件架构与自定义控件详解(四)——事件拦截机制分析

Android控件架构与自定义控件详解(四)——事件拦截机制分析

2016-05-15

Android控件架构与自定义控件详解(三)——自定义ViewGroup

ViewGroup存在的目的就是为了对其子View进行管理,为其子View添加显示、响应的规则。因此,自定义ViewGroup通常需要重写onMeasure()方法来对子View进行测量,重写onLayout()方法来确定子View的位置,重写onTouchEvent()方法增加响应事件。

2016-05-15

Android控件架构与自定义控件详解(二)——自定义ViewGroup

ViewGroup存在的目的就是为了对其子View进行管理,为其子View添加显示、响应的规则。因此,自定义ViewGroup通常需要重写onMeasure()方法来对子View进行测量,重写onLayout()方法来确定子View的位置,重写onTouchEvent()方法增加响应事件。

2016-05-15

Android控件架构与自定义控件详解(二)——自定义View

在自定义View时,我们通常会去重写onDraw()方法来绘制View的显示内容。如果该View还需要使用wrap_content属性,那么还必须重写onMeasure()方法。另外,通过自定义attrs属性,还可以设置新的属性配置值。

2016-05-14

ListView使用技巧

ListView使用技巧

2016-05-08

ListView的选择模式

在这个demo里,我们会掌握如何使用ListView创建一个国家选择器。该选择器的运行效果如下图所示。当选择了一个国家时,点击“Pick Country”按钮,就会在Toast中显示出国家名。

2015-12-19

使用Activity和Delegate与适配器交互

在这个Demo里,我们会分析如何通过委托模式(Delegation Pattern)帮助开发者把所有的业务逻辑从适配器中移到Activity中。我们创建一个简单的应用程序,通过该应用程序可以向列表中添加电话号码,列表中每一行都有一个Remove按钮,用于删除电话号码。

2015-12-19

为ListView添加分段标头

在该Demo中,有一个分段标头(section header)随列表滚动,当前分段标头一直显示在屏幕顶端。在下图中,突出显示的字母就是分段标头,其下方的列表项显示首字母与分段标头相同的国家。

2015-12-19

使用Android库项目时适用的架构模式

在Android库项目(Library Project)发布之前,在不同Android项目间共享代码是很困难甚至是不可能的。通常使用JAR包共享Java代码,但是却无法共享那些需要引用资源文件的代码。共享Activity或者自定义视图是不可能的,因为开发者无法把资源文件添加到JAR包中,供其它应用程序使用。为了解决共享代码的问题,Android库项目应运而生了。

2015-11-22

Android开发模式:模型—视图—主导器模式

我们有可能使用过MVC(Model—View—Controller)模式,但当我们用更优的方法测试Android代码时,使用MVP(模型—视图—主导器:Model—View—Presenter)模式可能更合适。

2015-11-22

使用Hierarchy Viewer工具移除不必要的视图

Hierarchy Viewer工具可以用来查看视图树(View Tree)并分析视图树中各个视图在测量、布局、绘制阶段所消耗的时间。通过该工具提供的信息,开发者可以找出视图树中那些不必要的视图以及性能瓶颈。在这个demo中,我们会分析查找并解决上述问题的方法。

2015-11-21

使用Gallery创建向导表单

当需要用户填充一个较长的表单时,开发者或许会找不到头绪。在接下来的这个例子中,我们会使用Gallery控件创建一个具有多个表单项的用户注册表单。

2015-11-20

VideoView的转屏处理技巧

当我们观看视频时,往往喜欢切换到横屏模式,那当屏幕旋转时,如何使视频全屏显示?

2015-11-14

为文本添加发亮的效果

假如我们要开发一个显示高亮绿灯的数字时钟,我们该怎么办?

2015-11-13

附加Ken Burns特效的幻灯片

Ken Burns特效只不过是视频产品中使用的一种平移和缩放静态图片的特效,要实现该特效,需要使用Jake Wharton开发的Nine Old Androids库。这个库可以让开发者在旧版本上使用Android3.0的动画API。

2015-11-06

在Canvas上显示动画

如果想为自定义的UI控件添加动画效果,会发现动画相关的API是很有限的。那么有没有API可以直接向屏幕绘图呢?答案是肯定的。Android提供了Canvas满足这一要求。

2015-11-04

为ViewGroup的子视图添加悦目的动画效果

Android提供了LayoutAnimationController类,用于为布局或者ViewGroup的子视图添加动画效果。

2015-11-02

创建定制的ViewGroup

创建定制的ViewGroup以及理解Android绘制视图的方式

2015-10-26

使用Google地图

使用Google地图以及有关MapView和GooleMap简介。

2015-10-17

使用Loader加载异步数据

使用Loader加载异步数据以及有关Loader、AsyncTaskLoader和CursorLoader的简介

2015-10-17

使用SQLite本地数据库

使用SQLite本地数据库以及有关如何使用的简介。

2015-10-16

移动迷宫——拼图游戏

拼图游戏就是将用户选择的图片根据选择的难度进行分割,并抽出一张图片用空白块代替,同时随机打乱顺序,作为拼图的初始游戏界面。当用户点击空白块周围上下左右相邻的图片时,可以移动该图片,当整个图片的位置都与原始图片一致时,拼图完成。

2016-06-14

Android 5.X 新特性详解(五)——Notification

Google在Android 5.0 上又进一步改进了通知栏,优化了Notification。当长按Notification的时候,会显示消息来源。Notification会有一个从白色到灰色的动画切换效果,最终显示发出这个Notification的调用者。同时,在Android 5.X 设备上,锁屏状态下我们也可以看见Notification通知了。

2016-06-14

Android 5.X 新特性详解(五)——Toolbar

Toolbar与ActionBar最大的区别就是Toolbar更加自由、可控。这也是Google在逐渐使用Toolbar替换ActionBar的原因,要使用Toolbar必须引入appcompat-v7支持,并设置主题为NoActionBar。

2016-06-13

Android 5.X 新特性详解(四)——Material Design 动画效果

Android 5.X 新特性详解(四)——Material Design 动画效果

2016-06-13

Android 5.X 新特性详解(三)——Activity过渡动画

Android 5.X 提供了三种Transition类型。

2016-06-12

Android 5.X 新特性详解(二)——列表与卡片

在Android 5.X 中将使用了很久的ListView做了升级,增加了一个使用更方便、效率更高的控件——RecyclerView。

2016-06-12

Android 5.X 新特性详解(一)——主题、Palette、阴影、着色和裁剪

Android 5.X 系列开始使用新的设计风格Material Design来统一整个Android系统的界面设计风格。

2016-06-08

Android系统信息和Apk应用信息获取

Android系统信息和Apk应用信息获取

2016-06-06

Android动画机制与使用技巧(五)——Android 5.X SVG 矢量动画机制

Google在Android 5.X 中增加了对SVG 矢量图形的支持,这对于创建新的高效率动画具有非常重大的意义。

2016-06-05

Android动画特效

Android动画机制与使用技巧(四)——Android动画特效

2016-06-03

Android动画机制与使用技巧(四)——Android动画特效

Android动画机制与使用技巧(四)——Android动画特效

2016-06-03

自定义动画

创建自定义动画非常简单,只需要实现它的applyTransformation方法的逻辑就可以了,不过通常情况下,还需要覆盖父类的initialize方法来实现一些初始化工作。

2016-06-02

Android绘图机制与处理技巧(五)——View的孪生兄弟SurfaceView

View的孪生兄弟SurfaceView

2016-06-01

Android绘图机制与处理技巧(四)——Android图像处理之画笔特效处理

除了常用的画笔属性,比如普通的画笔(Paint),带边框、填充的style,颜色(Color),宽度(StrokeWidth),抗锯齿(ANTI_ALIAS_FLAG)等,Android还提供了各种各样专业的画笔工具,如记号笔、毛笔、蜡笔等,使用它们可以实现更加丰富的效果。

2016-06-01

Android绘图机制与处理技巧(三)——Android图像处理之图形特效处理

Android绘图机制与处理技巧(三)——Android图像处理之图形特效处理

2016-05-30

Android绘图机制与处理技巧(二)——Android图像处理之色彩特效处理

Android对于图片处理,最常使用到的数据结构是位图——Bitmap,它包含了一张图片所有的数据。整个图片都是由点阵和颜色值组成的,所谓点阵就是一个包含像素的矩阵,每一个元素对应着图片的一个像素。而颜色值——ARGB,分别对应透明图、红、绿、蓝这四个通道分量,它们共同决定了每个像素点显示的颜色。

2016-05-27

Android Scroll分析(三)——ViewDragHelper

Google在其support库中为我们提供了DrawerLayout和SlidingPaneLayout两个布局来帮助我们实现侧边栏滑动的效果。在这两个功能强大的布局后面,有一个鲜为人知却功能强大的类——ViewDragHelper。通过ViewDragHelper,基本可以实现各种不同的滑动、拖放需求。

2016-05-20

Android Scroll分析(二)——实现滑动的五种方法

实现滑动的思想基本是一致的,当触摸View时,系统记下当前触摸点坐标;当手指移动时,系统记下移动后的触摸点坐标,从而获取到相对于前一次坐标点的偏移量,并通过偏移量来修改View的坐标,这样不断重复,从而实现滑动过程。

2016-05-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除