购物车?666

Android权限


<uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

 

依赖

implementation 'com.android.support:recyclerview-v7:26.1.0'
implementation 'com.squareup.okhttp3:okhttp:3.6.0'
implementation 'com.squareup.okio:okio:1.11.0'
implementation 'com.google.code.gson:gson:2.2.4'
implementation 'com.github.bumptech.glide:glide:3.7.0'

 

layout-main:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <LinearLayout
        android:id="@+id/linear"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <EditText
            android:id="@+id/sousuo"
            android:background="@null"
            android:layout_weight="8"
            android:layout_width="0dp"
            android:layout_height="wrap_content" />
        <Button
            android:id="@+id/sousuo_btn"
            android:text="搜索"
            android:layout_weight="2"
            android:layout_width="0dp"
            android:layout_height="wrap_content" />

    </LinearLayout>

    <TextView
        android:id="@+id/qingkong"
        android:layout_width="15dp"
        android:layout_height="15dp"
        android:layout_below="@id/linear"
        android:background="@mipmap/qingkong"/>

    <com.bwie.dongyushan.liu.LiuShi
        android:id="@+id/liushi"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/linear"></com.bwie.dongyushan.liu.LiuShi>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_below="@id/liushi">

        <android.support.v7.widget.RecyclerView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/recylerView"></android.support.v7.widget.RecyclerView>

        <View
            android:layout_width="match_parent"
            android:layout_height="50dp"/>

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:orientation="horizontal"
        android:id="@+id/bottom_linear"
        android:layout_alignParentBottom="true"
        android:background="#fff">

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

        <TextView
            android:id="@+id/quanxuan"
            android:layout_gravity="center_vertical"
            android:text="全选"
            android:layout_marginLeft="10dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="vertical"
            android:id="@+id/linear02"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="20dp">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="总价:¥0"
                android:id="@+id/zongjia_text"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="共0件商品"
                android:layout_marginTop="5dp"
                android:id="@+id/num_shop"/>

        </LinearLayout>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="去结算"
            android:id="@+id/jiesuan"
            android:layout_gravity="center_vertical"
            android:padding="5dp"
            android:textColor="#fff"
            android:background="@drawable/yuan"/>

    </LinearLayout>

</RelativeLayout>

 

 

 

 

MainActivity

package com.bwie.dongyushan;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.bwie.dongyushan.adapter.MyAdapter;
import com.bwie.dongyushan.bean.UserBean;
import com.bwie.dongyushan.liu.LiuShi;
import com.bwie.dongyushan.presenter.MyPresenter;
import com.bwie.dongyushan.view.MyView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity implements MyView{


    private RecyclerView recyclerView;
    private MyPresenter myPresenter;
    private List<UserBean.DataBean> data;
    private List<UserBean> list01;
    private EditText sousuo;
    private Button sousuo_btn;
    private LiuShi liuShi;
    private List<String> list=new ArrayList<>();
    private TextView qingkong;
    private CheckBox cb_01;
    private MyAdapter adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        recyclerView = findViewById(R.id.recylerView);
        myPresenter = new MyPresenter(this);
        liuShi = findViewById(R.id.liushi);
        sousuo=findViewById(R.id.sousuo);
        sousuo_btn=findViewById(R.id.sousuo_btn);
        qingkong = findViewById(R.id.qingkong);
        cb_01 = findViewById(R.id.cb_01);
        cb_01.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(cb_01.isChecked()){
                    for (int i = 0; i <data.size() ; i++) {
                        data.get(i).setMychecked(true);
                        for (int j = 0; j <data.get(i).getList().size() ; j++) {
                            data.get(i).getList().get(j).setSeedchecked(true);
                        }
                    }
                }else {
                    for (int i = 0; i <data.size() ; i++) {
                        data.get(i).setMychecked(false);
                        for (int j = 0; j <data.get(i).getList().size() ; j++) {
                            data.get(i).getList().get(j).setSeedchecked(false);
                        }
                    }
                }
                adapter.notifyDataSetChanged();


            }
        });
        qingkong = findViewById(R.id.qingkong);

        qingkong.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                list.clear();
                liuShi.removeAllViews();
            }
        });

        sousuo_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String st= sousuo.getText().toString();
                list.add(st);
                liuShi.removeAllViews();
                for (int i=0;i<list.size();i++){

                    TextView tv=new TextView(MainActivity.this);
                    tv.setText(list.get(i));
                    liuShi.addView(tv);
                }
                liuShi.setPadding(5,5,5,5);
            }
        });


        recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this,LinearLayoutManager.VERTICAL,false));
        myPresenter.show();
    }

    //成功
    @Override
    public void success(final UserBean userBean) {
        runOnUiThread(new Runnable() {



            @Override
            public void run() {
                data = userBean.getData();
              //  Toast.makeText(MainActivity.this,data.size()+"",Toast.LENGTH_SHORT).show();
                adapter = new MyAdapter(data, MainActivity.this);
                recyclerView.setAdapter(adapter);
            }
        });
    }

    //失败
    @Override
    public void failure(final String msg) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(MainActivity.this,msg,Toast.LENGTH_SHORT).show();
            }
        });
    }
}

 

 

MyView

package dongyushan.bwie.com.bai.view;

import dongyushan.bwie.com.bai.bean.UserBean;

public interface MyView {
    void success(UserBean userBean);
    void failure(String msg);
}
 

 

 

 

OkHttpUtils

package dongyushan.bwie.com.bai.utils;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;

import dongyushan.bwie.com.bai.event.RequestCallback;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class OkHttpUtils {
    private static OkHttpUtils okHttpUtils;
    private  OkHttpClient okHttpClient;

    private OkHttpUtils(){
        okHttpClient=new OkHttpClient.Builder()
                .writeTimeout(5, TimeUnit.SECONDS)
                .readTimeout(5,TimeUnit.SECONDS)
                .connectTimeout(5,TimeUnit.SECONDS)
                .build();
    }

    public static OkHttpUtils getInstance(){
        if (okHttpUtils==null){
            synchronized (OkHttpUtils.class){
                if (okHttpUtils==null){
                    okHttpUtils=new OkHttpUtils();
                }
            }
        }
        return okHttpUtils;
    }

    public void postData(String url, HashMap<String,String> prams, final RequestCallback requestCallback){
        FormBody.Builder formBodyBuilder = new FormBody.Builder();
        if (prams!=null&&prams.size()>0){
            for (Map.Entry<String,String> stringStringEntry:prams.entrySet()){
                formBodyBuilder.add(stringStringEntry.getKey(),stringStringEntry.getValue());
            }
        }
        final Request request = new Request.Builder()
                .url(url).post(formBodyBuilder.build()).build();

        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                if (requestCallback!=null){
                    requestCallback.failure(call,e);
                }
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if (requestCallback != null) {
                    String string = response.body().string();
                    requestCallback.success(call,string);
                }
            }
        });
    }

}
 

 

 

 

MyPresenter

package dongyushan.bwie.com.bai.presenter;

import com.google.gson.Gson;

import java.io.IOException;

import dongyushan.bwie.com.bai.bean.UserBean;
import dongyushan.bwie.com.bai.event.RequestCallback;
import dongyushan.bwie.com.bai.model.MyModel;
import dongyushan.bwie.com.bai.view.MyView;
import okhttp3.Call;

public class MyPresenter {
    private MyView myView;
    private MyModel myModel;

    public MyPresenter(MyView myView) {
        this.myView = myView;
        myModel=new MyModel();
    }

    public void show(){
        myModel.show(new RequestCallback() {
            @Override
            public void success(Call call, String s) {
                Gson gson=new Gson();
                UserBean userBean=gson.fromJson(s,UserBean.class);
                myView.success(userBean);
            }

            @Override
            public void failure(Call call, IOException e) {
                myView.failure("失败");
            }
        });
    }
}
 

 

 

 

MyModel

package dongyushan.bwie.com.bai.model;

import com.google.gson.Gson;

import java.io.IOException;
import java.util.HashMap;

import dongyushan.bwie.com.bai.bean.UserBean;
import dongyushan.bwie.com.bai.event.RequestCallback;
import dongyushan.bwie.com.bai.utils.OkHttpUtils;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class MyModel {
    //private OkHttpClient okHttpClient;
    private HashMap<String,String> parms;
    public void show(RequestCallback requestCallback){
        parms=new HashMap<>();
        parms.put("uid","71");
        OkHttpUtils.getInstance().postData("https://www.zhaoapi.cn/product/getCarts",parms,requestCallback);
//        okHttpClient=new OkHttpClient();
//        FormBody formBody=new FormBody.Builder()
//                .add("uid","71")
//                .build();
//
//        Request request=new Request.Builder()
//                .url("https://www.zhaoapi.cn/product/getCarts")
//                .post(formBody)
//                .build();
//
//        okHttpClient.newCall(request).enqueue(new Callback() {
//            @Override
//            public void onFailure(Call call, IOException e) {
//                showCallBack.failure("失败");
//            }
//
//            @Override
//            public void onResponse(Call call, Response response) throws IOException {
//                String string=response.body().string();
//                Gson gson=new Gson();
//                UserBean userBean=gson.fromJson(string,UserBean.class);
//                showCallBack.success(userBean);
//            }
//        });

    }

}
 

 

 

even-RequestCallBack

package dongyushan.bwie.com.bai.event;


import java.io.IOException;

import okhttp3.Call;

public interface RequestCallback {
    void success(Call call,String s);
    void failure(Call call, IOException e);
}
 

 

 

 

MyAdapter

package com.bwie.dongyushan.adapter;

import android.content.Context;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.TextView;

import com.bwie.dongyushan.R;
import com.bwie.dongyushan.bean.UserBean;

import java.util.List;

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder>{
    private List<UserBean.DataBean> list;
    private Context context;

    public MyAdapter(List<UserBean.DataBean> list, Context context) {
        this.list = list;
        this.context = context;
    }


    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.item, parent, false);
        MyViewHolder myViewHolder=new MyViewHolder(view);
        return myViewHolder;
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {

        holder.cb_02.setChecked(list.get(position).isMychecked());

        holder.shangdian_name_text.setText(list.get(position).getSellerName());
        holder.recyclerView_seed.setLayoutManager(new LinearLayoutManager(context));
        SeedAdapter seedAdapter = new SeedAdapter(list.get(position).getList(), context);
        holder.recyclerView_seed.setAdapter(seedAdapter);
    }


    @Override
    public int getItemCount() {
        return list.size()==0?0:list.size();
    }

    class MyViewHolder extends RecyclerView.ViewHolder{
        private CheckBox cb_02;
        private TextView shangdian_name_text;
        private RecyclerView recyclerView_seed;

        public MyViewHolder(View itemView) {
            super(itemView);
            shangdian_name_text=itemView.findViewById(R.id.shangdian_name_text);
            recyclerView_seed=itemView.findViewById(R.id.recyclerView_seed);
            cb_02 = itemView.findViewById(R.id.cb_02);
        }
    }
}

 

 

 

SeedAdapter

package com.bwie.dongyushan.adapter;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.bwie.dongyushan.R;
import com.bwie.dongyushan.bean.UserBean;

import java.util.List;

public class SeedAdapter extends RecyclerView.Adapter<SeedAdapter.MyViewHolder2>{
    private List<UserBean.DataBean.ListBean> list;
    private Context context;

    public SeedAdapter(List<UserBean.DataBean.ListBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @Override
    public MyViewHolder2 onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.seed_item, parent, false);
        MyViewHolder2 myViewHolder2=new MyViewHolder2(view);
        return myViewHolder2;
    }

    @Override
    public void onBindViewHolder(final MyViewHolder2 holder, int position) {

        holder.cb_03.setChecked(list.get(position).isseedchecked());

        holder.shangpin_price_text.setText(list.get(position).getPrice()+"");
        holder.shangpin_name_text.setText(list.get(position).getTitle());
        String images = list.get(position).getImages();
        String[] split=images.split("\\|");
        String a=split[0].toString();
        Log.i("aaa",a);
        Glide.with(context).load(split[0]).into(holder.shangpin_image);

        //点击加号
        holder.jia.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int num1 = Integer.parseInt(holder.num.getText().toString());
                num1+=2;
                holder.num.setText(num1+"");
            }
        });
        //点击减号
        holder.jian.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int num1 = Integer.parseInt(holder.num.getText().toString());
                if (num1<=1){
                }else {
                    num1-=1;
                    holder.num.setText(num1+"");
                }
            }
        });
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    public class MyViewHolder2 extends RecyclerView.ViewHolder{
        private CheckBox cb_03;
        private TextView shangpin_name_text,shangpin_price_text,num;
        private ImageView shangpin_image,jia,jian;

        public MyViewHolder2(View itemView) {
            super(itemView);
            shangpin_name_text = itemView.findViewById(R.id.shangpin_name_text);
            shangpin_price_text = itemView.findViewById(R.id.shangpin_price_text);
            shangpin_image = itemView.findViewById(R.id.shangpin_image);
            jia=itemView.findViewById(R.id.jia);
            jian=itemView.findViewById(R.id.jian);
            num=itemView.findViewById(R.id.num);
            cb_03 = itemView.findViewById(R.id.cb_03);
        }
    }


}

 

 

layout-item

<?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="wrap_content">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <View
            android:layout_width="match_parent"
            android:layout_height="10dp"
            android:background="#D3D3D3"/>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <CheckBox
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/cb_02"
                android:layout_margin="10dp"/>
            <ImageView
                android:layout_width="20dp"
                android:layout_height="20dp"
                android:background="@mipmap/shangdian"
                android:layout_marginTop="10dp"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/shangdian_name_text"
                android:text="商店名"
                android:layout_marginTop="10dp"/>
        </LinearLayout>
    </LinearLayout>
    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="#D3D3D3"/>
    <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/recyclerView_seed"></android.support.v7.widget.RecyclerView>



</LinearLayout>

 

 

 

seed-item

<?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="wrap_content">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <CheckBox
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="20dp"
            android:id="@+id/cb_03"/>
        <ImageView
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:background="@mipmap/ic_launcher"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="10dp"
            android:id="@+id/shangpin_image" />
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_gravity="center_vertical"
            android:layout_weight="1">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/shangpin_name_text"
                android:text="商品名称"
                android:layout_marginLeft="20dp"
                android:layout_marginTop="10dp"/>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
                <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:id="@+id/shangpin_price_text"
                    android:text="商品价格"
                    android:layout_marginLeft="20dp"
                    android:layout_marginTop="10dp"/>
                <ImageView
                    android:layout_width="20dp"
                    android:layout_height="20dp"
                    android:layout_marginLeft="20dp"
                    android:layout_marginTop="10dp"
                    android:background="@mipmap/jian"
                    android:id="@+id/jian"/>
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="1"
                    android:layout_margin="10dp"
                    android:id="@+id/num"/>
                <ImageView
                    android:id="@+id/jia"
                    android:layout_width="20dp"
                    android:layout_height="20dp"
                    android:layout_marginTop="10dp"
                    android:background="@mipmap/jia"/>
            </LinearLayout>
        </LinearLayout>
        <View
            android:layout_width="1dp"
            android:layout_height="80dp"
            android:background="#D3D3D3"
            android:layout_marginTop="10dp"/>
        <ImageView
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:background="@mipmap/shanchu"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"/>
    </LinearLayout>

</LinearLayout>

 

 

liushi

package com.bwie.dongyushan.liu;

import android.content.Context;
import android.util.AttributeSet;
import android.view.ViewGroup;

public class LiuShi extends ViewGroup {
    private int mLeftMargin = 20;
    private int mTopMargin = 20;
    public LiuShi(Context context) {
        this(context,null);
    }

    public LiuShi(Context context, AttributeSet attrs) {
        this(context, attrs,0);
    }

    public LiuShi(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        measureChildren(widthMeasureSpec,heightMeasureSpec);

        int leftMargin = mLeftMargin;
        int topMargin = mTopMargin;

        int ViewWidth = 0;
        int ViewHeight = 0;

        int sizeWidth = MeasureSpec.getSize(widthMeasureSpec);
        int sizeHeight = MeasureSpec.getSize(heightMeasureSpec);
        int modelWidth = MeasureSpec.getMode(widthMeasureSpec);
        int modelHeight = MeasureSpec.getMode(heightMeasureSpec);

        switch (modelHeight){
            case MeasureSpec.AT_MOST:
                int measuredHeight = 0;
                for (int i = 0; i < getChildCount(); i++) {
                    int measuredWidth = getChildAt(i).getMeasuredWidth();
                    measuredHeight = getChildAt(i).getMeasuredHeight();

                    if (leftMargin+measuredWidth+mLeftMargin > getWidth()){
                        leftMargin = mLeftMargin;
                        topMargin += measuredHeight+mTopMargin;
                    }
                    leftMargin += measuredWidth + mLeftMargin;
                }
                topMargin += measuredHeight+mTopMargin;
                break;
        }
        setMeasuredDimension(sizeWidth,topMargin);
    }

    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
        int leftMargin = mLeftMargin;
        int topMargin = mTopMargin;

        for (int i = 0; i < getChildCount(); i++) {
            int measuredWidth = getChildAt(i).getMeasuredWidth();
            int measuredHeight = getChildAt(i).getMeasuredHeight();
            if (leftMargin+measuredWidth+mLeftMargin > getWidth()){
                leftMargin = mLeftMargin;
                topMargin += measuredHeight+mTopMargin;
                getChildAt(i).layout(leftMargin,topMargin,leftMargin+measuredWidth,topMargin+measuredHeight);
            }else {
                getChildAt(i).layout(leftMargin,topMargin,leftMargin+measuredWidth,topMargin+measuredHeight);
            }
            leftMargin+=measuredWidth+mLeftMargin;
        }
    }

}

 

 

custom

package com.bwie.dongyushan.view;

import android.content.Context;
import android.util.AttributeSet;
import android.view.ViewGroup;

public class CustomView extends ViewGroup {
    private int mleftMargin=20;
    private int mtopMargin=20;

    public CustomView(Context context) {
        this(context,null);
    }

    public CustomView(Context context, AttributeSet attrs) {
        this(context, attrs,0);
    }

    public CustomView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected void onLayout(boolean b, int i, int i1, int i2, int i3) {
        int leftMargin = mleftMargin;
        int topMargin = mtopMargin;

        for (int j = 0; j < getChildCount(); j++) {
            int measuredWidth = getChildAt(j).getMeasuredWidth();
            int measuredHeight = getChildAt(j).getMeasuredHeight();
            if (leftMargin+measuredWidth+mleftMargin>getWidth()){
                leftMargin=mleftMargin;
                topMargin+=measuredHeight+mtopMargin;
                getChildAt(j).layout(leftMargin,topMargin,leftMargin+measuredWidth,topMargin+measuredHeight);
            }else {
                getChildAt(j).layout(leftMargin,topMargin,leftMargin+measuredWidth,topMargin+measuredHeight);
            }
            leftMargin+=measuredWidth+mleftMargin;
        }



    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        measureChildren(widthMeasureSpec,heightMeasureSpec);

        int leftMargin = mleftMargin;
        int topMargin = mtopMargin;

        int viewHeight = 0;
        int viewWidth = 0;

        //父控件传进来的宽度和高度以及对应的测量模式
        int sizeWidth = MeasureSpec.getSize(widthMeasureSpec);
        int modeWidth = MeasureSpec.getMode(widthMeasureSpec);
        int sizeHeight = MeasureSpec.getSize(heightMeasureSpec);
        int modeHeight = MeasureSpec.getMode(heightMeasureSpec);

        switch (modeHeight){
            case MeasureSpec.AT_MOST:
                int measuredHeight = 0;
                for (int j = 0; j < getChildCount(); j++) {
                    int measuredWidth = getChildAt(j).getMeasuredWidth();
                    measuredHeight = getChildAt(j).getMeasuredHeight();
                    if (leftMargin+measuredWidth+mleftMargin>getWidth()){
                        leftMargin=mleftMargin;
                        topMargin+=measuredHeight+mtopMargin;
                    }
                    leftMargin+=measuredWidth+mleftMargin;
                }
                topMargin+=measuredHeight+mtopMargin;
                break;
        }
        setMeasuredDimension(sizeWidth,topMargin);


    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值