Skip to content

Commit

Permalink
优化应用详情界面
Browse files Browse the repository at this point in the history
  • Loading branch information
Z-P-J committed Jan 25, 2020
1 parent dc5eaae commit b00debc
Show file tree
Hide file tree
Showing 18 changed files with 442 additions and 23,914 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public class BlurTransformation extends BitmapTransformation {
private static int DEFAULT_DOWN_SAMPLING = 1;

private int radius;
private int sampling;
private int sampling = 5;

public BlurTransformation() {
this(null, MAX_RADIUS, DEFAULT_DOWN_SAMPLING);
Expand All @@ -33,6 +33,11 @@ public BlurTransformation(int radius) {
this(null, radius, DEFAULT_DOWN_SAMPLING);
}

public BlurTransformation(Context context, int radius) {
this.context = context;
this.radius = radius;
}

public BlurTransformation(Context context, int radius, int sampling) {
this.context = context;
this.radius = radius;
Expand Down
68 changes: 46 additions & 22 deletions app/src/main/java/com/zpj/shouji/market/ui/adapter/ImgAdapter.java
Original file line number Diff line number Diff line change
@@ -1,19 +1,25 @@
package com.zpj.shouji.market.ui.adapter;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.request.target.SimpleTarget;
import com.bumptech.glide.request.transition.Transition;
import com.lxj.xpopup.XPopup;
import com.lxj.xpopup.core.ImageViewerPopupView;
import com.lxj.xpopup.interfaces.OnSrcViewUpdateListener;
import com.zpj.shouji.market.R;
import com.zpj.shouji.market.image.ImageLoader;
import com.zpj.utils.ScreenUtil;

import java.util.ArrayList;
import java.util.List;
Expand All @@ -23,6 +29,9 @@ public class ImgAdapter extends RecyclerView.Adapter<ImgAdapter.ViewHolder> {
private Context context;
private RecyclerView recyclerView;
private List<String> imageUrlList;
private final float screenWidth;
private final float screenHeight;
// private int defaultHeight;

static class ViewHolder extends RecyclerView.ViewHolder{

Expand All @@ -37,6 +46,8 @@ public ViewHolder(View itemView) {
public ImgAdapter(RecyclerView recyclerView, List<String> imageUrlList){
this.recyclerView = recyclerView;
this.imageUrlList = imageUrlList;
this.screenHeight = ScreenUtil.getScreenHeight(recyclerView.getContext());
this.screenWidth = ScreenUtil.getScreenWidth(recyclerView.getContext());
}


Expand All @@ -53,30 +64,43 @@ public ImgAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int v
public void onBindViewHolder(@NonNull final ImgAdapter.ViewHolder holder, int position) {
Glide.with(context)
.load(imageUrlList.get(position))
.into(holder.img_view);
.into(new SimpleTarget<Drawable>() {
@Override
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
int width = resource.getIntrinsicWidth();
int height = resource.getIntrinsicHeight();

FrameLayout.LayoutParams params; // = (FrameLayout.LayoutParams) holder.img_view.getLayoutParams();
if (width > height) {
// params.height = screenHeight / 3;
// params.width = screenWidth / 3;
params = new FrameLayout.LayoutParams((int) ((screenHeight / screenWidth) * screenHeight / 4), (int) (screenHeight / 4));
} else {
params = new FrameLayout.LayoutParams((int) (screenWidth / 4), (int) (screenHeight / 4));
}
holder.img_view.setLayoutParams(params);
holder.img_view.setImageDrawable(resource);
}
});
holder.img_view.setTag(position);
holder.img_view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// final ImageView img = (ImageView) v;
List<Object> objects = new ArrayList<>(imageUrlList);
new XPopup.Builder(context)
.asImageViewer(holder.img_view, (int)v.getTag(), objects, new OnSrcViewUpdateListener() {
@Override
public void onSrcViewUpdate(ImageViewerPopupView popupView, int pos) {
int layoutPos = recyclerView.indexOfChild(holder.itemView);
View view = recyclerView.getChildAt(layoutPos + pos - position);
ImageView imageView;
if (view != null) {
imageView = view.findViewById(R.id.img_view);
} else {
imageView = holder.img_view;
}
popupView.updateSrcView(imageView);
holder.img_view.setOnClickListener(v -> {
List<Object> objects = new ArrayList<>(imageUrlList);
new XPopup.Builder(context)
.asImageViewer(holder.img_view, (int)v.getTag(), objects, new OnSrcViewUpdateListener() {
@Override
public void onSrcViewUpdate(ImageViewerPopupView popupView, int pos) {
int layoutPos = recyclerView.indexOfChild(holder.itemView);
View view = recyclerView.getChildAt(layoutPos + pos - position);
ImageView imageView;
if (view != null) {
imageView = view.findViewById(R.id.img_view);
} else {
imageView = holder.img_view;
}
}, new ImageLoader())
.show();
}
popupView.updateSrcView(imageView);
}
}, new ImageLoader())
.show();
});
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,17 @@
import com.zpj.shouji.market.R;
import com.zpj.shouji.market.ui.fragment.MainFragment;

import java.util.concurrent.atomic.AtomicBoolean;

import me.yokeyword.fragmentation.SwipeBackLayout;
import me.yokeyword.fragmentation_swipeback.SwipeBackFragment;

public abstract class BaseFragment extends SwipeBackFragment {

protected Context context;
protected CommonTitleBar titleBar;
private final AtomicBoolean isEnterAnimationEnd = new AtomicBoolean(false);
private Runnable onEnterAnimationEndRunnable;

@SuppressLint("ResourceType")
@Nullable
Expand Down Expand Up @@ -133,6 +137,27 @@ public void onSupportInvisible() {
lightStatusBar();
}

@Override
public void onEnterAnimationEnd(Bundle savedInstanceState) {
super.onEnterAnimationEnd(savedInstanceState);
isEnterAnimationEnd.set(true);
if (onEnterAnimationEndRunnable != null) {
post(onEnterAnimationEndRunnable);
}
}

protected void postOnEnterAnimationEnd(Runnable runnable) {
if (isEnterAnimationEnd.get()) {
if (runnable != null) {
post(runnable);
}
this.onEnterAnimationEndRunnable = null;
} else {
this.onEnterAnimationEndRunnable = runnable;
}

}

protected void darkStatusBar() {
if (_mActivity == null) {
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ public IPagerTitleView getTitleView(Context context, int index) {
ColorTransitionPagerTitleView titleView = new ColorTransitionPagerTitleView(context);
titleView.setNormalColor(Color.LTGRAY);
titleView.setSelectedColor(getResources().getColor(R.color.colorPrimary));
titleView.setTextSize(12);
titleView.setTextSize(14);
titleView.setText(TAB_TITLES[index]);
titleView.setOnClickListener(view1 -> viewPager.setCurrentItem(index));
return titleView;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
import android.support.annotation.Nullable;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.zpj.shouji.market.R;
Expand All @@ -18,12 +20,8 @@
public class AppInfoFragment extends BaseFragment {

private RecyclerView recyclerView;
private ImgAdapter imgAdapter;

private TextView tvIntroduce;
private TextView tvUpdate;
private TextView tvDetail;
private TextView tvPermission;
private LinearLayout content;

@Override
protected int getLayoutId() {
Expand All @@ -44,26 +42,36 @@ public void onDestroy() {

@Override
protected void initView(View view, @Nullable Bundle savedInstanceState) {
content = view.findViewById(R.id.content);
recyclerView = view.findViewById(R.id.recycler_view);
recyclerView.setItemViewCacheSize(100);
// recyclerView.setItemViewCacheSize(100);
LinearLayoutManager layoutManager = new LinearLayoutManager(getContext());
layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
recyclerView.setLayoutManager(layoutManager);

tvIntroduce = view.findViewById(R.id.tv_introduce);
tvUpdate = view.findViewById(R.id.tv_update);
tvDetail = view.findViewById(R.id.tv_detail);
tvPermission = view.findViewById(R.id.tv_permission);
}

@Subscribe
public void onGetAppDetailInfo(AppDetailInfo info) {
imgAdapter = new ImgAdapter(recyclerView, info.getImgUrlList());
recyclerView.setAdapter(imgAdapter);
tvIntroduce.setText(info.getAppIntroduceContent());
tvUpdate.setText(info.getUpdateContent());
tvDetail.setText(info.getAppInfo());
tvPermission.setText(info.getPermissionContent());
postOnEnterAnimationEnd(() -> {
ImgAdapter imgAdapter = new ImgAdapter(recyclerView, info.getImgUrlList());
recyclerView.setAdapter(imgAdapter);
addItem("应用简介", info.getAppIntroduceContent());
addItem("新版特性", info.getUpdateContent());
addItem("详细信息", info.getAppInfo());
addItem("权限信息", info.getPermissionContent());
});
}

private void addItem(String title, String text) {
if (TextUtils.isEmpty(text)) {
return;
}
View view = getLayoutInflater().inflate(R.layout.item_app_info_text, null, false);
content.addView(view);
TextView tvTitle = view.findViewById(R.id.tv_title);
TextView tvContent = view.findViewById(R.id.tv_content);
tvTitle.setText(title);
tvContent.setText(text);
}

}
Loading

0 comments on commit b00debc

Please sign in to comment.