![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
高质量Android
黄飞_hf
读书明智,读书明理。
展开
-
在Canvas上显示动画
如果想为自定义的UI控件添加动画效果,会发现动画相关的API是很有限的。那么有没有API可以直接向屏幕绘图呢?答案是肯定的。Android提供了Canvas满足这一要求。原创 2015-11-03 22:45:04 · 1067 阅读 · 0 评论 -
更改Toast显示位置的技巧
根据应用程序布局的不同,我们可能需要将Toast显示在其他位置,比如,在指定视图的顶部显示一个Toast。原创 2015-11-14 18:54:11 · 3436 阅读 · 0 评论 -
移除背景以提升Activity启动速度
Android SDK中提供了Hierarchy Viewer工具,该工具可以用来检测未被使用的视图以减少视图树的层次。如果开发者通过该工具浏览一颗视图树,会发现许多不可控的节点。接下来,我们来看看这些节点是什么以及如何微调它们来提升Activity的启动速度。原创 2015-11-14 19:48:52 · 2098 阅读 · 0 评论 -
在发布正式版本前移除日志语句
移除日志对于保持Logcat输出的清晰整洁是很重要的。另外,在代码中留下过多日志也会暴露一些开发者不想泄漏的敏感信息。我认为,移除日志的最佳方法是使用ProGuard工具。ProGuard可以移除无用代码,或者使用语义模糊的名称来重命名类、变量和方法,以此达到压缩、优化和混淆代码的目的。这样。生成的APK体积更小,并且更不易被逆向工程。原创 2015-11-21 16:42:16 · 559 阅读 · 0 评论 -
使用Gallery创建向导表单
当需要用户填充一个较长的表单时,开发者或许会找不到头绪。在接下来的这个例子中,我们会使用Gallery控件创建一个具有多个表单项的用户注册表单。原创 2015-11-19 21:44:27 · 606 阅读 · 1 评论 -
使用Hierarchy Viewer工具移除不必要的视图
Hierarchy Viewer工具可以用来查看视图树(View Tree)并分析视图树中各个视图在测量、布局、绘制阶段所消耗的时间。通过该工具提供的信息,开发者可以找出视图树中那些不必要的视图以及性能瓶颈。原创 2015-11-21 17:25:09 · 722 阅读 · 0 评论 -
Android开发模式:模型—视图—主导器模式
我们有可能使用过MVC(Model—View—Controller)模式,但当我们用更优的方法测试Android代码时,使用MVP(模型—视图—主导器:Model—View—Presenter)模式可能更合适。原创 2015-11-22 17:51:54 · 553 阅读 · 0 评论 -
使用Android库项目时适用的架构模式
在Android库项目(Library Project)发布之前,在不同Android项目间共享代码是很困难甚至是不可能的。通常使用JAR包共享Java代码,但是却无法共享那些需要引用资源文件的代码。共享Activity或者自定义视图是不可能的,因为开发者无法把资源文件添加到JAR包中,供其它应用程序使用。为了解决共享代码的问题,Android库项目应运而生了。原创 2015-11-22 20:02:53 · 407 阅读 · 0 评论 -
为ListView添加分段标头
在该Demo中,有一个分段标头(section header)随列表滚动,当前分段标头一直显示在屏幕顶端。在下图中,突出显示的字母就是分段标头,其下方的列表项显示首字母与分段标头相同的国家。原创 2015-12-19 12:33:26 · 1267 阅读 · 0 评论 -
使用Activity和Delegate与适配器交互
在这个Demo里,我们会分析如何通过委托模式(Delegation Pattern)帮助开发者把所有的业务逻辑从适配器中移到Activity中。我们创建一个简单的应用程序,通过该应用程序可以向列表中添加电话号码,列表中每一行都有一个Remove按钮,用于删除电话号码。原创 2015-12-19 16:04:35 · 4031 阅读 · 0 评论 -
VideoView的转屏处理技巧
当我们观看视频时,往往喜欢切换到横屏模式,那当屏幕旋转时,如何使视频全屏显示?原创 2015-11-14 16:36:43 · 3880 阅读 · 0 评论 -
在onCreate()方法中获取View的宽度与高度
当我们试图在Activity的onCreate()方法中获取控件的宽和高时,遗憾的是如果我们在onCreate()方法中调用View的getHeight()和getWidth()方法,会发现返回值都是0。为什么会是0呢?原创 2015-11-14 13:40:10 · 1989 阅读 · 1 评论 -
为背景添加圆角边框
若我们需要在应用程序中添加一个带圆角边框的灰色Button,且不能使用图片,我们应如何办?原创 2015-11-13 21:43:48 · 748 阅读 · 0 评论 -
为ViewGroup的子视图添加悦目的动画效果
Android提供了LayoutAnimationController类,用于为布局或者ViewGroup的子视图添加动画效果。有一点需要强调,开发者不可以为每个子视图分别指定不同的动画效果,但是LayoutAnimationController可以决定各个子视图显示动画效果的时间。使用LayoutAnimationController有两种方式:直接在代码中使用或者在XML文件中配置。原创 2015-11-02 21:53:02 · 792 阅读 · 0 评论 -
使用TextSwitcher和ImageSwitcher实现平滑过渡
更改视图中的内容是多数应用程序的基本功能,但是这未必是单调无趣的。如果使用默认的TextView控件,你会发现当切换其内容时,并没有良好的视觉体验。因此如果有一种方法可以为内容切换添加动画效果就太好了。为了使过渡过程的视觉效果更自然,Android提供了TextSwitcher和ImageSwitcher这两个类分别代替TextView与ImageView。原创 2015-10-26 22:08:34 · 492 阅读 · 0 评论 -
附加Ken Burns特效的幻灯片
Ken Burns特效只不过是视频产品中使用的一种平移和缩放静态图片的特效。:要实现上述功能,需要使用Jake Wharton开发的Nine Old Androids库。这个库可以让开发者在旧版本上使用Android3.0的动画API。原创 2015-11-05 22:41:54 · 641 阅读 · 0 评论 -
使用layout_weight属性实现视图的居中显示
将按钮居中显示,并且占据其父视图宽度的一半,该如何做呢?原创 2015-10-25 17:02:00 · 951 阅读 · 0 评论 -
使用延迟加载以及避免代码重复
在XML文件中使用include标签来避免代码的重复以及使用ViewStub类来实现视图的延迟加载。原创 2015-10-25 19:28:38 · 464 阅读 · 0 评论 -
创建定制的ViewGroup
创建定制的ViewGroup原创 2015-10-25 21:24:03 · 783 阅读 · 0 评论 -
避免在EditText中验证日期
假设我们开发一个应用程序,里面使用了大量日期输入框。但我们不想验证每个日期字段,因此得想出一个简单的方法避免这个验证过程。该方法的思路是:开发一个外观看起来与EditText相同的Button,点击该Button后,会显示一个DatePicker控件。原创 2015-11-11 21:45:16 · 462 阅读 · 0 评论 -
格式化TextView的文本
很多情况下,开发者需要添加一些特殊样式的文本突出重点内容或者为链接提供视觉反馈,以此提高应用程序的用户友好度。原创 2015-11-12 20:57:31 · 701 阅读 · 0 评论 -
为文本添加发亮的效果
假如我们要开发一个显示高亮绿灯的数字时钟,我们该怎么办?其实我们通过微调TextView控件来生成这样的效果。原创 2015-11-13 20:09:23 · 697 阅读 · 0 评论 -
ListView的选择模式
在这个demo里,我们会掌握如何使用ListView创建一个国家选择器。该选择器的运行效果如下图所示。当选择了一个国家时,点击“Pick Country”按钮,就会在Toast中显示出国家名。原创 2015-12-19 18:38:18 · 1075 阅读 · 0 评论