ShoppingCart2

本文介绍了一个简单的商品详情页面布局及交互实现,并展示了如何设计一个基本的购物车功能,包括商品展示、价格计算、全选反选操作等。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.hello.shoppingcart2.MainActivity">
    <LinearLayout
        android:layout_gravity="center_vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:id="@+id/back"
            android:background="@mipmap/ic_launcher"/>
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/main_title"
            android:gravity="center"
            android:text="商品详情"/>

    </LinearLayout>
    <View
        android:layout_width="match_parent"
        android:layout_height="0.75dp"
        android:background="#f00"
        />
    <ImageView
        android:id="@+id/main_big_pic"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:scaleType="centerCrop"
        android:src="@mipmap/ic_launcher"
        />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_weight="1">
        <TextView
            android:id="@+id/main_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="商品名"/>

        <TextView
            android:id="@+id/main_price"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="原价"/>

        <TextView
            android:id="@+id/main_price2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="折扣价"/>
    </LinearLayout>
    <View
        android:layout_width="match_parent"
        android:layout_height="0.75dp"
        android:background="#f00"
        />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_gravity="bottom"
        >
        <TextView
            android:id="@+id/main_cart"
            android:layout_width="0dp"
            android:layout_height="30dp"
            android:layout_weight="1"
            android:clickable="true"
            android:gravity="center"
            android:text="购物车"/>

        <View
            android:layout_width="0.75dp"
            android:layout_height="match_parent"
            android:background="#F00"/>

        <TextView
            android:id="@+id/main_add"
            android:layout_width="0dp"
            android:layout_height="30dp"
            android:layout_weight="1"
            android:clickable="true"
            android:gravity="center"
            android:text="加入购物车"/>
    </LinearLayout>
</LinearLayout>

activity_cart
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.hello.shoppingcart2.view.CartActivity">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textSize="25dp"
        android:textColor="@android:color/black"
        android:text="购物车"/>
    <View
        android:layout_width="match_parent"
        android:layout_height="0.75dp"
        android:background="#999999"/>

    <ExpandableListView
        android:id="@+id/ex_list_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:groupIndicator="@null"></ExpandableListView>

    <View
        android:layout_width="match_parent"
        android:layout_height="0.75dp"
        android:background="#999999"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <CheckBox
            android:id="@+id/cart_cb"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="全选/反选"
            android:textColor="@android:color/black"
            android:textSize="25sp"/>

        <TextView
            android:id="@+id/cart_sum12"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="总价:0"
            android:textColor="@android:color/black"
            android:textSize="25sp"/>
    </LinearLayout>
</LinearLayout>

activity_splash
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:orientation="vertical"
    tools:context="com.example.hello.shoppingcart2.view.SplashActivity">
    <ImageView
        android:id="@+id/image1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/ic_launcher"/>
</LinearLayout>
 
MainActivity
public class MainActivity extends AppCompatActivity implements View.OnClickListener,IMainView{
    private ImageView main_big_pic;
    private TextView man_name;
    private TextView main_price;
    private TextView main_price2;
    private PresenterImpl presenter;
    private DetailBean detailBean;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        //调用Prester进行数据加载

        presenter = new PresenterImpl();
        presenter.showDataToDetai(new ModelImpl(), this);

    }

    private void initView() {
        main_big_pic = (ImageView) findViewById(R.id.main_big_pic);
        man_name = (TextView) findViewById(R.id.main_name);
        main_price = (TextView) findViewById(R.id.main_price);
        main_price2 = (TextView) findViewById(R.id.main_price2);
        TextView main_cart = (TextView) findViewById(R.id.main_cart);
        TextView main_add = (TextView) findViewById(R.id.main_add);
        main_cart.setOnClickListener(this);
        main_add.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.main_cart:
                //调用跳转
                presenter.jumpToCart(this);
                break;
            case R.id.main_add:
                //添加到购物车
                Log.d("Main--", "点击---添加到购物车" );
                Toast.makeText(MainActivity.this,"添加成功",Toast.LENGTH_SHORT).show();
                presenter.addToCart(new ModelImpl(), this);
                break;
        }
    }

    @Override
    public void showDetailData(DetailBean detailBean) {
        this.detailBean = detailBean;
        //设置数据
        String images = detailBean.getData().getImages();
        String imgeUrl = images.split(".jpg")[0] + ".jpg";
        Glide.with(MainActivity.this).load(imgeUrl).into(main_big_pic);
        man_name.setText(detailBean.getData().getTitle());
        main_price.setText("原价:" + detailBean.getData().getPrice() + "");
        main_price.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
        main_price2.setText("折扣价" + detailBean.getData().getBargainPrice() + "");
    }

    @Override
    public void jumpToCatActivity() {
        //到购物车页面
        startActivity(new Intent(MainActivity.this, CartActivity.class));
        overridePendingTransition(R.anim.enter, R.anim.out);
        finish();
    }

    @Override
    public void addToCart() {

    }

    @Override
    public String getPid() {
        return detailBean.getData().getPid() + "";
    }

    @Override
    public void showAddSucess() {
        Toast.makeText(MainActivity.this, "添加成功", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void shoAddError() {
        Toast.makeText(MainActivity.this, "添加失败", Toast.LENGTH_SHORT).show();

    }
}
ICartView
public interface ICartView {
    void showDataToCart(Context context, CartBean cartBean);
    //全选、反选

    //显示总价
    void showSum(double sum);

    CartBean getCartBean();


}
 
IMainView
public interface IMainView {
    void showDetailData(DetailBean detailBean);

    void jumpToCatActivity();

    void addToCart();
    //获取PID的方法
    String getPid();
    //成功的提示
    void showAddSucess();
    //失败的提示
    void shoAddError();
}

ISplashView
public interface ISplashView {
    void jumpToMainActivity();
}
AnimatorUtils
public static AnimatorSet setAnimatorset(Context context, View view) {
    DisplayMetrics metrics = context.getResources().getDisplayMetrics();
    int heightPixels = metrics.heightPixels;
    ValueAnimator tranlate = ObjectAnimator.ofFloat(view, "translationY", 0, heightPixels / 2 - view.getHeight());
    ValueAnimator scaleX = ObjectAnimator.ofFloat(view, "scaleX", 2.0f, 1.0f);
    ValueAnimator scaleY = ObjectAnimator.ofFloat(view, "scaleY", 2.0f, 1.0f);
    ValueAnimator alpha = ObjectAnimator.ofFloat(view, "alpha", 0, 1.0f);
    ValueAnimator rotation = ObjectAnimator.ofFloat(view, "rotation", 0, 360);
    //创建动画集合
    AnimatorSet set = new AnimatorSet();
    set.playTogether(tranlate, scaleX, scaleY, alpha, rotation);
    set.setDuration(3000);
    set.start();
    return set;
}
CartActivity
public class CartActivity extends AppCompatActivity implements ICartView,View.OnClickListener{
    private static final String TAG = "CartActivity";
    private ExpandableListView ex_list_view;
    private CheckBox cart_cb;
    private TextView cart_sum;
    private CartBean cartBean;
    private MyAdapter myAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_cart);
        initViews();
        PresenterImpl presenter = new PresenterImpl();
        presenter.showDataToCart(this, new ModelImpl(),this);
    }

    private void initViews() {
        ex_list_view = (ExpandableListView) findViewById(R.id.ex_list_view);
        cart_cb = (CheckBox) findViewById(R.id.cart_cb);
        cart_sum = (TextView) findViewById(R.id.cart_sum12);
        //全选、反选的点击事件
        cart_cb.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.cart_cb:
                //全部置为反
                List<CartBean.DataBean> data = cartBean.getData();
                for (int i = 0; i < data.size(); i++) {
                    data.get(i).setParentIsSelected(!data.get(i).isParentIsSelected());
                    //子元素
                    List<CartBean.ChildBean> list = data.get(i).getList();
                    for (int j = 0; j < list.size(); j++) {
                        list.get(j).setChildIsSelected(!list.get(j).isChildIsSelected());
                    }
                }
                //通知刷新
                myAdapter.notifyDataSetChanged();
                //计算
                PresenterImpl presenter = new PresenterImpl();
                presenter.jisuan(new ModelImpl(), cartBean, this);
                break;
        }
    }



    @Override
    public void showDataToCart(Context context, CartBean cartBean) {
        this.cartBean = cartBean;
        //设置适配器

        myAdapter = new MyAdapter(context, cartBean, this);
        ex_list_view.setAdapter(myAdapter);
        //将expanablelistview全部展开
        int childCount = myAdapter.getGroupCount();
        for (int i = 0; i < childCount; i++) {
            ex_list_view.expandGroup(i);
        }
    }

    @Override
    public void showSum(double sum) {
        Log.d(TAG, "showSum() returned: " + sum + "--" + cart_sum);
        TextView tv = (TextView) findViewById(R.id.cart_sum12);
        tv.setText("总价:" + sum);
    }

    @Override
    public CartBean getCartBean() {
        return cartBean;
    }
}
SplashActivity
public class SplashActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
        initViews();
    }

    private void initViews() {
        ImageView img1=(ImageView)findViewById(R.id.image1);
        AnimatorSet set=AnimatorUtils.setAnimatorset(SplashActivity.this,img1);
        set.addListener(new AnimatorListenerAdapter() {
            @Override
            public void onAnimationEnd(Animator animation) {
                super.onAnimationEnd(animation);
                startActivity(new Intent(SplashActivity.this, MainActivity.class));
                overridePendingTransition(R.anim.enter,R.anim.out);
                finish();
            }
        });
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值