From ca565aafc6d53f5395ab4e834937dab4aac13feb Mon Sep 17 00:00:00 2001 From: jinyuer <454386664@qq.com> Date: Wed, 2 Sep 2020 15:33:38 +0800 Subject: [PATCH] 1 --- .../java/adapter/BaseRecycleViewAdapter.java | 3 +- .../discovery/DiscoveryFragment.java | 23 +++++--- .../main/res/layout/fragment_discovery.xml | 9 ++- .../main/java/com/lzy/ninegrid/ImageInfo.java | 50 +++++++++++++++- .../java/com/lzy/ninegrid/NineGridView.java | 55 +++++++++++------- .../com/lzy/ninegrid/NineGridViewAdapter.java | 6 +- .../com/lzy/ninegrid/NineGridViewWrapper.java | 30 ++++++++-- .../src/main/res/drawable/icon_image.png | Bin 0 -> 2643 bytes 8 files changed, 136 insertions(+), 40 deletions(-) create mode 100644 ninegridview/src/main/res/drawable/icon_image.png diff --git a/app/src/main/java/adapter/BaseRecycleViewAdapter.java b/app/src/main/java/adapter/BaseRecycleViewAdapter.java index f085bbd..f7b9e6f 100644 --- a/app/src/main/java/adapter/BaseRecycleViewAdapter.java +++ b/app/src/main/java/adapter/BaseRecycleViewAdapter.java @@ -20,7 +20,7 @@ import entity.DiscoveryListEntity; public class BaseRecycleViewAdapter extends RecyclerView.Adapter { - private ArrayList list; + private ArrayList list=new ArrayList<>(); private LayoutInflater inflater; private Context context; private AdapterView.OnItemClickListener itemClickListener; @@ -41,7 +41,6 @@ public class BaseRecycleViewAdapter extends Recy public void setData(ArrayList list) { this.list.clear(); - this.list = new ArrayList<>(); this.list.addAll(list); notifyDataSetChanged(); } diff --git a/app/src/main/java/com/sl/house_property/discovery/DiscoveryFragment.java b/app/src/main/java/com/sl/house_property/discovery/DiscoveryFragment.java index 7f1fb1c..a7250db 100644 --- a/app/src/main/java/com/sl/house_property/discovery/DiscoveryFragment.java +++ b/app/src/main/java/com/sl/house_property/discovery/DiscoveryFragment.java @@ -73,7 +73,7 @@ public class DiscoveryFragment extends BaseFragment im private String mParam2; BaseActivity baseActivity; private ProgressDialog progressDialog; - private ArrayList discoveryListEntities; + private ArrayList discoveryListEntities = new ArrayList<>(); @Override protected int getLayoutId() { @@ -485,7 +485,7 @@ public class DiscoveryFragment extends BaseFragment im Log.e("pic", discoveryListEntity.getPic().get(0)); for (int i = 0; i < discoveryListEntity.getPic().size(); i++) { - if (discoveryListEntity.getPic().get(i).endsWith(".mp4")) { + if (discoveryListEntity.getPic().get(i).endsWith(".mp4") || discoveryListEntity.getPic().get(i).endsWith(".avi")) { ImageInfo imageInfo = new ImageInfo(); imageInfo.setType(2); imageInfo.setBigImageUrl(discoveryListEntity.getPic().get(i)); @@ -501,7 +501,7 @@ public class DiscoveryFragment extends BaseFragment im } - }else { + } else { ImageInfo imageInfo = new ImageInfo(); imageInfo.setType(1); imageInfo.setBigImageUrl(discoveryListEntity.getThumb()); @@ -520,7 +520,10 @@ public class DiscoveryFragment extends BaseFragment im private void getGankList(String myurl, Map map, String msg, final int requstecode) { progressDialog.setMessage(msg); progressDialog.setCancelable(false); -// progressDialog.show(); +// if (page>1){ +// progressDialog.show(); +// } + mGankLoader = new Loader(); Subscription subscription = mGankLoader.getMovie(myurl, map).subscribe(new Action1() { @@ -536,7 +539,7 @@ public class DiscoveryFragment extends BaseFragment im baseActivity.setToast(1, resultcode.msg); } if (resultcode.status == 0) { - intRecycleView(); + // intRecycleView(); Gson gs = new Gson(); LinkedTreeMap adta = (LinkedTreeMap) resultcode.data; String s = gs.toJson(adta); @@ -555,7 +558,9 @@ public class DiscoveryFragment extends BaseFragment im .placeholder(R.mipmap.icon_default_rectangle) .transform(new PicassoRoundTransform()) .into(mDataBinding.head); - discoveryListEntities = new Gson().fromJson(array.toString(), type); + ArrayList o = new Gson().fromJson(array.toString(), type); + discoveryListEntities.clear(); + discoveryListEntities.addAll(o); BaseRecycleViewAdapter baseRecycleViewAdapter = (BaseRecycleViewAdapter) mDataBinding.recyView.getAdapter(); baseRecycleViewAdapter.setData(discoveryListEntities); page++; @@ -565,10 +570,12 @@ public class DiscoveryFragment extends BaseFragment im BaseRecycleViewAdapter baseRecycleViewAdapter = (BaseRecycleViewAdapter) mDataBinding.recyView.getAdapter(); baseRecycleViewAdapter.setData(discoveryListEntities); - int count = jsonObject.getInt("count"); - if (discoveryListEntities.size() == count || o.isEmpty()) { + Log.e("sizi", discoveryListEntities.size() + ""); + // int count = jsonObject.getInt("count"); + if (o.isEmpty()) { mDataBinding.dw.finishLoadMoreWithNoMoreData(); } else { + page++; } diff --git a/app/src/main/res/layout/fragment_discovery.xml b/app/src/main/res/layout/fragment_discovery.xml index 6d9dbde..d1f02f2 100644 --- a/app/src/main/res/layout/fragment_discovery.xml +++ b/app/src/main/res/layout/fragment_discovery.xml @@ -54,8 +54,12 @@ android:layout_weight="1" android:background="@color/white" app:srlEnableLoadMore="true" - app:srlEnableLoadMoreWhenContentNotFull="true"> + app:srlDisableContentWhenLoading="true" + > + + diff --git a/ninegridview/src/main/java/com/lzy/ninegrid/ImageInfo.java b/ninegridview/src/main/java/com/lzy/ninegrid/ImageInfo.java index d6a416f..e9c54ac 100644 --- a/ninegridview/src/main/java/com/lzy/ninegrid/ImageInfo.java +++ b/ninegridview/src/main/java/com/lzy/ninegrid/ImageInfo.java @@ -1,5 +1,8 @@ package com.lzy.ninegrid; +import android.os.Parcel; +import android.os.Parcelable; + import java.io.Serializable; /** @@ -11,7 +14,7 @@ import java.io.Serializable; * 修订历史: * ================================================ */ -public class ImageInfo implements Serializable { +public class ImageInfo implements Serializable, Parcelable { public String thumbnailUrl; public String bigImageUrl; public int imageViewHeight; @@ -19,6 +22,7 @@ public class ImageInfo implements Serializable { public int imageViewX; public int imageViewY; public int type; + public String videoUrl; public int getType() { return type; @@ -86,6 +90,50 @@ public class ImageInfo implements Serializable { ", imageViewX=" + imageViewX + ", imageViewY=" + imageViewY + ", type=" + type + + ", videoUrl='" + videoUrl + '\'' + '}'; } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(this.thumbnailUrl); + dest.writeString(this.bigImageUrl); + dest.writeInt(this.imageViewHeight); + dest.writeInt(this.imageViewWidth); + dest.writeInt(this.imageViewX); + dest.writeInt(this.imageViewY); + dest.writeInt(this.type); + dest.writeString(this.videoUrl); + } + + public ImageInfo() { + } + + protected ImageInfo(Parcel in) { + this.thumbnailUrl = in.readString(); + this.bigImageUrl = in.readString(); + this.imageViewHeight = in.readInt(); + this.imageViewWidth = in.readInt(); + this.imageViewX = in.readInt(); + this.imageViewY = in.readInt(); + this.type = in.readInt(); + this.videoUrl = in.readString(); + } + + public static final Creator CREATOR = new Creator() { + @Override + public ImageInfo createFromParcel(Parcel source) { + return new ImageInfo(source); + } + + @Override + public ImageInfo[] newArray(int size) { + return new ImageInfo[size]; + } + }; } diff --git a/ninegridview/src/main/java/com/lzy/ninegrid/NineGridView.java b/ninegridview/src/main/java/com/lzy/ninegrid/NineGridView.java index 674a373..0557dfc 100644 --- a/ninegridview/src/main/java/com/lzy/ninegrid/NineGridView.java +++ b/ninegridview/src/main/java/com/lzy/ninegrid/NineGridView.java @@ -11,6 +11,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; + import java.util.ArrayList; import java.util.List; @@ -32,7 +33,7 @@ public class NineGridView extends ViewGroup { private int gridWidth; // 宫格宽度 private int gridHeight; // 宫格高度 - private List imageViews; + private List imageViews; private List mImageInfo; private NineGridViewAdapter mAdapter; @@ -94,8 +95,8 @@ public class NineGridView extends ViewGroup { if (mImageInfo == null) return; int childrenCount = mImageInfo.size(); for (int i = 0; i < childrenCount; i++) { - ImageView childrenView = (ImageView) getChildAt(i); - + NineGridViewWrapper childrenView = (NineGridViewWrapper) getChildAt(i); + int rowNum = i / columnCount; int columnNum = i % columnCount; int left = (gridWidth + gridSpacing) * columnNum + getPaddingLeft(); @@ -103,14 +104,17 @@ public class NineGridView extends ViewGroup { int right = left + gridWidth; int bottom = top + gridHeight; childrenView.layout(left, top, right, bottom); - + if (mImageLoader != null) { + childrenView.setType(mImageInfo.get(i).type); mImageLoader.onDisplayImage(getContext(), childrenView, mImageInfo.get(i).thumbnailUrl); } } } - /** 设置适配器 */ + /** + * 设置适配器 + */ public void setAdapter(@NonNull NineGridViewAdapter adapter) { mAdapter = adapter; List imageInfo = adapter.getImageInfo(); @@ -160,24 +164,27 @@ public class NineGridView extends ViewGroup { } } //修改最后一个条目,决定是否显示更多 - if (adapter.getImageInfo().size() > maxImageSize) { - View child = getChildAt(maxImageSize - 1); - if (child instanceof NineGridViewWrapper) { - NineGridViewWrapper imageView = (NineGridViewWrapper) child; - imageView.setMoreNum(adapter.getImageInfo().size() - maxImageSize); - } - } +// if (adapter.getImageInfo().size() > maxImageSize) { +// View child = getChildAt(maxImageSize - 1); +// if (child instanceof NineGridViewWrapper) { +// NineGridViewWrapper imageView = (NineGridViewWrapper) child; +// imageView.setMoreNum(adapter.getImageInfo().size() - maxImageSize); +// } +// } + mImageInfo = imageInfo; requestLayout(); } - /** 获得 ImageView 保证了 ImageView 的重用 */ - private ImageView getImageView(final int position) { - ImageView imageView; + /** + * 获得 ImageView 保证了 ImageView 的重用 + */ + private NineGridViewWrapper getImageView(final int position) { + NineGridViewWrapper imageView; if (position < imageViews.size()) { imageView = imageViews.get(position); } else { - imageView = mAdapter.generateImageView(getContext()); + imageView = mAdapter.generateImageView(getContext(), mAdapter.getImageInfo().get(position).getType()); imageView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { @@ -189,22 +196,30 @@ public class NineGridView extends ViewGroup { return imageView; } - /** 设置宫格间距 */ + /** + * 设置宫格间距 + */ public void setGridSpacing(int spacing) { gridSpacing = spacing; } - /** 设置只有一张图片时的宽 */ + /** + * 设置只有一张图片时的宽 + */ public void setSingleImageSize(int maxImageSize) { singleImageSize = maxImageSize; } - /** 设置只有一张图片时的宽高比 */ + /** + * 设置只有一张图片时的宽高比 + */ public void setSingleImageRatio(float ratio) { singleImageRatio = ratio; } - /** 设置最大图片数 */ + /** + * 设置最大图片数 + */ public void setMaxSize(int maxSize) { maxImageSize = maxSize; } diff --git a/ninegridview/src/main/java/com/lzy/ninegrid/NineGridViewAdapter.java b/ninegridview/src/main/java/com/lzy/ninegrid/NineGridViewAdapter.java index 378aad9..3002ca0 100644 --- a/ninegridview/src/main/java/com/lzy/ninegrid/NineGridViewAdapter.java +++ b/ninegridview/src/main/java/com/lzy/ninegrid/NineGridViewAdapter.java @@ -32,11 +32,13 @@ public abstract class NineGridViewAdapter implements Serializable { * 如果需要自定义图片展示效果,重写此方法即可 * * @param context 上下文 + * @param type * @return 生成的 ImageView */ - protected ImageView generateImageView(Context context) { + protected NineGridViewWrapper generateImageView(Context context, int type) { NineGridViewWrapper imageView = new NineGridViewWrapper(context); - imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); + imageView.setType(type); + imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); imageView.setImageResource(R.drawable.ic_default_color); return imageView; } diff --git a/ninegridview/src/main/java/com/lzy/ninegrid/NineGridViewWrapper.java b/ninegridview/src/main/java/com/lzy/ninegrid/NineGridViewWrapper.java index c262aba..bad1aa0 100644 --- a/ninegridview/src/main/java/com/lzy/ninegrid/NineGridViewWrapper.java +++ b/ninegridview/src/main/java/com/lzy/ninegrid/NineGridViewWrapper.java @@ -1,6 +1,8 @@ package com.lzy.ninegrid; import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; @@ -13,6 +15,7 @@ import android.util.TypedValue; import android.view.MotionEvent; import android.widget.ImageView; + public class NineGridViewWrapper extends ImageView { private int moreNum = 0; //显示更多的数量 @@ -21,7 +24,8 @@ public class NineGridViewWrapper extends ImageView { private int textColor = 0xFFFFFFFF; //显示文字的颜色 private TextPaint textPaint; //文字的画笔 - private String msg = ""; //要绘制的文字 + private String msg = "哈哈哈啊"; //要绘制的文字 + private int mType; public NineGridViewWrapper(Context context) { this(context, null); @@ -44,14 +48,28 @@ public class NineGridViewWrapper extends ImageView { textPaint.setColor(textColor); //设置文字颜色 } + public void setType(int type) { + mType = type; + invalidate(); + } + @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); - if (moreNum > 0) { - canvas.drawColor(maskColor); - float baseY = getHeight() / 2 - (textPaint.ascent() + textPaint.descent()) / 2; - canvas.drawText(msg, getWidth() / 2, baseY, textPaint); - } + if (mType == 2) { + // canvas.drawColor(maskColor); + // float baseY = getHeight() / 2 - (textPaint.ascent() + textPaint.descent()) / 2; + Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon_image); + canvas.translate(getWidth() / 2, getHeight() / 2); + canvas.drawBitmap(bitmap, -50, -50, null); + } +// if (mType == 2) { +// Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.phone); +// // canvas.translate(getWidth() / 2, getHeight() / 2); +// canvas.drawBitmap(bitmap, 0, 0, null); +// } + + // } } @Override diff --git a/ninegridview/src/main/res/drawable/icon_image.png b/ninegridview/src/main/res/drawable/icon_image.png new file mode 100644 index 0000000000000000000000000000000000000000..f6035d9e60490d8b31a3afba1c839b9f44c11ceb GIT binary patch literal 2643 zcmcImeNYp38r}ech}a08f{wUu7>`pooA0j@kq|Lhq5@GtM7!DDkVuk^$wC5-N>1S5 zI4#ssDj@iEif6|IEfqv9r___`wcNxnC@mI>gEF217O=v38@}4PX+8hB%xw0zyU*`= zpZ9s+eUpOqYghZvm_Gvm0RI@3GM+xO+{bip`a7icLK1!QwWyM80N@wsJ{Ul0c@O|h zyJpZNQith(Et!0;jo}s8bN_tBGq7)L(dvMgFpi=hc*e-9JM8i z&>K`)Rw5y5tp>|V!=yMAu>uTt$Y=r+L7||-WHj4k4mmW&E2G!$+Xw`XL8vr26zL8K zCaTwiQKXdsg=`UwaRoe3EM;>=94Sw*9OQAhVuT|`xO|wym2pHez7(AJKy)-Ku9L+p zqbFj~S8_;CQ5G43*zI<lSWzbP3^!_5T zO_OOMka)sIrdu&$RR&?ESd+nUY-+D1-D(`m6vq(4NSJ7tjTXk83T4rg6lv3wzmmt) zzRNPN|Ykx5M47V%n`yov4$&< zafC9ia2ZD;<8a2IYPt(>ltSMQOyUMz=G#EkYFUigMxkbmh*8QRS`^!0z-4^Cl!r;A zLYS+iYtI!3xUfVb<-j75j>{FJLY+v&8`DMaSCUw|+dTLF@utN|jOLi~M}~66gh0m? z!yHtK!Xkk{3rlb*0c&*voR9Nxu~aLWWLsx7(C-au{5h*z6;3l^7$L-kdx7-NG@Mj8d!i|IgPX zd-<%H8OICwOT3Td#J2n+^c=p}F#mdhn5~QS^_yEAZx09vRBfr|=<`F(M(BJT-`8)Z zS0K_f*Hy*ecOdduWBa?VimuLAuPxxy`cH<<;L|;sU%k50(R~M$to8T`NOhie1~I*t zAD!9G_%|aX`zh$NfN?Lyiw&e^S3%Fcs(?>72YN%>*9C_$_AoLZ{&PoBJ+Q^QB4J)Q z@Rt>Xx!Hk@3Hgc$#%IDcH-K{h`JH|5Q2XyuZFS=0J=`O1|rxS%3Ag`}p{D1P2G#=LPkDx>wH(QY|)4+v?oQ zNnv#6^UPtMH~Rbgea>i}+^wjnc<=1lvlj;k2d&w@p9ogojNTl}KB+42R+Zj$`ZxXY zbFD9Ua81g$4;~CV9FAf658rgCc1}MY9~^g@KEf6G$ z6SECa-+B35an7-0$Lq3r69apDd&Q?totm31y1dI!mfw6? zJ3r`f?4!cNhYusposH7=3qmhV?8(rG4>Yb*HFb5v13f)Gskw^pRx6A7Ax3W^`qc~TD-E?rO+dZ5__)Ne7TX|N4Js*EW7%u(|Kqz7y3&7jw784O;G%q{?cpj1j zC8d4HIDD_L(eI|?J6+FFWgFAQUOe#S;yb-D?__&utJ%t$qg^NS&Q&i|$&)?IcQ^Ok z0~fJgZi|d|iGHZB?9;HGJQ(tOzL0%kU&n9vu~uZojFONGJ$OC(e$w2y$_VA|%GSoe z-$K{7CNmGpih0bqCW`y<(hu!L;#}Ax*7G%E@5jrG=c!vG?!SF8tJW&dDc=A6e*j