Effective Android设计

本文分享了作者在Android项目实施过程中遇到的设计问题及解决方案,包括Manifest.xml的最佳实践、LinearLayout的高效应用、界面风格的定制方法、Layout文件的重用技巧以及通过Library管理API等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


摘要: 本文总结了自己在Android项目实施中遇到的设计问题。 即如何更好的进行组织和设计, 让项目更加稳定, 更容易维护, 详细情况请查看后文提供的代码。

1 Manifest.xml使用Activity不要用相对路径

  • Manifest节点需要指定package的名称, 启动Activity需要放置在Manifest节点宣扬的package中. 这个也是R.java的位置, 这点保留并且需要引起注意
  • 其它Activity节点的Android name保持全路径,不采用.开头的相对路径, 避免找不到
  • 采用Library包也需要使用该规则.

2 重视android:layout_weight这个节点的应用.

  • layout_weight + Linear Layout +嵌套UI,基本上可以搞定一切跟对齐有关的问题, (如果你有设计过Swing/SWT的经验, 基本上其它的Layout都是浮云, LinearLayout 加上权重分配, 再结合嵌套方式, 基本上可以搞定一切问题。)
  • 对齐的方向上,必须用fillparent: android:layout_width="fill_parent"
  • 注意android:layout_weight的值越大,表示占领的位置越短

例子的部分代码如下, 这个貌似是做登录界面基本上都要碰到的难缠问题.

<LinearLayout android:layout_width="fill_parent" android:layout_marginTop="5dip" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_height="wrap_content" android:layout_weight="5" style="@style/dialog_txt_view_font" android:layout_width="fill_parent" android:layout_marginLeft="5dip" android:layout_marginRight="5dip" android:text="密码:" android:gravity="left" /> <EditText android:layout_height="35dip" style="@style/dialog_edit_txt_font" android:layout_width="fill_parent" android:layout_weight="2" android:layout_marginLeft="5dip" android:layout_marginRight="5dip" android:autoText="false" android:capitalize="none" android:gravity="fill_horizontal" /> </LinearLayout>

运行的结果:


3界面风格定制尽量采用Style文件的方式

三点好处

  • 保持界面风格完全统一
  • 跟编程类似, 消除冗余代码, 方便重用
  • 修改、重构界面非常方便,维护非常Easy

使用style的方式,网上有很多资料, 因此不贴出具体的方式。 可以参照本文提供的代码及其注释

4 注意Layout文件的可重用部分分离, 并动态加载特殊性。

下面一个示意图说明UI的可重用性在一个Android项目中的平常:


上面两张图, 就是两个Activity, 他们都是上中下的结构, 方便起见的设计是: 分离一个父Layout面板. 并将中间的特殊UI分离出来。在具体的Activity中,利用动态的方式加载,代码如下:

LinearLayout specialUI = (LinearLayout)findViewById(R.id.specialUI); LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE); View listView = inflater.inflate(R.layout.listview_common,null); LayoutParams para = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); specialUI.addView(listView, para); itemlist = (ListView) findViewById(R.id.itemlist); refreshListItems();

运行的结果如下(中间是List效果, 可以参考一下):



这样做的必须性在于:

1. 保持一致性的需要

2.易维护的需要


5 采用Library项目管理自己的API.

个人一直在努力宣传作为软件工程师, 需要有自己的API库. Android中可以将工程设置为:Is Library. 或者引用其它的Library工程。下面是我曾经提到的内容。可以通过Google去查询需要的信息。

至于原因, 可以再重申一下,新手解决问题的方式是: 看到问题,调研,解决。老手解决的方式是:看到问题,参考从前案例,解决。个人的API 就是你从前的案例。千万别小看这个区别。


详细代码



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值