加依赖
compile ‘com.android.support.constraint:constraint-layout:1.0.2’
compile ‘com.google.code.gson:gson:2.2.4’
compile ‘com.github.bumptech.glide:glide:3.7.0’
compile ‘com.squareup.okhttp3:okhttp:3.4.1’
compile ‘com.squareup.okio:okio:1.5.0’
加权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
加权限的详细位置
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.administrator.day_21">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".IView.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".IView.GoodsActivity"></activity>
</application>
</manifest>
布局
activity_main.xml
<?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"
tools:context="com.example.administrator.day_21.IView.MainActivity"
android:orientation="vertical">
<ImageView
android:id="@+id/img"
android:layout_width="match_parent"
android:layout_height="302dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/title_aa"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="25dp" />
<TextView
android:id="@+id/yuanjia"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/youhui"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ff0000" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/gouwu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="购物车" />
<View
android:layout_width="0.75dp"
android:layout_height="match_parent"
android:background="#000000" />
<Button
android:id="@+id/jrgwc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="加入购物车" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
activity_goods.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="购物车" />
<View
android:layout_width="match_parent"
android:layout_height="0.75dp"
android:background="#000000"></View>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ExpandableListView
android:id="@+id/Elv"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ExpandableListView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<CheckBox
android:id="@+id/ckb"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</CheckBox>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="全选/反选">
</TextView>
<TextView
android:id="@+id/sum"
android:textColor="#ff0000"
android:layout_marginLeft="170dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="总价:0.0">
</TextView>
</LinearLayout>
</LinearLayout>
</LinearLayout>
activity_splash.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_centerHorizontal="true"
android:id="@+id/img"
android:src="@mipmap/ic_launcher"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
childview.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="80dp"
android:orientation="horizontal">
<CheckBox
android:id="@+id/Chcb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical" />
<ImageView
android:id="@+id/Cimg"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_gravity="center_horizontal"
android:src="@mipmap/ic_launcher" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="80dp"
android:gravity="center_vertical"
android:orientation="vertical">
<TextView
android:id="@+id/Ctv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:text="购物车" />
<TextView
android:id="@+id/Cyj"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="购物车" />
</LinearLayout>
</LinearLayout>
groupview.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<CheckBox
android:id="@+id/Gcb"
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/title_bb"
android:textSize="30dp"
android:layout_gravity="center_horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="购物车" />
</LinearLayout>
res下anim
enter.xml
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="2000"
android:fromAlpha="1.0"
android:interpolator="@android:anim/decelerate_interpolator"
android:toAlpha="0.0">
</alpha>
out.xml
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="2000"
android:fromAlpha="0.0"
android:interpolator="@android:anim/decelerate_interpolator"
android:toAlpha="1.0">
</alpha>
IModel 层
AddListener.java
package com.example.administrator.day_21.IModel;
public interface AddListener {
void Addsucces(String json);
void AddError(String json);
}
GoodsLoginListener .java
package com.example.administrator.day_21.IModel;
public interface GoodsLoginListener {
void GoodsloginSccous(String json);
void GoodsloginError(String json);
}
LoadListtener .java
package com.example.administrator.day_21.IModel;
public interface LoadListtener {
void LoadSccuer(String json);
void LoadError(String json);
}
Model.java
package com.example.administrator.day_21.IModel;
import com.example.administrator.day_21.JavaBean.GoodsBean;
import java.util.Map;
/**
* Created by lenovo on 2018/1/10.
*/
public interface Model {
//详情页面
void xqSccusser(String url, Map<String, String> pams, LoginListener loginListener);
//数据页面
void GoodsSccusser(String url, Map<String, String> pams, GoodsLoginListener goodsLoginListener);
//总和
double sumV(GoodsBean goodsBean);
//添加到购物车的而方法
void addToCart(String url, Map<String, String> parms, AddListener addListener);
}
ModelImp.java
package com.example.administrator.day_21.IModel;
import android.util.Log;
import com.example.administrator.day_21.JavaBean.GoodsBean;
import com.example.administrator.day_21.OkhttpUils.OkHttpjiexi;
import java.util.List;
import java.util.Map;
public class ModelImp implements Model {
//详情页面
@Override
public void xqSccusser(String url, Map<String, String> pams, final LoginListener loginListener) {
OkHttpjiexi okHttpjiexi = new OkHttpjiexi();
okHttpjiexi.okPost(url, pams);
okHttpjiexi.setLoadListtener(new LoadListtener() {
@Override
public void LoadSccuer(String json) {
loginListener.xqloginSccous(json);
}
@Override
public void LoadError(String json) {
loginListener.xqloginError(json);
}
});
}
@Override
public void GoodsSccusser(String url, Map<String, String> pams, final GoodsLoginListener goodsLoginListener) {
OkHttpjiexi okHttpjiexi = new OkHttpjiexi();
okHttpjiexi.okPost(url, pams);
okHttpjiexi.setLoadListtener(new LoadListtener() {
@Override
public void LoadSccuer(String json) {
goodsLoginListener.GoodsloginSccous(json);
}
@Override
public void LoadError(String json) {
goodsLoginListener.GoodsloginError(json);
}
});
}
@Override
public double sumV(GoodsBean goodsBean) {
double sum = 0;
List<GoodsBean.DataBean> list = goodsBean.getData();
Log.e("TAG","DSADSSA"+goodsBean.toString()+"");
for (int i = 0; i < list.size(); i++) {
List<GoodsBean.DataBean.ListBean> chflas = list.get(i).getList();
for (int j = 0; j < chflas.size(); j++) {
Boolean chflas1 = chflas.get(j).getChflas();
if (chflas1) {
double price = chflas.get(j).getPrice();
sum = sum + price;
}
}
}
return sum;
}
@Override
public void addToCart(String url, Map<String, String> parms, final AddListener addListener) {
OkHttpjiexi okHttpjiexi = new OkHttpjiexi();
okHttpjiexi.okPost(url, parms);
okHttpjiexi.setLoadListtener(new LoadListtener() {
@Override
public void LoadSccuer(String json) {
addListener.Addsucces(json);
}
@Override
public void LoadError(String json) {
addListener.AddError(json);
}
});
}
}
IView层
AddView.java
package com.example.administrator.day_21.IView;
import com.example.administrator.day_21.JavaBean.GoodsBean;
public interface AddView {
void showDetailData(GoodsBean goodsBean);
void jumpToCatActivity();
void addToCart();
//获取PID的方法
String getPid();
//成功的提示
void showAddSucess();
//失败的提示
void shoAddError();
}
GoodsActivity.java
package com.example.administrator.day_21.IView;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.CheckBox;
import android.widget.ExpandableListView;
import android.widget.TextView;
import com.example.administrator.day_21.IModel.ModelImp;
import com.example.administrator.day_21.JavaBean.GoodsBean;
import com.example.administrator.day_21.R;
import com.example.administrator.day_21.presenter.IpresenterImp;
import java.util.List;
public class GoodsActivity extends AppCompatActivity implements GoodsView,sumView{
private ExpandableListView elv;
private CheckBox ckb;
private TextView sum1;
private MyBaseApader myBaseApader;
private GoodsBean goodsBean;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_goods);
inview();
IpresenterImp ipresenterImp = new IpresenterImp();
ipresenterImp.showGoodsdate(this, new ModelImp(), this);
}
public void inview() {
elv = (ExpandableListView) findViewById(R.id.Elv);
ckb = (CheckBox) findViewById(R.id.ckb);
sum1 = (TextView) findViewById(R.id.sum);
ckb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
List<GoodsBean.DataBean> data = goodsBean.getData();
for (int i = 0; i < data.size(); i++) {
data.get(i).setGflas(!data.get(i).getGflas());
//子元素
List<GoodsBean.DataBean.ListBean> list = data.get(i).getList();
for (int j = 0; j < list.size(); j++) {
list.get(j).setChflas(!list.get(j).getChflas());
}
}
// 通知刷新
myBaseApader.notifyDataSetChanged();
//计算
IpresenterImp presenter = new IpresenterImp();
presenter.jisuan(new ModelImp(), goodsBean,GoodsActivity.this);
}
});
}
@Override
public void showSum(double sum) {
sum1.setText("总价:" + sum);
}
@Override
public GoodsBean goodsBean() {
return goodsBean;
}
@Override
public void showGoodsDate(Context context, GoodsBean goodsBean, List<GoodsBean.DataBean> data) {
this.goodsBean=goodsBean;
Log.e("Tag", data.toString() + "++++++++++++++++++++++++++++++++++");
myBaseApader = new MyBaseApader(context,this, data);
elv.setAdapter(myBaseApader);
int childCount = myBaseApader.getGroupCount();
for (int i = 0; i < childCount; i++) {
elv.expandGroup(i);
}
}
}
GoodsView.java
package com.example.administrator.day_21.IView;
import android.content.Context;
import com.example.administrator.day_21.JavaBean.GoodsBean;
import java.util.List;
public interface GoodsView {
void showGoodsDate(Context context, GoodsBean goodsBean, List<GoodsBean.DataBean> data);
}
MainActivity.java
package com.example.administrator.day_21.IView;
import android.content.Context;
import android.content.Intent;
import android.graphics.Paint;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.bumptech.glide.Glide;
import com.example.administrator.day_21.IModel.ModelImp;
import com.example.administrator.day_21.JavaBean.GoodsBean;
import com.example.administrator.day_21.JavaBean.XqBean;
import com.example.administrator.day_21.R;
import com.example.administrator.day_21.presenter.IpresenterImp;
public class MainActivity extends AppCompatActivity implements XqView, View.OnClickListener,AddView {
private ImageView img;
private TextView title_aa;
private TextView yuanjia;
private TextView youhui;
private Button gouwu;
private Button jrgwc;
private XqBean.DataBean datebean;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
inview();
IpresenterImp ip = new IpresenterImp();
ip.showXqdate(this, new ModelImp(), this);
}
public void inview() {
img = (ImageView) findViewById(R.id.img);
title_aa = (TextView) findViewById(R.id.title_aa);
yuanjia = (TextView) findViewById(R.id.yuanjia);
youhui = (TextView) findViewById(R.id.youhui);
gouwu = (Button) findViewById(R.id.gouwu);
jrgwc = (Button) findViewById(R.id.jrgwc);
gouwu.setOnClickListener(this);
jrgwc.setOnClickListener(this);
}
@Override
public void showdate(Context context, XqBean.DataBean Xpdate) {
this.datebean=Xpdate;
Toast.makeText(context, Xpdate.toString() + "", Toast.LENGTH_SHORT).show();
String images = Xpdate.getImages();
String[] split = images.split(".jpg");
String s = split[0] + ".jpg";
Glide.with(MainActivity.this).load(s).into(img);
title_aa.setText(Xpdate.getTitle());
yuanjia.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG); //中间横线
yuanjia.setText("原价:" + Xpdate.getPrice() + "");
youhui.setText("优惠价:" + Xpdate.getBargainPrice() + "");
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.gouwu:
Toast.makeText(this, "DSADSADA", Toast.LENGTH_SHORT).show();
startActivity(new Intent(MainActivity.this, GoodsActivity.class));
finish();
break;
case R.id.jrgwc:
IpresenterImp ipresenterImp=new IpresenterImp();
ipresenterImp.Addip(new ModelImp(),this);
break;
}
}
@Override
public void showDetailData(GoodsBean goodsBean) {
}
@Override
public void jumpToCatActivity() {
}
@Override
public void addToCart() {
}
@Override
public String getPid() {
return datebean.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();
}
}
MyBaseApader.java
package com.example.administrator.day_21.IView;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.example.administrator.day_21.IModel.ModelImp;
import com.example.administrator.day_21.JavaBean.GoodsBean;
import com.example.administrator.day_21.R;
import com.example.administrator.day_21.presenter.IpresenterImp;
import java.util.List;
public class MyBaseApader extends BaseExpandableListAdapter {
private final Context context;
private final List<GoodsBean.DataBean> data;
private final sumView sumView;
private double sum = 0;
public MyBaseApader(Context context, sumView sumView, List<GoodsBean.DataBean> data) {
this.context = context;
this.data = data;
this.sumView = sumView;
}
@Override
public int getGroupCount() {
return data.size();
}
@Override
public int getChildrenCount(int groupPosition) {
return data.get(groupPosition).getList().size();
}
@Override
public Object getGroup(int groupPosition) {
return groupPosition;
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return data.get(groupPosition).getList().get(childPosition);
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
GroupViewHolde groupViewHolde = null;
if (convertView == null) {
groupViewHolde = new GroupViewHolde();
convertView = View.inflate(context, R.layout.groupview, null);
groupViewHolde.tv = (TextView) convertView.findViewById(R.id.title_bb);
groupViewHolde.ck = (CheckBox) convertView.findViewById(R.id.Gcb);
convertView.setTag(groupViewHolde);
} else {
groupViewHolde = (GroupViewHolde) convertView.getTag();
}
groupViewHolde.tv.setText(data.get(groupPosition).getSellerName());
groupViewHolde.ck.setChecked(data.get(groupPosition).getGflas());
groupViewHolde.ck.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Boolean gflas = data.get(groupPosition).getGflas();
gflas = !gflas;
data.get(groupPosition).setGflas(gflas);
//遍历子元素,全部置为true
List<GoodsBean.DataBean.ListBean> list = data.get(groupPosition).getList();
//遍历子元素,全部置为true
for (int i = 0; i < list.size(); i++) {
list.get(i).setChflas(gflas);
}
//通知界面
notifyDataSetChanged();
IpresenterImp ipresenterImp = new IpresenterImp();
ipresenterImp.jisuan(new ModelImp(), sumView.goodsBean(), sumView);
}
});
return convertView;
}
@Override
public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
ChildViewHolde childViewHolde = null;
if (convertView == null) {
childViewHolde = new ChildViewHolde();
convertView = View.inflate(context, R.layout.childview, null);
childViewHolde.ckd = (CheckBox) convertView.findViewById(R.id.Chcb);
childViewHolde.img = (ImageView) convertView.findViewById(R.id.Cimg);
childViewHolde.Ctv = (TextView) convertView.findViewById(R.id.Ctv);
childViewHolde.yuan_tv = (TextView) convertView.findViewById(R.id.Cyj);
convertView.setTag(childViewHolde);
} else {
childViewHolde = (ChildViewHolde) convertView.getTag();
}
String images = data.get(groupPosition).getList().get(childPosition).getImages();
String[] jpgs = images.split("jpg");
String s = jpgs[0] + "jpg";
Glide.with(context).load(s).into(childViewHolde.img);
childViewHolde.ckd.setChecked(data.get(groupPosition).getList().get(childPosition).getChflas());
childViewHolde.Ctv.setText(data.get(groupPosition).getList().get(childPosition).getTitle());
childViewHolde.yuan_tv.setText(data.get(groupPosition).getList().get(childPosition).getPrice() + "");
childViewHolde.ckd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean isCheked = data.get(groupPosition).getList().get(childPosition).getChflas();
isCheked = !isCheked;
data.get(groupPosition).getList().get(childPosition).setChflas(isCheked);
;
boolean flag = true;
for (int i = 0; i < data.get(groupPosition).getList().size(); i++) {
if (!data.get(groupPosition).getList().get(i).getChflas()) {
flag = false;
}
}
data.get(groupPosition).setGflas(flag);
IpresenterImp ipresenterImp = new IpresenterImp();
ipresenterImp.jisuan(new ModelImp(), sumView.goodsBean(), sumView);
//通知界面
notifyDataSetChanged();
}
});
return convertView;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return false;
}
class GroupViewHolde {
CheckBox ck;
TextView tv;
}
class ChildViewHolde {
CheckBox ckd;
ImageView img;
TextView Ctv;
TextView yuan_tv;
}
}
SplashActivity.java
package com.example.administrator.day_21.IView;
import android.animation.Animator;
import android.animation.AnimatorSet;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.ImageView;
import com.example.administrator.day_21.R;
public class SplashActivity extends Activity {
private ImageView img;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
inView();
}
private void inView() {
img = (ImageView) findViewById(R.id.img);
AnimatorSet animatorSet = SplashView.setAnimatorSet(SplashActivity.this, img);
animatorSet.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
startActivity(new Intent(SplashActivity.this, MainActivity.class));
overridePendingTransition(R.anim.enter, R.anim.out);
finish();
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
}
}
SplashView.java
package com.example.administrator.day_21.IView;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.util.DisplayMetrics;
import android.view.View;
/**
* Created by lenovo on 2018/1/10.
*/
public class SplashView {
public static AnimatorSet setAnimatorSet(Context context, View view) {
//获取屏幕一般
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
int heightPixels = metrics.heightPixels;
ObjectAnimator translationY = ObjectAnimator.ofFloat(view, "translationY", 0, heightPixels / 2 - view.getHeight());
ObjectAnimator scaleX = ObjectAnimator.ofFloat(view, "scaleX", 2.0f, 1.0f);
ObjectAnimator scaleY = ObjectAnimator.ofFloat(view, "scaleY", 2.0f, 1.0f);
ObjectAnimator alpha = ObjectAnimator.ofFloat(view, "alpha", 0, 1.0f);
ObjectAnimator rotation = ObjectAnimator.ofFloat(view, "rotation", 0, 360);
AnimatorSet animatorSet = new AnimatorSet();
animatorSet.playTogether(translationY,scaleX,scaleY,alpha,rotation);
animatorSet.setDuration(3000);
animatorSet.start();
return animatorSet;
}
//获取屏幕一般
}
sumView.java
package com.example.administrator.day_21.IView;
import com.example.administrator.day_21.JavaBean.GoodsBean;
/**
* Created by lenovo on 2018/1/12.
*/
public interface sumView {
//显示总价
void showSum(double sum);
GoodsBean goodsBean();
}
XqView.java
package com.example.administrator.day_21.IView;
import android.content.Context;
import com.example.administrator.day_21.JavaBean.XqBean;
public interface XqView {
void showdate(Context context, XqBean.DataBean Xpdate);
}
JavaBean层
GoodsBean.java
package com.example.administrator.day_21.JavaBean;
import java.util.List;
public class GoodsBean {
private String msg;
private String code;
private List<DataBean> data;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public List<DataBean> getData() {
return data;
}
public void setData(List<DataBean> data) {
this.data = data;
}
public static class DataBean {
private boolean Gflas;
private String sellerName;
private String sellerid;
private List<ListBean> list;
@Override
public String toString() {
return "DataBean{" +
"Gflas=" + Gflas +
", sellerName='" + sellerName + '\'' +
", sellerid='" + sellerid + '\'' +
", list=" + list +
'}';
}
public Boolean getGflas() {
return Gflas;
}
public void setGflas(Boolean gflas) {
Gflas = gflas;
}
public DataBean(Boolean gflas, String sellerName, String sellerid, List<ListBean> list) {
this.Gflas = gflas;
this.sellerName = sellerName;
this.sellerid = sellerid;
this.list = list;
}
public String getSellerName() {
return sellerName;
}
public void setSellerName(String sellerName) {
this.sellerName = sellerName;
}
public String getSellerid() {
return sellerid;
}
public void setSellerid(String sellerid) {
this.sellerid = sellerid;
}
public List<ListBean> getList() {
return list;
}
public void setList(List<ListBean> list) {
this.list = list;
}
public static class ListBean {
private boolean chflas;
private double bargainPrice;
private String createtime;
private String detailUrl;
private String images;
private int num;
private int pid;
private double price;
private int pscid;
private int selected;
private int sellerid;
private String subhead;
private String title;
@Override
public String toString() {
return "ListBean{" +
"chflas=" + chflas +
", bargainPrice=" + bargainPrice +
", createtime='" + createtime + '\'' +
", detailUrl='" + detailUrl + '\'' +
", images='" + images + '\'' +
", num=" + num +
", pid=" + pid +
", price=" + price +
", pscid=" + pscid +
", selected=" + selected +
", sellerid=" + sellerid +
", subhead='" + subhead + '\'' +
", title='" + title + '\'' +
'}';
}
public ListBean() {
}
public ListBean(Boolean chflas, double bargainPrice, String createtime, String detailUrl, String images, int num, int pid, double price, int pscid, int selected, int sellerid, String subhead, String title) {
this.chflas = chflas;
this.bargainPrice = bargainPrice;
this.createtime = createtime;
this.detailUrl = detailUrl;
this.images = images;
this.num = num;
this.pid = pid;
this.price = price;
this.pscid = pscid;
this.selected = selected;
this.sellerid = sellerid;
this.subhead = subhead;
this.title = title;
}
public Boolean getChflas() {
return chflas;
}
public void setChflas(Boolean chflas) {
this.chflas = chflas;
}
public double getBargainPrice() {
return bargainPrice;
}
public void setBargainPrice(double bargainPrice) {
this.bargainPrice = bargainPrice;
}
public String getCreatetime() {
return createtime;
}
public void setCreatetime(String createtime) {
this.createtime = createtime;
}
public String getDetailUrl() {
return detailUrl;
}
public void setDetailUrl(String detailUrl) {
this.detailUrl = detailUrl;
}
public String getImages() {
return images;
}
public void setImages(String images) {
this.images = images;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}
public double getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getPscid() {
return pscid;
}
public void setPscid(int pscid) {
this.pscid = pscid;
}
public int getSelected() {
return selected;
}
public void setSelected(int selected) {
this.selected = selected;
}
public int getSellerid() {
return sellerid;
}
public void setSellerid(int sellerid) {
this.sellerid = sellerid;
}
public String getSubhead() {
return subhead;
}
public void setSubhead(String subhead) {
this.subhead = subhead;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
}
}
XqBean.java
package com.example.administrator.day_21.JavaBean;
public class XqBean {
private String msg;
private SellerBean seller;
private String code;
private DataBean data;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public SellerBean getSeller() {
return seller;
}
public void setSeller(SellerBean seller) {
this.seller = seller;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public DataBean getData() {
return data;
}
public void setData(DataBean data) {
this.data = data;
}
public static class SellerBean {
private String description;
private String icon;
private String name;
private int productNums;
private int score;
private int sellerid;
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getProductNums() {
return productNums;
}
public void setProductNums(int productNums) {
this.productNums = productNums;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
public int getSellerid() {
return sellerid;
}
public void setSellerid(int sellerid) {
this.sellerid = sellerid;
}
}
public static class DataBean {
private double bargainPrice;
private String createtime;
private String detailUrl;
private String images;
private int itemtype;
private int pid;
private int price;
private int pscid;
private int salenum;
private int sellerid;
private String subhead;
private String title;
public double getBargainPrice() {
return bargainPrice;
}
public void setBargainPrice(double bargainPrice) {
this.bargainPrice = bargainPrice;
}
public String getCreatetime() {
return createtime;
}
public void setCreatetime(String createtime) {
this.createtime = createtime;
}
public String getDetailUrl() {
return detailUrl;
}
public void setDetailUrl(String detailUrl) {
this.detailUrl = detailUrl;
}
public String getImages() {
return images;
}
public void setImages(String images) {
this.images = images;
}
public int getItemtype() {
return itemtype;
}
public void setItemtype(int itemtype) {
this.itemtype = itemtype;
}
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getPscid() {
return pscid;
}
public void setPscid(int pscid) {
this.pscid = pscid;
}
public int getSalenum() {
return salenum;
}
public void setSalenum(int salenum) {
this.salenum = salenum;
}
public int getSellerid() {
return sellerid;
}
public void setSellerid(int sellerid) {
this.sellerid = sellerid;
}
public String getSubhead() {
return subhead;
}
public void setSubhead(String subhead) {
this.subhead = subhead;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
}
OkhttpUils
OkHttpConfing.java
package com.example.administrator.day_21.OkhttpUils;
//1.商品详情接口
// https://www.zhaoapi.cn/product/getProductDetail
// 请求参数说明:
// pid 商品id字段 String类型 必传
// 返回字段说明:
// bargainPrice 优惠价字段 double类型
// title 商品名称字段 String类型
// price 原价字段
// images 图片列表字段 String类型(注意多张图片用|分割,需要分离出图片url,取第一张图片显示即可)
// 2.加入购物车接口
// https://www.zhaoapi.cn/product/addCart
// 请求参数说明:
// uid 用户id字段 String类型 必传
// pid 商品id字段 String类型 必传
// 返回字段说明:
// {"msg":"加购成功","code":"0"}
// 3.获取购物车列表接口
// https://www.zhaoapi.cn/product/getCarts
// 请求参数说明:
// uid 用户id字段 String类型 必传
// 返回字段说明:
// 见返回json串
// sellerName 商家名称
// sellerid 商家id
public class OkHttpConfing {
public static String Goodsxq_url="https://www.zhaoapi.cn/product/getProductDetail";
public static String Cart_url="https://www.zhaoapi.cn/product/addCart";
public static String getCarts_url="https://www.zhaoapi.cn/product/getCarts";
}
OkHttpjiexi.java
package com.example.administrator.day_21.OkhttpUils;
import android.os.Handler;
import android.os.Message;
import com.example.administrator.day_21.IModel.LoadListtener;
import java.io.IOException;
import java.util.Map;
import java.util.Set;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class OkHttpjiexi {
private static OkHttpjiexi okhttpjiexi = null;
MyHandler myHandler=new MyHandler();
private LoadListtener loadListtener;
//单例
public static OkHttpjiexi getInstance() {
if (okhttpjiexi == null) {
okhttpjiexi = new OkHttpjiexi();
}
return okhttpjiexi;
}
public void getOkhttp(String url) {
OkHttpClient okHttpClient = new OkHttpClient();
Request builder = new Request.Builder().url(url).build();
Call call = okHttpClient.newCall(builder);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Message message = myHandler.obtainMessage();
message.what = 0;
message.obj = e.getMessage();
myHandler.sendMessage(message);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
Message message = myHandler.obtainMessage();
message.what = 1;
message.obj = response.body().string();
myHandler.sendMessage(message);
}
});
}
public void okPost(String url, Map<String, String> map) {
OkHttpClient client = new OkHttpClient.Builder().addInterceptor(new MyInter()).build();
//创建FormBody
FormBody.Builder builder = new FormBody.Builder();
//遍历map
Set<String> keys = map.keySet();
for (String key : keys) {
String value = map.get(key);
builder.add(key, value+"");
}
//build
FormBody body = builder.build();
Request request = new Request.Builder().url(url).post(body).build();
Call call = client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Message message = myHandler.obtainMessage();
message.what = 0;
message.obj = e.getMessage();
myHandler.sendMessage(message);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
Message message = myHandler.obtainMessage();
message.what = 1;
message.obj = response.body().string();
myHandler.sendMessage(message);
}
});
}
//拦截器
class MyInter implements Interceptor {
private static final String TAG = "MyInter";
@Override
public Response intercept(Chain chain) throws IOException {
//获取原来的body
Request request = chain.request();
RequestBody body = request.body();
if (body instanceof FormBody) {
//遍历原来的所有参数,加到新的Body里面,最后将公共参数加到新的Body
FormBody.Builder newBuilder = new FormBody.Builder();
for (int i = 0; i < ((FormBody) body).size(); i++) {
String name = ((FormBody) body).name(i);
String value = ((FormBody) body).value(i);
//放入新的
newBuilder.add(name, value);
}
//在将公共参数添加进去
newBuilder.add("source", "android");
FormBody newBody = newBuilder.build();
//创建新的请求
Request newRequest = request.newBuilder().post(newBody).build();
Response response = chain.proceed(newRequest);
return response;
}
return null;
}
}
//handler
class MyHandler extends Handler {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 0:
//失败
String e = (String) msg.obj;
loadListtener.LoadError(e);
break;
case 1:
//成功
String json = (String) msg.obj;
loadListtener.LoadSccuer(json);
break;
}
}
}
public void setLoadListtener(LoadListtener loadListtener){
this.loadListtener=loadListtener;
}
}
presenter层
Ipresenter.java
package com.example.administrator.day_21.presenter;
import android.content.Context;
import com.example.administrator.day_21.IModel.Model;
import com.example.administrator.day_21.IView.AddView;
import com.example.administrator.day_21.IView.GoodsView;
import com.example.administrator.day_21.IView.XqView;
import com.example.administrator.day_21.IView.sumView;
import com.example.administrator.day_21.JavaBean.GoodsBean;
public interface Ipresenter {
void showXqdate(Context context, Model model, XqView xqView);
void showGoodsdate(Context context, Model model, GoodsView goodsView);
void jisuan(Model iModel, GoodsBean goodsbean, sumView iCartView);
void Addip(Model iModel, AddView Add);
}
IpresenterImp.java
package com.example.administrator.day_21.presenter;
import android.content.Context;
import android.util.Log;
import com.example.administrator.day_21.IModel.AddListener;
import com.example.administrator.day_21.IModel.LoginListener;
import com.example.administrator.day_21.IModel.Model;
import com.example.administrator.day_21.IView.AddView;
import com.example.administrator.day_21.IView.GoodsView;
import com.example.administrator.day_21.IView.XqView;
import com.example.administrator.day_21.IView.sumView;
import com.example.administrator.day_21.JavaBean.GoodsBean;
import com.example.administrator.day_21.JavaBean.XqBean;
import com.example.administrator.day_21.OkhttpUils.OkHttpConfing;
import com.google.gson.Gson;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class IpresenterImp implements Ipresenter{
@Override
public void showXqdate(final Context context, Model model, final XqView xqView) {
Map<String, String> map = new HashMap<String, String>();
map.put("pid","17");
model.xqSccusser(OkHttpConfing.Goodsxq_url, map, new LoginListener() {
@Override
public void xqloginSccous(String json) {
Gson g=new Gson();
XqBean xqBean = g.fromJson(json, XqBean.class);
XqBean.DataBean data = xqBean.getData();
xqView.showdate(context,data);
}
@Override
public void xqloginError(String json) {
}
});
}
@Override
public void showGoodsdate(final Context context, Model model, final GoodsView goodsView) {
Map<String, String> map = new HashMap<String, String>();
map.put("uid","71");
model.xqSccusser(OkHttpConfing.getCarts_url, map, new LoginListener() {
@Override
public void xqloginSccous(String json) {
Log.e("Tag",json.toString()+"有数据");
Gson g=new Gson();
GoodsBean goodsBean = g.fromJson(json, GoodsBean.class);
List<GoodsBean.DataBean> data = goodsBean.getData();
goodsView.showGoodsDate(context,goodsBean,data);
}
@Override
public void xqloginError(String json) {
Log.e("Tag",json+"++++++++++++++++");
}
});
}
@Override
public void jisuan(Model iModel, GoodsBean goodsbean, sumView iCartView) {
double v = iModel.sumV(goodsbean);
iCartView.showSum(v);
}
@Override
public void Addip(Model iModel, final AddView Add) {
Map<String, String> map = new HashMap<String, String>();
map.put("pid", Add.getPid());
map.put("uid", "71");
iModel.addToCart(OkHttpConfing.Cart_url, map, new AddListener() {
@Override
public void Addsucces(String json) {
Log.d("TAG", "addSucess() returned: " + json);
try {
JSONObject object = new JSONObject(json);
String code = object.getString("code");
if (code.equals("0")) {
Add.showAddSucess();
} else {
Add.shoAddError();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void AddError(String json) {
Add.shoAddError();
}
});
}
}