Android实现简单购物页面
来源:互联网 发布:淘宝代运营 可信吗 编辑:程序博客网 时间:2024/05/23 19:15
1.课题——模仿淘宝等电商的购物车页面
2.需要使用视图树(即在一个视图中建立多层嵌套结构,满足摆列的美观性),下面给出我的一个课堂设计的作品:
layout.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" > <EditText android:layout_width="match_parent" android:layout_height="40dp" android:hint="@string/edit_hint" android:id="@+id/editName" /> <TextView android:layout_width="match_parent" android:layout_height="20dp" android:text="Dessert" /> <LinearLayout android:layout_width="match_parent" android:layout_height="150dp" android:orientation="horizontal" > <LinearLayout android:layout_width="250dp" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:layout_width="250dp" android:layout_height="40dp" android:orientation="horizontal"> <CheckBox android:layout_width="160dp" android:layout_height="40dp" android:text="Ice Cream" android:id="@+id/ck_iceCream" /> <Button android:layout_width="30dp" android:layout_height="40dp" android:text="-" android:id="@+id/lossIce" /> <TextView android:layout_width="30dp" android:layout_height="40dp" android:text="0" android:gravity="center" android:id="@+id/quantityIce" /> <Button android:layout_width="30dp" android:layout_height="40dp" android:text="+" android:id="@+id/addIce" /> </LinearLayout> <LinearLayout android:layout_width="250dp" android:layout_height="40dp" android:orientation="horizontal" > <CheckBox android:layout_width="160dp" android:layout_height="40dp" android:text="Choclate" android:id="@+id/ck_choclate" /> <Button android:layout_width="30dp" android:layout_height="40dp" android:text="-" android:id="@+id/lossChoclate" /> <TextView android:layout_width="30dp" android:layout_height="40dp" android:text="0" android:gravity="center" android:id="@+id/quantityChoclate" /> <Button android:layout_width="30dp" android:layout_height="40dp" android:text="+" android:id="@+id/addChoclate" /> </LinearLayout> <LinearLayout android:layout_width="250dp" android:layout_height="40dp" > <CheckBox android:layout_width="160dp" android:layout_height="50dp" android:text="Cookies" android:id="@+id/ck_cookies" /> <Button android:layout_width="30dp" android:layout_height="40dp" android:text="-" android:id="@+id/lossCookies" /> <TextView android:layout_width="30dp" android:layout_height="40dp" android:text="0" android:gravity="center" android:id="@+id/quantityCookies" /> <Button android:layout_width="30dp" android:layout_height="40dp" android:text="+" android:id="@+id/addCookies" /> </LinearLayout> </LinearLayout> <ImageView android:layout_width="135dp" android:layout_height="140dp" android:src="@drawable/coffee" android:id="@+id/imageView" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:layout_width="match_parent" android:layout_height="50dp" android:text="ORDER" android:id="@+id/order" /> <TextView android:layout_width="wrap_content" android:layout_height="40dp" android:hint="订单信息" android:textSize="20sp" android:id="@+id/orderInfor" /> <LinearLayout android:layout_width="match_parent" android:layout_height="150dp" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="30dp" > <TextView android:layout_width="100dp" android:layout_height="30dp" android:text="客户名称:" android:textSize="15sp" /> <TextView android:layout_width="match_parent" android:layout_height="30dp" android:hint="显示客户姓名" android:textSize="15sp" android:id="@+id/name" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="30dp" android:orientation="horizontal"> <TextView android:layout_width="100dp" android:layout_height="30dp" android:textSize="15sp" android:hint="名称"/> <TextView android:layout_width="100dp" android:layout_height="30dp" android:hint="数量"/> <TextView android:layout_width="100dp" android:layout_height="30dp" android:hint="单价"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="30dp" android:orientation="horizontal"> <TextView android:layout_width="100dp" android:layout_height="30dp" android:textSize="15sp" android:hint="Ice Cream"/> <TextView android:layout_width="100dp" android:layout_height="30dp" android:hint="冰淇淋数量" android:id="@+id/iceCreamNumber" /> <TextView android:layout_width="100dp" android:layout_height="30dp" android:hint="单价" android:id="@+id/iceCreamPrice" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="30dp" android:orientation="horizontal"> <TextView android:layout_width="100dp" android:layout_height="30dp" android:textSize="15sp" android:hint="Choclate"/> > <TextView android:layout_width="100dp" android:layout_height="30dp" android:hint="巧克力数量" android:id="@+id/chocolateNumber" /> <TextView android:layout_width="100dp" android:layout_height="30dp" android:hint="单价" android:id="@+id/chocolatePrice"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="30dp"> <TextView android:layout_width="100dp" android:layout_height="30dp" android:textSize="15sp" android:hint="Cookies"/> > <TextView android:layout_width="100dp" android:layout_height="30dp" android:hint="曲奇饼数量" android:id="@+id/cookiesNumber"/> <TextView android:layout_width="100dp" android:layout_height="30dp" android:hint="单价" android:id="@+id/cookiesPrice"/> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="30dp" > <TextView android:layout_width="100dp" android:layout_height="30dp" android:hint="总价:" android:textSize="15sp" /> <TextView android:layout_width="100dp" android:layout_height="30dp" android:id="@+id/summary" android:hint="***元"/> </LinearLayout> </LinearLayout></LinearLayout>实现效果图:
注:(1)这里面实现的关键就是LinearLayout的布局,其中一层一层的嵌套。设置LinearLayout的orientation属性为horizon还是vertical,horizon就是允许LinearLayout中的控件水平布局,vertical就是允许LinearLayout中的控件垂直布局。然后多层嵌套就可以满足这种界面。
3.接着是实体类,业务类,控制类的设计,因为比较简单,这里直接给出源码:
(1)IceCream.java类
package com.example.coffeeorder.Order;/** * Created by 时知夜霖 on 2017/3/15. * IceCream类---实体类 */public class IceCream { private int number = 0;//数量 private int price = 6;//价格 public int getNumber() { return number; } //增加Ice Cream 数量 public void addNumber() { if(number > 10){ return ; } number ++; } //减少Ice Cream的数量 public void lossNumber(){ if(number<0){ return ; } number--; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; }}(2)因为Chocolate.java与Cookie.java类与IceCream类类似,这里不再赘述。主要给出控制类MainActivity类的代码
(3)MainActivity.java
package com.example.coffeeorder;import android.content.ComponentCallbacks;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.TextureView;import android.view.View;import android.widget.Button;import android.widget.CheckBox;import android.widget.CompoundButton;import android.widget.EditText;import android.widget.TextView;import com.example.coffeeorder.Order.Chocolate;import com.example.coffeeorder.Order.Cookies;import com.example.coffeeorder.Order.IceCream;import com.example.coffeeorder.Order.Order;/*控制类--->属性固定 */public class MainActivity extends AppCompatActivity { //新建IceCream对象 private IceCream iceCream = new IceCream(); private Chocolate chocolate = new Chocolate(); private Cookies cookies = new Cookies(); private Order order = new Order();//新建一个Order对象 //三种Dessert的按钮信息 private Button btnAddIce,btnLossIce; private Button btnAddChoc,btnLossChoc; private Button btnAddCook,btnLossCook; //三种数量文本标签 private TextView tvQuatityChoc, tvQuatityIce, tvQuatityCook; private Button btnOrder;//Order的按钮 //TextView private TextView nameText; private TextView iceCreamNumber,iceCreamPrice; private TextView cookieNumber,cookiePrice; private TextView chocolateNumber,chocolatePrice; private TextView tvSummary; private EditText editText ; //为这些按钮添加监听器 public void addListener(){ btnAddIce.setOnClickListener(new OutButtonClick()); btnAddChoc.setOnClickListener(new OutButtonClick()); btnAddCook.setOnClickListener(new OutButtonClick()); btnLossIce.setOnClickListener(new OutButtonClick()); btnLossChoc.setOnClickListener(new OutButtonClick()); btnLossCook.setOnClickListener(new OutButtonClick()); } //初始化这个控件信息 public void init(){ //获取关于冰淇淋的按钮信息 btnAddIce = (Button) findViewById(R.id.addIce); btnLossIce = (Button) findViewById(R.id.lossIce); tvQuatityIce = (TextView) findViewById(R.id.quantityIce); //获取关于巧克力的按钮信息 btnAddChoc = (Button) findViewById(R.id.addChoclate); btnLossChoc= (Button) findViewById(R.id.lossChoclate); tvQuatityChoc = (TextView) findViewById(R.id.quantityChoclate); //获取关于曲奇饼的按钮信息 btnAddCook = (Button) findViewById(R.id.addCookies); btnLossCook= (Button) findViewById(R.id.lossCookies); tvQuatityCook = (TextView) findViewById(R.id.quantityCookies); btnOrder = (Button)findViewById(R.id.order);//订单按钮 nameText = (TextView)findViewById(R.id.name);//客户姓名 editText = (EditText)findViewById(R.id.editName);//找到编辑的客户名称 //获取iceCream的数量,单价 iceCreamNumber = (TextView)findViewById(R.id.iceCreamNumber); iceCreamPrice = (TextView)findViewById(R.id.iceCreamPrice); chocolateNumber = (TextView)findViewById(R.id.chocolateNumber); chocolatePrice = (TextView)findViewById(R.id.chocolatePrice); cookieNumber = (TextView)findViewById(R.id.cookiesNumber); cookiePrice = (TextView)findViewById(R.id.cookiesPrice); iceCreamPrice = (TextView)findViewById(R.id.iceCreamPrice); chocolatePrice = (TextView)findViewById(R.id.chocolatePrice); cookiePrice = (TextView)findViewById(R.id.cookiesPrice); tvSummary = (TextView) findViewById(R.id.summary); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout01); init(); //调用添加监听器方法 btnOrder.setOnClickListener(new OutButtonClick()); addListener(); } class OutButtonClick implements View.OnClickListener{ //重载方法 @Override public void onClick(View view) { Integer iceNumber ,chocNumber,cookNumber,sum; //这样就知道是哪一个按钮在操作 switch (view.getId()){ //增加数量 case R.id.addIce:{ iceCream.addNumber(); iceNumber = iceCream.getNumber(); tvQuatityIce.setText(iceNumber.toString());//返回数量 break; } case R.id.addChoclate:{ chocolate.addNumber(); chocNumber = chocolate.getNumber();// tvQuatityChoc.setText(chocNumber.toString()); tvQuatityChoc.setText(chocNumber+""); break; } case R.id.addCookies:{ cookies.addNumber(); cookNumber = cookies.getNumber(); tvQuatityCook.setText(cookNumber.toString()); break; } //减少数量 case R.id.lossIce:{ iceCream.lossNumber(); iceNumber = iceCream.getNumber(); tvQuatityIce.setText(iceNumber.toString()); break;//返回数量 } case R.id.lossChoclate: { chocolate.lossNumber(); chocNumber = chocolate.getNumber(); tvQuatityChoc.setText(chocNumber.toString()); } break; case R.id.lossCookies:{ cookies.lossNumber(); cookNumber = cookies.getNumber(); tvQuatityCook.setText(cookNumber.toString()); break; } case R.id.order:{ String name = editText.getText().toString(); nameText.setText(name);//显示客户名称 //获取三者数量 iceNumber = iceCream.getNumber(); chocNumber = chocolate.getNumber(); cookNumber = cookies.getNumber(); // iceCreamNumber.setText(iceNumber.toString()); chocolateNumber.setText(chocNumber.toString()); cookieNumber.setText(cookNumber.toString()); iceCreamPrice.setText("6"); chocolatePrice.setText("10"); cookiePrice.setText("8"); sum = 6 * iceNumber + chocNumber * 10 + cookNumber * 8; tvSummary.setText(sum.toString()); break; } } } } class ChechBoxListener implements CompoundButton.OnCheckedChangeListener{ @Override public void onCheckedChanged(CompoundButton compoundButton, boolean b) { switch (compoundButton.getId()){ case R.id.ck_iceCream:{ } case R.id.ck_choclate:{ } case R.id.ck_cookies:{ } } } }}
6.实现结果
注:(1)这里面需要注意的是一些实现细节,对于像我们这样的新手来说,主要的就是不知道遇到哪种问题该调用哪种方法,这个时候就要凭借日常的积累与帮助文档了。
(2)我们有时会遇到自己编写的代码运行的异常缓慢,比如说:当点击按钮时,程序不会死,但是却反应的特别慢,或者说是,当我们运行程序的时候,明明程序写的没有问题,但就是无法运行。假设这种情况是在你添加了图片之后发生,那么就很有可能是因为你的程序中的图片出了问题。这个时候可以将图片去掉再运行一次,或者是调整图片大小。
0 0
- Android实现简单购物页面
- Android实现简单购物车
- Android 购物车页面和逻辑实现
- Android 购物车页面和逻辑实现
- android实现简单的购物车
- Android一级购物车简单实现
- Android-RecyclerView实现购物车简单功能
- android 实现简单的一级购物车
- Android-RecyclerView实现购物车简单功能
- Android--ExpandableListview购物车简单功能实现
- vue实现简单购物车页面部分功能
- Android商城购物车页面实现和逻辑实现
- 实现简单购物车
- 简单实现购物车
- Android简单购物车
- Android实现购物车页面及购物车效果(点击动画)
- Android----------实现简单的购物车加减器
- android购物车简单实现全选+加减器+总价格
- codeforces contest 785 c题
- Java RTTI与反射
- unity中NGUI文本字体大小设置
- GL画线-画三角形方法
- MFC控件实现视频“暂停” “播放”循环
- Android实现简单购物页面
- JDBC之类路径读取配置文件
- C语言头文件
- 飞起来!Maven飞速下载依赖包
- 阻塞队列,阻塞栈
- 图解GitHub和SourceTree入门教程
- 浅谈计算机网络体系结构
- 静态库与动态库
- 1068. Find More Coins (30)