Android移动应用界面的模板化设计

2014-12-17 19:00
分享到:
Android没有像苹果开发那样功能强大的界面开发工具,本身ADT插件提供的界面编辑能力有限,没办法刻画所有的界面情况;Android的界面xml代码可以进行人工修改,而Iphone的全部在图形界面上拖动完成,可没提供任何方式的代码级修改。Android的UI设计开发过程非常繁琐,容易出错,需要很长时间调节界面细节,开发过Android应用的人肯定深有同感。用几年前的网页设计来打个比方,开发Iphone的软件界面就好比是用Frontpage弄点控件拖成一张页面,而开发Android更接近于闭着眼睛在Notepad里一行行的写html标签。为了使开发Android应用更加简便快捷,减少代码冗余,增强软件质量,在咨询行情的开发上我们大量使用了模板化的页面。
思路很简单:将软件里用到的大量重复的页面布局抽象出来,编写成一个抽象的Activity类,然后在实现具体页面时继承它,并且在主内容空白区填入需要的内容。
例如在最近开发的一款资讯类应用中,每张页面上面都有一个顶栏,上面有两个按钮,按钮中间是一行标题文字。按钮上的文字及点击后的功能在每个页面中可能会都不相同。如下图所示的。
   
面对这样一个页面的需求,我们可以设计出一个基本的页面模板AbstractAc1,代码如下所示。
/**
* 通用页面模板1:含上栏,包括左右两个按钮,一个title文字区
* @author zhe.yangz
*/
public class AbstractAc1 extends BaseActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.abac_1);
    }
    /**
     * 设置主内容区域的layoutRes
     * @param layoutResId
     */
    public void alabSetContentView(int layoutResId) {
        LinearLayout llContent = (LinearLayout) findViewById(R.id.llContent1);
        LayoutInflater inflater = (LayoutInflater) getSystemService(
                Context.LAYOUT_INFLATER_SERVICE);
        View v = inflater.inflate(layoutResId, null);
        llContent.addView(v);
    }
    /**
     * 隐藏左侧按钮
     */
    public void alabHideButtonLeft(boolean bSetHide) {
        Button bt = alabGetButtonLeft();
        if (null != bt) {
            if (bSetHide) bt.setVisibility(View.INVISIBLE);
            else bt.setVisibility(View.VISIBLE);
        }
    }
    /**
     * 隐藏右侧按钮
     */
    public void alabHideButtonRight(boolean bSetHide) {
        Button bt = alabGetButtonRight();
        if (null != bt) {
            if (bSetHide) bt.setVisibility(View.INVISIBLE);
            else bt.setVisibility(View.VISIBLE);
        }
    }
    /**
     * 得到模板上导航栏的左侧按钮,一般为[返回]
     * @return 成功则返回Button对象,失败则返回null。
     */
    public Button alabGetButtonLeft() {
        return (Button) findViewById(R.id.btBack1);
    }
    /**
     * 得到模板上导航栏的右侧按钮,一般为[刷新]
     * @return 成功则返回Button对象,失败则返回null。
     */
    public Button alabGetButtonRight() {
        return (Button) findViewById(R.id.btRefresh1);
    }
    /**
     * 设置模板上导航栏中间的标题文字
     * @param titleText
     * @return 修改成功返回true,失败返回false
     */
    public boolean alabSetBarTitleText(String titleText) {
        TextView tv = (TextView) findViewById(R.id.txBarTitle1);
        if (null != tv) {
            tv.setText(titleText);
            return true;
        }
        return false;
    }
}
复制代码
 
  如果,你还是觉得我没有说明白,那么就多看看微信、微博等社交网络中,用户对各类第三方产品的分享内容吧,这些案例都尤其有研究的价值。
  更多上海手机应用开发、上海手机app、上海app 开发、上海APP制作、上海苹果开发、上海手机app开发、上海移动应用开发、上海手机应用软件开发、上海Android应用开发、上海移动互联网应用开发、上海html5 app开发等资讯服务请关注上海睿玛电子商务公司官方网站www.reima.org。专精于高品质的全方位设计服务。
Keywords:上海APP开发 网站地图 友情链接:大连口才培训 粉尘加湿机 南京地暖 深圳起重机 深圳食堂承包 盘锦商务礼品 影视配音 电子电器网 酒店餐具 深圳名片印刷 2be水环式真空泵 冷压端子 麦格官网 徒手整形培训
  • 需求咨询
  • 技术咨询
  • 运营咨询
  • 需求咨询点击咨询
  • 技术咨询点击咨询