Android仿照淘宝,京东,当当购物平台

1.开发工具

  • AndroidStudio3.0.1

  • jdk1.8

  • Android4.1以上

  • 语言:JAVA

2.页面部分效果图如下:

 

3.Sqlite数据库存储

4.首页,登录,注册等部分页面

/**
     * 获取界面上的UI控件
     */
    private void init() {
        tv_back = (TextView) findViewById(R.id.tv_back);
        tv_main_title = (TextView) findViewById(R.id.tv_main_title);
        tv_main_title.setText("Fangtaobap");
        rl_title_bar = (RelativeLayout) findViewById(R.id.title_bar);
        rl_title_bar.setBackgroundColor(Color.parseColor("#FF8000"));
        tv_back.setVisibility(View.GONE);
        initBodyLayout();
    }

    /**
     * 获取底部导航栏上的控件
     */
    private void initBottomBar() {
        mBottomLayout = (LinearLayout) findViewById(R.id.main_bottom_bar);
        mHomeBtn = findViewById(R.id.bottom_bar_home_btn);
        mClassifyBtn = findViewById(R.id.bottom_bar_classify_btn);
        mShopcarBtn = findViewById(R.id.bottom_bar_shopcar_btn);
        mMyInfoBtn = findViewById(R.id.bottom_bar_myinfo_btn);
        tv_home = (TextView) findViewById(R.id.bottom_bar_text_home);
        tv_classify = (TextView) findViewById(R.id.bottom_bar_text_classify);
        tv_shopcar = (TextView) findViewById(R.id.bottom_bar_text_shopcar);
        tv_myInfo = (TextView) findViewById(R.id.bottom_bar_text_myinfo);
        iv_home = (ImageView) findViewById(R.id.bottom_bar_image_home);
        iv_classify = (ImageView) findViewById(R.id.bottom_bar_image_classify);
        iv_shopcar = (ImageView) findViewById(R.id.bottom_bar_image_shopcar);
        iv_myInfo = (ImageView) findViewById(R.id.bottom_bar_image_myinfo);
    }

    private void initBodyLayout() {
        mBodyLayout = (FrameLayout) findViewById(R.id.main_body);
    }

    /**
     * 控件的点击事件
     */
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            //首页的点击事件
            case R.id.bottom_bar_home_btn:
                clearBottomImageState();
                selectDisplayView(0);
                break;
            //分类的点击事件
            case R.id.bottom_bar_classify_btn:
                clearBottomImageState();
                selectDisplayView(1);
                break;
            //购物车的点击事件
            case R.id.bottom_bar_shopcar_btn:
                clearBottomImageState();
                selectDisplayView(2);
                break;
            //我的点击事件
            case R.id.bottom_bar_myinfo_btn:
                clearBottomImageState();
                selectDisplayView(3);
                break;
            default:
                break;
        }
    }

    /**
     * 设置底部四个按钮的点击监听事件
     */
    private void setListener() {
        for (int i = 0; i < mBottomLayout.getChildCount(); i++) {
            mBottomLayout.getChildAt(i).setOnClickListener(this);
        }
    }

    /**
     * 清除底部按钮的选中状态
     */
    private void clearBottomImageState() {
        tv_home.setTextColor(Color.parseColor("#666666"));
        tv_classify.setTextColor(Color.parseColor("#666666"));
        tv_shopcar.setTextColor(Color.parseColor("#666666"));
        tv_myInfo.setTextColor(Color.parseColor("#666666"));
        iv_home.setImageResource(R.mipmap.main_homepage_icon);
        iv_classify.setImageResource(R.mipmap.main_classify);
        iv_shopcar.setImageResource(R.mipmap.main_shopcar_icon);
        iv_myInfo.setImageResource(R.mipmap.main_my_icon);
        for (int i = 0; i < mBottomLayout.getChildCount(); i++) {
            mBottomLayout.getChildAt(i).setSelected(false);
        }
    }

    /**
     * 设置底部按钮选中状态
     */
    public void setSelectedStatus(int index) {
        switch (index) {
            case 0:
                mHomeBtn.setSelected(true);
                iv_home.setImageResource(R.mipmap.main_homepage_icon_selected);
                tv_home.setTextColor(Color.parseColor("#0097F7"));
                rl_title_bar.setVisibility(View.VISIBLE);
                tv_main_title.setText("首页");
                break;
            case 1:
                mClassifyBtn.setSelected(true);
                iv_classify.setImageResource(R.mipmap.main_classify_selected);
                tv_classify.setTextColor(Color.parseColor("#0097F7"));
                rl_title_bar.setVisibility(View.VISIBLE);
                tv_main_title.setText("分类");
                break;
            case 2:
                mShopcarBtn.setSelected(true);
                iv_shopcar.setImageResource(R.mipmap.main_shopcar_icon_selected);
                tv_shopcar.setTextColor(Color.parseColor("#0097F7"));
                rl_title_bar.setVisibility(View.VISIBLE);
                tv_main_title.setText("购物车");
                break;
            case 3:
                mMyInfoBtn.setSelected(true);
                iv_myInfo.setImageResource(R.mipmap.main_my_icon_selected);
                tv_myInfo.setTextColor(Color.parseColor("#0097F7"));
                rl_title_bar.setVisibility(View.GONE);

        }
    }

    /**
     * 移除不需要的视图
     */
    private void removeAllView() {
        for (int i = 0; i < mBodyLayout.getChildCount(); i++) {
            mBodyLayout.getChildAt(i).setVisibility(View.GONE);
        }
    }

    /**
     * 设置界面view的初始化状态
     */
    private void setInitStatus() {
        clearBottomImageState();
        setSelectedStatus(0);
        createView(0);
    }

    /**
     * 显示对应的页面
     */
    private void selectDisplayView(int index) {
        removeAllView();
        createView(index);
        setSelectedStatus(index);
    }

    /**
     * 选择视图
     */
    private void createView(int viewIndex) {
        switch (viewIndex) {
            case 0:
                //首页
                if (homeView == null) {
                    homeView = new HomeView(this);
                    mBodyLayout.addView(homeView.getView());
                } else {
                    homeView.getView();
                }
                homeView.showView();
                break;
            case 1:
                //分类
                if (typeView == null) {
                    typeView = new TypeView(this);
                    mBodyLayout.addView(typeView.getView());
                } else {
                    typeView.getView();
                }
                typeView.showView();
                break;
            case 2:
                //购物车
                if (shopingView == null) {
                    shopingView = new ShopingView(this);
                    mBodyLayout.addView(shopingView.getView());
                } else {
                    shopingView.getView();
                }
                shopingView.showView();
                break;
            case 3:
                //我的
                if (mMyInfoView == null) {
                    mMyInfoView = new MyInfoView(this);
                    mBodyLayout.addView(mMyInfoView.getView());
                } else {
                    mMyInfoView.getView();
                }
                mMyInfoView.showView();
                break;
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (data != null) {
            //从设置界面或登录界面传递过来的登录状态
            boolean isLogin = data.getBooleanExtra("isLogin", false);
            if (isLogin) {//登录成功时显示首页
                clearBottomImageState();
                selectDisplayView(0);
            }
            if (mMyInfoView != null) {//登录成功或退出登录时根据isLogin设置我的界面
                mMyInfoView.setLoginParams(isLogin);
            }
        }
    }

    protected long exitTime;//记录第一次点击时的时间

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK
                && event.getAction() == KeyEvent.ACTION_DOWN) {
            if ((System.currentTimeMillis() - exitTime) > 2000) {
                Toast.makeText(MainActivity.this, "再按一次退出Fangtaobao",
                        Toast.LENGTH_SHORT).show();
                exitTime = System.currentTimeMillis();
            } else {
                MainActivity.this.finish();
                if (readLoginStatus()) {
                    //如果退出此应用时是登录状态,则需要清除登录状态,同时需清除登录时的用户名
                    clearLoginStatus();
                }
                System.exit(0);
            }
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

    /**
     * 获取SharedPreferences中的登录状态
     */
    private boolean readLoginStatus() {
        SharedPreferences sp = getSharedPreferences("loginInfo",
                Context.MODE_PRIVATE);
        boolean isLogin = sp.getBoolean("isLogin", false);
        return isLogin;
    }

    /**
     * 清除SharedPreferences中的登录状态
     */
    private void clearLoginStatus() {
        SharedPreferences sp = getSharedPreferences("loginInfo",
                Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sp.edit();//获取编辑器
        editor.putBoolean("isLogin", false);//清除登录状态
        editor.putString("loginUserName", "");//清除登录时的用户名
        editor.commit();//提交修改
    }

5.整体代码分析

  • 代码采用结构activity+view+sqlite
  • Eventbus的使用
  • 购物车功能+商品展示
  • 自定义dialog

这是一片课设,需要的朋友可以去学习,有意见可以提出了,链接如下

熬夜不容易:点我 点我下载

联系qq:2258629201

 

 

  • 8
    点赞
  • 69
    收藏
  • 打赏
    打赏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:技术黑板 设计师:CSDN官方博客 返回首页
评论 11

打赏作者

码大大

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值