在移动平台上为用户展示数据的一个常用方法是将数据填充进一个List内,而此时需要注意的一点就是: 如何处理需要填充的数据为空的情况? ListView及其他继承自AdapterView的类都有一个简便的处理这种情况的方法:setEmptyView(View)。 当ListView的Adapter为空或者Adapter的isEmp...
2014-05-03 22:02 阅读(1512) 评论(1)
一、MVP介绍 随着UI创建技术的功能日益增强,UI层也履行着越来越多的职责。为了更好地细分视图(View)与模型(Model)的功能,让View专注于处理数据的可视化以及与用户的交互,同时让Model只关系数据的处理,基于MVC概念的MVP(Model-View-Presenter)模式应运而生。 在MVP模式里通常包含4个要素: (1)View:负责绘制UI...
2014-04-29 15:48 阅读(2847) 评论(0)
控件的圆角边框可以使你的App看起来更美观,其实实现起来也很简单。 以创建一个灰色的带圆角边框的Button为例: 一、创建一个ShapeDrawable作为背景 在drawable目录下创建一个button_rounded_background.xml文件: <shape xmlns:android = "http://schemas.android.com/apk/re...
2014-04-25 11:46 阅读(1285) 评论(0)
问题:如何构建一个模拟LED数字时钟的页面?效果如下图所示: 分析:我们可以利用两个TextView来显示,第一个TextView显示LED屏上默认不发光的88:88:88,另一个显示实时的时间并添加发光及阴影效果。但是我们还需要解决显示的字体问题,让它看起来更像是一个真实的LED数字时钟。 解决步骤:(1)自定义一个LedTextView类,继承自TextView,这...
2014-04-25 11:13 阅读(1331) 评论(6)
首先来看一个控件的样例: 手机上类似这样的场景你一定已经见过很多次了,但有没有考虑过它是怎样实现的? 也许你会认为这是一个稍微复杂的自定义的View,但,没错,这实际上只是一个原生的TextView而已。 TextView是一个简单而神奇的Widget,你可以利用它以不同风格不同格式来展现文字。 举两个简单的例子: 1.在TextView中添加一个超链接 其实...
2014-04-24 18:07 阅读(767) 评论(0)
我们都知道,在表单中对数据进行验证不但无聊而且容易出错。 想象一下,一个表单内有若干个需要日期类型的输入,而你又不想对这些输入信息进行日期类型的验证,你会怎么做? 这里有一种解决办法是,让用户认为他们是在一个EditText中操作,但实际上是一个Button,点击这个Button时会弹出一个DatePicker。 为了让这个方案可行,我们需要改变这个Button的背景,让用户以为这是一个Ed...
2014-04-24 17:15 阅读(741) 评论(0)
问题:如何创建一个如下图所示的布局? 图1 你可能会说,利用RelativeLayout和margins就可以实现。的确,如下XML代码可以简单地构建一个类似的布局: <RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android" android:layo...
2014-04-24 15:25 阅读(1667) 评论(11)
当你在Application中创建复杂的布局时,页面的渲染过程也变得更加缓慢。 此时,我们需要利用 标签(避免重复渲染)和 ViewStub类(延迟加载)来优化我们的页面。 一、利用标签来避免重复渲染 当我们需要为App中的每个View都添加一个header或者footer时,你会怎么做? 重复地复制粘贴可以解决这个问题,但未免太繁杂。可以试着使用标签: 第一...
2014-04-24 11:37 阅读(1828) 评论(9)
问题:如何将一个Button放置在布局中间并将其宽度设为其parent的50%? 分析:问题想要达到的效果应该是这样: 这看起来不难,但很多开发者并不知道达到这样效果的最佳方法。 解决:在此我们将weightSum属性与layout_weight属性一起利用。 <LinearLayout xmlns:android = "http://schemas.android.com...
2014-04-24 10:39 阅读(1334) 评论(3)