From 8348568ea7d2ffd3aee6845ddee888e462bc68fa Mon Sep 17 00:00:00 2001 From: kehaoyuan Date: Thu, 23 Nov 2017 19:58:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D3.0.1=E6=84=8F=E8=A7=81?= =?UTF-8?q?=E5=8F=8D=E9=A6=88Bug=201.ImageUtils=E4=BC=A0=E5=85=A5=E7=9A=84?= =?UTF-8?q?url=E5=85=81=E8=AE=B8=E4=B8=BA=E7=A9=BA=202.=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E4=B8=93=E9=A2=98ActionBarTitle=E6=9C=89=E5=8F=AF=E8=83=BD?= =?UTF-8?q?=E4=B8=BA=E7=A9=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/gh/common/util/ImageUtils.kt | 12 ++--- .../com/gh/gamecenter/SubjectActivity.java | 49 ++++++++++++------- .../com/gh/gamecenter/ViewImageActivity.java | 12 +---- .../subject/OnSubjectTitleListener.java | 9 ++++ .../subject/SubjectTileFragment.java | 39 ++++++++------- app/src/main/res/layout/fragment_subject.xml | 4 +- 6 files changed, 71 insertions(+), 54 deletions(-) create mode 100644 app/src/main/java/com/gh/gamecenter/subject/OnSubjectTitleListener.java diff --git a/app/src/main/java/com/gh/common/util/ImageUtils.kt b/app/src/main/java/com/gh/common/util/ImageUtils.kt index 663d6ea1d6..2688406aa9 100644 --- a/app/src/main/java/com/gh/common/util/ImageUtils.kt +++ b/app/src/main/java/com/gh/common/util/ImageUtils.kt @@ -23,7 +23,7 @@ import com.gh.gamecenter.R class ImageUtils private constructor() { // 自适应图片宽高 - fun display(simpleDraweeView: SimpleDraweeView, url: String, width: Int) { + fun display(simpleDraweeView: SimpleDraweeView, url: String?, width: Int) { val listener = object : BaseControllerListener() { override fun onFinalImageSet(id: String?, imageInfo: ImageInfo?, animatable: Animatable?) { if (imageInfo == null) { @@ -43,7 +43,7 @@ class ImageUtils private constructor() { // 设置缩放类型,设置按压状态下的叠加图 fun display(resources: Resources, simpleDraweeView: SimpleDraweeView, - scaleType: ScalingUtils.ScaleType, url: String) { + scaleType: ScalingUtils.ScaleType, url: String?) { val context = simpleDraweeView.context simpleDraweeView.hierarchy = GenericDraweeHierarchyBuilder(resources) .setFadeDuration(500) @@ -57,7 +57,7 @@ class ImageUtils private constructor() { } // 设置占位符 - fun display(resources: Resources, simpleDraweeView: SimpleDraweeView, url: String, placeholderImage: Int) { + fun display(resources: Resources, simpleDraweeView: SimpleDraweeView, url: String?, placeholderImage: Int) { val context = simpleDraweeView.context simpleDraweeView.hierarchy = GenericDraweeHierarchyBuilder(resources) .setFadeDuration(500) @@ -70,7 +70,7 @@ class ImageUtils private constructor() { } // 图片下载监听和设置低高分辨率图片 - fun display(simpleDraweeView: SimpleDraweeView, url: String, lowUrl: String, + fun display(simpleDraweeView: SimpleDraweeView, url: String?, lowUrl: String?, listener: ControllerListener) { simpleDraweeView.controller = Fresco.newDraweeControllerBuilder() .setImageRequest(ImageRequest.fromUri(url)) @@ -80,7 +80,7 @@ class ImageUtils private constructor() { } // 获取bitmap - fun display(context: Context, url: String, dataSubscriber: BaseBitmapDataSubscriber) { + fun display(context: Context, url: String?, dataSubscriber: BaseBitmapDataSubscriber) { val imageRequest = ImageRequestBuilder .newBuilderWithSource(Uri.parse(url)) .setProgressiveRenderingEnabled(true) @@ -108,7 +108,7 @@ class ImageUtils private constructor() { simpleDraweeView.setImageURI(url) } - fun display(draweeView: SimpleDraweeView, @DrawableRes res: Int) { + fun display(draweeView: SimpleDraweeView, @DrawableRes res: Int?) { draweeView.setImageURI("res:///" + res) } } diff --git a/app/src/main/java/com/gh/gamecenter/SubjectActivity.java b/app/src/main/java/com/gh/gamecenter/SubjectActivity.java index 22c884ab51..513c3d4a8a 100644 --- a/app/src/main/java/com/gh/gamecenter/SubjectActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SubjectActivity.java @@ -18,12 +18,15 @@ import com.gh.base.BaseActivity; import com.gh.common.util.EntranceUtils; import com.gh.gamecenter.adapter.VPFragmentAdapter; import com.gh.gamecenter.entity.SubjectHeadEntity; +import com.gh.gamecenter.eventbus.EBReuse; import com.gh.gamecenter.retrofit.JSONObjectResponse; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; +import com.gh.gamecenter.subject.OnSubjectTitleListener; import com.gh.gamecenter.subject.SubjectFragment; import com.gh.gamecenter.subject.SubjectTileFragment; +import org.greenrobot.eventbus.EventBus; import org.json.JSONException; import org.json.JSONObject; @@ -31,16 +34,19 @@ import java.util.ArrayList; import java.util.List; import butterknife.BindView; +import butterknife.OnClick; import retrofit2.HttpException; import rx.android.schedulers.AndroidSchedulers; import rx.schedulers.Schedulers; +import static com.gh.gamecenter.R.id.actionbar_tv_title; + /** * Created by khy on 2017/4/29. */ -public class SubjectActivity extends BaseActivity { +public class SubjectActivity extends BaseActivity implements OnSubjectTitleListener { @BindView(R.id.subject_viewpager) ViewPager mViewPager; @@ -52,6 +58,8 @@ public class SubjectActivity extends BaseActivity { FrameLayout mSubjectTiled; @BindView(R.id.reuse_no_connection) View mNoConn; + @BindView(R.id.actionbar_tv_title) + TextView mActionBarTitle; private String mId; private String mName; @@ -94,25 +102,29 @@ public class SubjectActivity extends BaseActivity { } else { loadSubjectType(); } - - mNoConn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - mNoConn.setVisibility(View.GONE); - mLoading.setVisibility(View.VISIBLE); - loadSubjectType(); - } - }); } @Override public boolean dispatchTouchEvent(MotionEvent ev) { - if (mTileFragment != null) { - mTileFragment.onTouchEvent(ev); - } + if (mTileFragment != null) mTileFragment.onTouchEvent(ev); return super.dispatchTouchEvent(ev); } + @OnClick({actionbar_tv_title, R.id.reuse_no_connection}) + public void onClick(View view) { + switch (view.getId()) { + case actionbar_tv_title: + if (mTileFragment != null) + EventBus.getDefault().post(new EBReuse(SubjectFragment.SCROLL_TOP)); + break; + case R.id.reuse_no_connection: + mNoConn.setVisibility(View.GONE); + mLoading.setVisibility(View.VISIBLE); + loadSubjectType(); + break; + } + } + private void getSubjectName(String id) { RetrofitManager.getInstance(this).getApi() .getSubjectName(id) @@ -124,8 +136,7 @@ public class SubjectActivity extends BaseActivity { try { String name = response.getString("name"); - TextView actionbar_tv_title = (TextView) findViewById(R.id.actionbar_tv_title); - actionbar_tv_title.setText(name); + mActionBarTitle.setText(name); mBundle.putString(EntranceUtils.KEY_NAME, name); loadSubjectType(); } catch (JSONException e) { @@ -136,8 +147,7 @@ public class SubjectActivity extends BaseActivity { @Override public void onFailure(HttpException e) { super.onFailure(e); - TextView actionbar_tv_title = (TextView) findViewById(R.id.actionbar_tv_title); - actionbar_tv_title.setText("专题"); + mActionBarTitle.setText("专题"); mBundle.putString(EntranceUtils.KEY_NAME, "专题"); loadSubjectType(); } @@ -198,4 +208,9 @@ public class SubjectActivity extends BaseActivity { // mTabLayout.setTabsFromPagerAdapter(adapter); } } + + @Override + public void onChange(String title) { + mActionBarTitle.setText(title); + } } diff --git a/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java b/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java index d7a542e127..83ef4f9f25 100644 --- a/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java @@ -110,22 +110,14 @@ public class ViewImageActivity extends Activity implements OnPageChangeListener Object object = mViewimageVp.findViewWithTag(position); if (object != null) { RelativeLayout view = (RelativeLayout) object; - final ZoomSimpleDraweeView imageView = (ZoomSimpleDraweeView) view.findViewById(R.id.viewimage_iv_show); - final ProgressBarCircularIndeterminate progressBar = (ProgressBarCircularIndeterminate) view.findViewById(R.id.viewimage_pb_loading); + final ZoomSimpleDraweeView imageView = view.findViewById(R.id.viewimage_iv_show); + final ProgressBarCircularIndeterminate progressBar = view.findViewById(R.id.viewimage_pb_loading); progressBar.setVisibility(View.VISIBLE); ImageUtils.Companion.getInstance().display(imageView, newUrls.get(position), urls.get(position), new BaseControllerListener() { @Override public void onFinalImageSet(String id, ImageInfo imageInfo, Animatable animatable) { progressBar.setVisibility(View.GONE); -// if (imageInfo == null){ -// return; -// } -// ImageInfo imageInfo1 = (ImageInfo) imageInfo; -// int height = imageInfo1.getHeight(); -// int width = imageInfo1.getWidth(); -// float index = (float) height / (float) width; -// imageView.setImagePro(index); } }); } diff --git a/app/src/main/java/com/gh/gamecenter/subject/OnSubjectTitleListener.java b/app/src/main/java/com/gh/gamecenter/subject/OnSubjectTitleListener.java new file mode 100644 index 0000000000..7ee97e0674 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/subject/OnSubjectTitleListener.java @@ -0,0 +1,9 @@ +package com.gh.gamecenter.subject; + +/** + * Created by khy on 23/11/17. + */ + +public interface OnSubjectTitleListener { + void onChange(String title); +} diff --git a/app/src/main/java/com/gh/gamecenter/subject/SubjectTileFragment.java b/app/src/main/java/com/gh/gamecenter/subject/SubjectTileFragment.java index 19a38d0874..c4634b254a 100644 --- a/app/src/main/java/com/gh/gamecenter/subject/SubjectTileFragment.java +++ b/app/src/main/java/com/gh/gamecenter/subject/SubjectTileFragment.java @@ -1,5 +1,6 @@ package com.gh.gamecenter.subject; +import android.content.Context; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; @@ -25,7 +26,6 @@ import com.gh.gamecenter.R; import com.gh.gamecenter.adapter.SubjectTypeAdapter; import com.gh.gamecenter.eventbus.EBReuse; -import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; @@ -42,7 +42,7 @@ import butterknife.OnClick; public class SubjectTileFragment extends BaseFragment implements SubjectTypeAdapter.OnSelectTypeListener { @BindView(R.id.subject_type_list) - RecyclerView subject_type_list; + RecyclerView mSubjectRv; @BindView(R.id.subject_appbar) AppBarLayout mAppbar; @BindView(R.id.subject_coordinator) @@ -52,7 +52,7 @@ public class SubjectTileFragment extends BaseFragment implements SubjectTypeAdap @BindView(R.id.subject_tabbar_new_tv) TextView mTabbarNewTv; - TextView mActionBarTitle; + private OnSubjectTitleListener mSubjectTitleListener; public final static String OPEN_APPBAR = "openAppBar"; public final static String KEY_LISTORDER = "listOrder"; @@ -90,7 +90,7 @@ public class SubjectTileFragment extends BaseFragment implements SubjectTypeAdap fragmentByTag = new SubjectFragment(); Bundle mBundle = getActivity().getIntent().getExtras(); Bundle clone = (Bundle) mBundle.clone(); - clone.putString(EntranceUtils.KEY_TAGTYPE,mTagType); + clone.putString(EntranceUtils.KEY_TAGTYPE, mTagType); clone.putString(KEY_LISTORDER, mListOrder); clone.putString(EntranceUtils.KEY_TYPE, mType); fragmentByTag.setArguments(clone); @@ -106,13 +106,18 @@ public class SubjectTileFragment extends BaseFragment implements SubjectTypeAdap return R.layout.fragment_subject_tiled; } + @Override + public void onAttach(Context context) { + super.onAttach(context); + if (context instanceof OnSubjectTitleListener) + mSubjectTitleListener = (OnSubjectTitleListener) context; + } + @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bundle arguments = getArguments(); - mActionBarTitle = (TextView) getActivity().findViewById(R.id.actionbar_tv_title); - mName = arguments.getString(EntranceUtils.KEY_NAME); mEntrance = arguments.getString(EntranceUtils.KEY_ENTRANCE); mTagType = arguments.getString(EntranceUtils.KEY_TAGTYPE); @@ -129,14 +134,14 @@ public class SubjectTileFragment extends BaseFragment implements SubjectTypeAdap return false; } }; - subject_type_list.setLayoutManager(layout); + mSubjectRv.setLayoutManager(layout); if (contentTitle != null && contentTitle.size() > 1) { - ViewGroup.LayoutParams params = subject_type_list.getLayoutParams(); + ViewGroup.LayoutParams params = mSubjectRv.getLayoutParams(); params.height = (int) Math.ceil(contentTitle.size() / 4f) * DisplayUtils.dip2px(getContext(), 35); - subject_type_list.setLayoutParams(params); - ((DefaultItemAnimator) subject_type_list.getItemAnimator()).setSupportsChangeAnimations(false); + mSubjectRv.setLayoutParams(params); + ((DefaultItemAnimator) mSubjectRv.getItemAnimator()).setSupportsChangeAnimations(false); SubjectTypeAdapter adapter = new SubjectTypeAdapter(getContext(), SubjectTileFragment.this, contentTitle); - subject_type_list.setAdapter(adapter); + mSubjectRv.setAdapter(adapter); } loadData(); @@ -146,20 +151,16 @@ public class SubjectTileFragment extends BaseFragment implements SubjectTypeAdap if (!TextUtils.isEmpty(mName)) { int totalScrollRange = appBarLayout.getTotalScrollRange(); if (Math.abs(verticalOffset) < totalScrollRange / 2) { - mActionBarTitle.setText(mName); + if (mSubjectTitleListener != null) + mSubjectTitleListener.onChange(mName); } else if (Math.abs(verticalOffset) == totalScrollRange && totalScrollRange != 0) { - mActionBarTitle.setText(StringUtils.buildString(mName, "-", mType, "↑")); + if (mSubjectTitleListener != null) + mSubjectTitleListener.onChange(StringUtils.buildString(mName, "-", mType, "↑")); } } } }); - mActionBarTitle.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - EventBus.getDefault().post(new EBReuse(SubjectFragment.SCROLL_TOP)); - } - }); } public void onTouchEvent(MotionEvent ev) { diff --git a/app/src/main/res/layout/fragment_subject.xml b/app/src/main/res/layout/fragment_subject.xml index 873b8854e9..051a0c2d80 100644 --- a/app/src/main/res/layout/fragment_subject.xml +++ b/app/src/main/res/layout/fragment_subject.xml @@ -17,12 +17,12 @@ android:id = "@+id/subject_list" android:layout_width = "match_parent" android:layout_height = "match_parent" - android:layout_below = "@+id/subject_type_list" /> + android:layout_below = "@id/subject_type_list" />