资讯专栏INFORMATION COLUMN

ActivityGroup实现Android仿ios底部导航效果

1fe1se / 933人阅读

今天接到项目经理的任务,做一个底部导航,现在主流的而且推荐的做法都是Tabhost+ActivityGroup实现,但是项目经理说,为了便于维护,用ActivityGroup实现- 囧 -
最终效果图:

源码:
activity_main_group.xml

?xml version="1.0" encoding="utf-8"?>







    

        

        
    

    

        

        
    

    

        

        
    

    

        

        
    

MainActivity.java:

public class MainActivity extends ActivityGroup implements OnClickListener {
LinearLayout ll_bodyer;
private TextView tv_homepage, tv_more, tv_coupon, tv_person;
private ImageView iv_homepage,iv_more,iv_coupon,iv_person;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_group);
    initBodyer();
    initBottom();
}

private void initBodyer() {
    ll_bodyer = (LinearLayout) findViewById(R.id.ll_main_bodyer); 
}

private void initBottom() {
    tv_homepage = (TextView) findViewById(R.id.tv_main_homepage_2);
    tv_more = (TextView) findViewById(R.id.tv_main_more);
    tv_coupon = (TextView) findViewById(R.id.tv_main_coupon_2);
    tv_person = (TextView) findViewById(R.id.tv_main_person_2);

    iv_homepage=(ImageView) findViewById(R.id.img_main_homepage);
    iv_more=(ImageView) findViewById(R.id.img_main_more);
    iv_coupon=(ImageView) findViewById(R.id.img_main_coupon);
    iv_person=(ImageView) findViewById(R.id.img_main_person);

    tv_homepage.setOnClickListener(this);
    tv_more.setOnClickListener(this);
    tv_coupon.setOnClickListener(this);
    tv_person.setOnClickListener(this);
    tv_homepage.performClick();
}

@Override
public void onClick(View v) {
    Intent intent = new Intent();
    Bundle bundle = new Bundle();
    setFouces(v.getId());          //该方法用于判断TextView是否获得点击获得焦点
    switch (v.getId()) {           //因为Acivity实现了OnClickListener方法,可用此方法处理点击事件,博客末尾会说明原因
    case R.id.tv_main_homepage_2:
        ll_bodyer.removeAllViews();
        intent.setClass(MainActivity_2.this, HomePageActivity_new_2.class);
        View view_1 = getLocalActivityManager().startActivity(v.getId() + "", intent).getDecorView();                       //用于加载页面中空白的那个LinearLayout所包含的View
        view_1.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                LayoutParams.FILL_PARENT));//设置加载的View属性
        view_1.dispatchWindowFocusChanged(true);//暂时不明白此方法的用处..
        ll_bodyer.addView(view_1);
        break;
    case R.id.tv_main_coupon_2:
        ll_bodyer.removeAllViews();
        bundle.putString("sign", "1");
        intent.putExtras(bundle);
        intent.setClass(this, CouponActivity.class);
        View view_2 = getLocalActivityManager().startActivity(v.getId() + "", intent).getDecorView();
        view_2.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                LayoutParams.FILL_PARENT));
        view_2.dispatchWindowFocusChanged(true);
        ll_bodyer.addView(view_2);
        break;
    case R.id.tv_main_person_2:
        //....
        break;
    case R.id.tv_main_more:
        //....
        break;

    }
}

关于implements OnClickListener用法原理以及与其它监听器的区别:
http://stackoverflow.com/questions/17540013/declaring-that-a-class-implements-onclicklistener-vs-declaring-it-yourself

补充:当我把这个布局拿到别的手机上去测试的时候发现,有的手机并不能达到标题图下所展示的效果,也就是屏幕适配的问题,于是又回来改了下,改动就是 将底部的每一个RelativeLayout和ImageView的layout_width和layout_height都设置为match_parent,也就是全部填充父窗口。
OK啦,至于Tabhost+Fragment以后我会自己去实现下后贴到博客上的。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/12123.html

相关文章

  • 滑动 - 收藏集 - 掘金

    摘要:分析提到侧滑删除,一个经典的例子就是玩转仿探探卡片式滑动效果掘金讲起本篇博客的历史起源,估计有一段历史了。列表左右滑动开源组件掘金是一款用于为上的排布提供左滑右滑操作的库。 Android 仿 YouTube 拖拽视频效果的实现 - Android - 掘金Android仿YouTube拖拽视频效果的实现 youtube-like-drag-video-view 代码已经开源到GitH...

    ShevaKuilin 评论0 收藏0
  • 界面工具 - 收藏集 - 掘金

    摘要:上列表左右滑动开源组件掘金是一款用于为上的排布提供左滑右滑操作的库。这里我贴出最终的兼容方案教你用两层嵌套实现三级展示界面掘金最近项目中使用一个三级展示列表,要求第一级和第二季都可以折叠,并有不同的图标变换,第三层展示数据,可点击。 八年 Android 开发,看我如何简化 Android 的 UI 开发! - Android - 掘金作者 : Super Mary 校对者: Zhao...

    wuaiqiu 评论0 收藏0
  • GitHub 上受欢迎的 Android UI Library 整理二

    摘要:通知克服和的限制高仿淘宝微信等热门通知视图通过一行代码实现通知功能工具类轮播框通知全新的通知栏聊天视图简化开发快速创建聊天信息视图聊天视图实现聊天界面基于实际需求做出的灵活可定制的功能模仿饿了么详情页的例子带 通知 https://github.com/Tapadoo/Al... ★2528 - 克服Toast和Snackbar的限制https://github.com/wenming...

    nifhlheimr 评论0 收藏0
  • Android第三方库 - 收藏集 - 掘金

    摘要:项目地址特性来啦,快来玩一玩掘金可以说是的升级版,前段时间开发的目前已经有个,的设计初衷是一个能让文本执行漂亮的漂浮动画。免调试工具掘金是一款方便调试的工具,可以兼容所有版本,不需要权限。 收藏安卓开发中非常实用优秀的库! 有图有真相! - Android - 掘金本来是打算收藏工具类的,但转念一想,已经有这么多优秀的库了,就没必要再去重复造轮子了,便归纳工作中比较实用的库吧,不用在花...

    sihai 评论0 收藏0
  • Android view - 收藏集 - 掘金

    摘要:掘金一个可实现长按扫描上的二维码的工具库。说到刷新加载,我们第一个想到啥,对了从头开始学四类添加和多种的支持掘金来张图前言敲酷炫的切换效果和弹性指示器。掘金效果图使用方法依赖注意使用时需要在父布局中加入仿讨论组头像掘金仿讨论组头像基 仿美团详情滑动界面,并兼容 NestedScroll 嵌套 - Android - 掘金不论什么APP应该都会有个app产品的详情界面, 详情界面往往也比...

    IntMain 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<