Skip to content

Commit

Permalink
添加妹纸大图可左右切换功能
Browse files Browse the repository at this point in the history
  • Loading branch information
jokermonn committed Aug 31, 2016
1 parent 191eb58 commit 4431278
Show file tree
Hide file tree
Showing 10 changed files with 174 additions and 45 deletions.
2 changes: 1 addition & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Expand Up @@ -51,8 +51,7 @@ public void onBindViewHolder(final ViewHolder holder, final int position) {
@Override
public void onClick(View v) {
if (mImageListener != null) {
mImageListener.onGankImageClick(holder.imageView, mWelfare.get(position).getUrl(),
mWelfare.get(position).getDesc());
mImageListener.onGankImageClick(holder.imageView, mWelfare, position);
}
}
});
Expand Down Expand Up @@ -101,7 +100,7 @@ public interface TextViewListener {
}

public interface ImageViewListener {
void onGankImageClick(View image, String url, String desc);
void onGankImageClick(View image, List<GankWelfare.ResultsBean> bean, int position);
}

public class ViewHolder extends RecyclerView.ViewHolder {
Expand Down
@@ -1,7 +1,56 @@
package com.joker.gankor.adapter;

import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import com.joker.gankor.R;
import com.joker.gankor.model.GankWelfare;
import com.joker.gankor.utils.ImageUtil;

import java.util.List;

/**
* Created by joker on 2016/8/31.
*/
public class PicturePagerAdapter {
public class PicturePagerAdapter extends PagerAdapter {
private List<GankWelfare.ResultsBean> bean;
private LayoutInflater mInflater;

public PicturePagerAdapter(Context context, List<GankWelfare.ResultsBean> bean) {
this.bean = bean;
mInflater = LayoutInflater.from(context);
}

@Override
public int getCount() {
return bean.size();
}

@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}

@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView view = (ImageView) mInflater.inflate(R.layout.activity_picture_item, container, false);
ImageUtil.getInstance().displayImage(bean.get(position).getUrl(), view);
container.addView(view);

return view;
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((ImageView) object);
}

public void addList(List<GankWelfare.ResultsBean> beanList) {
bean.addAll(beanList);
notifyDataSetChanged();
}
}
52 changes: 50 additions & 2 deletions app/src/main/java/com/joker/gankor/model/GankWelfare.java
@@ -1,5 +1,8 @@
package com.joker.gankor.model;

import android.os.Parcel;
import android.os.Parcelable;

import com.google.gson.annotations.SerializedName;

import java.util.List;
Expand Down Expand Up @@ -73,10 +76,10 @@ public void setResults(List<ResultsBean> results) {
this.results = results;
}

public static class ResultsBean {
public static class ResultsBean implements Parcelable {

@SerializedName("_id")
private String id;

private String createdAt;
private String desc;
private String publishedAt;
Expand Down Expand Up @@ -157,5 +160,50 @@ public String getWho() {
public void setWho(String who) {
this.who = who;
}

@Override
public int describeContents() {
return 0;
}

@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.id);
dest.writeString(this.createdAt);
dest.writeString(this.desc);
dest.writeString(this.publishedAt);
dest.writeString(this.source);
dest.writeString(this.type);
dest.writeString(this.url);
dest.writeByte(this.used ? (byte) 1 : (byte) 0);
dest.writeString(this.who);
}

public ResultsBean() {
}

protected ResultsBean(Parcel in) {
this.id = in.readString();
this.createdAt = in.readString();
this.desc = in.readString();
this.publishedAt = in.readString();
this.source = in.readString();
this.type = in.readString();
this.url = in.readString();
this.used = in.readByte() != 0;
this.who = in.readString();
}

public static final Parcelable.Creator<ResultsBean> CREATOR = new Parcelable.Creator<ResultsBean>() {
@Override
public ResultsBean createFromParcel(Parcel source) {
return new ResultsBean(source);
}

@Override
public ResultsBean[] newArray(int size) {
return new ResultsBean[size];
}
};
}
}
Expand Up @@ -23,6 +23,7 @@
import com.joker.gankor.adapter.DailyNewsRecyclerAdapter;
import com.joker.gankor.adapter.GankRecyclerAdapter;
import com.joker.gankor.adapter.HotNewsRecyclerAdapter;
import com.joker.gankor.model.GankWelfare;
import com.joker.gankor.model.ZhihuDailyNews;
import com.joker.gankor.model.ZhihuHotNews;
import com.joker.gankor.ui.BaseActivity;
Expand All @@ -32,6 +33,9 @@
import com.joker.gankor.utils.CacheUtil;
import com.joker.gankor.utils.ImageUtil;

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

public class MainActivity extends BaseActivity implements GankRecyclerAdapter.TextViewListener,
GankRecyclerAdapter.ImageViewListener, DailyNewsRecyclerAdapter.OnDailyItemClickListener,
ZhihuDailyNewsFragment.OnBannerClickListener, HotNewsRecyclerAdapter.OnHotItemClickListener {
Expand Down Expand Up @@ -247,8 +251,8 @@ public void onZhihuHotItemClick(View view, ZhihuHotNews.RecentBean recentBean) {

// Gank 图片点击
@Override
public void onGankImageClick(View image, String url, String desc) {
Intent intent = PictureActivity.newIntent(MainActivity.this, url, desc);
public void onGankImageClick(View image, List<GankWelfare.ResultsBean> bean, int position) {
Intent intent = PictureActivity.newIntent(MainActivity.this, (ArrayList<GankWelfare.ResultsBean>) bean, position);
ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(
MainActivity.this, image, PictureActivity.TRANSIT_PIC);
try {
Expand Down
77 changes: 52 additions & 25 deletions app/src/main/java/com/joker/gankor/ui/activity/PictureActivity.java
Expand Up @@ -5,32 +5,42 @@
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.view.ViewCompat;
import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBar;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;

import com.joker.gankor.R;
import com.joker.gankor.adapter.PicturePagerAdapter;
import com.joker.gankor.model.GankWelfare;
import com.joker.gankor.ui.BaseActivity;
import com.joker.gankor.utils.ImageUtil;
import com.joker.gankor.utils.LazyUtil;

public class PictureActivity extends BaseActivity implements View.OnClickListener {
public static final String EXTRA_IMAGE_URL = "image_url";
public static final String EXTRA_IMAGE_TITLE = "image_title";
public static final String TRANSIT_PIC = "picture";
private String mImageUrl;
private String mName;
private ImageView mPicImageView;
import java.util.ArrayList;

public class PictureActivity extends BaseActivity implements View.OnClickListener, ViewPager
.OnPageChangeListener {
public static final String RESULTS_BEAN = "results_bean";
public static final String IMG_POSITION = "img_position";
public static final String TRANSIT_PIC = "transit_pic";
private ArrayList<GankWelfare.ResultsBean> bean;
private int firstPosition;
private int currentPosition;
private Toolbar mTitleToolbar;
private ViewPager mPicViewPager;
public PicturePagerAdapter mAdapter;

public static Intent newIntent(Context context, String url, String desc) {
public static Intent newIntent(Context context, ArrayList<GankWelfare.ResultsBean> bean, int position) {
Intent intent = new Intent(context, PictureActivity.class);
intent.putExtra(PictureActivity.EXTRA_IMAGE_URL, url);
intent.putExtra(PictureActivity.EXTRA_IMAGE_TITLE, desc);
Bundle bundle = new Bundle();
// intent.putExtra(RESULTS_BEAN, (Serializable) bean);
bundle.putParcelableArrayList(RESULTS_BEAN, bean);
bundle.putInt(IMG_POSITION, position);
intent.putExtras(bundle);

return intent;
}

Expand All @@ -39,34 +49,34 @@ public static Intent newIntent(Context context, String url, String desc) {
protected void initView(Bundle savedInstanceState) {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
setContentView(R.layout.activity_picture);
mPicViewPager = (ViewPager) findViewById(R.id.vp_pic);
mTitleToolbar = (Toolbar) findViewById(R.id.tb_title);
mPicImageView = (ImageView) findViewById(R.id.iv_pic);

mTitleToolbar.setNavigationOnClickListener(this);
setSupportActionBar(mTitleToolbar);
final ActionBar ab = getSupportActionBar();
ab.setDisplayHomeAsUpEnabled(true);
mPicImageView.setOnClickListener(this);

ViewCompat.setTransitionName(mPicImageView, TRANSIT_PIC);
parseIntent();

mAdapter = new PicturePagerAdapter(this, bean);
mAdapter.addList(bean);
mPicViewPager.setAdapter(mAdapter);
mPicViewPager.addOnPageChangeListener(this);
}

@Override
protected void initData() {
super.initData();
parseIntent();
getSupportActionBar().setTitle(mName);

loadPic(mImageUrl, mPicImageView);
mPicViewPager.setCurrentItem(firstPosition);
getSupportActionBar().setTitle(bean.get(firstPosition).getDesc());
}

private void parseIntent() {
mImageUrl = getIntent().getStringExtra(EXTRA_IMAGE_URL);
mName = getIntent().getStringExtra(EXTRA_IMAGE_TITLE);
}

private void loadPic(String imageUrl, ImageView imageView) {
ImageUtil.getInstance().displayImage(imageUrl, imageView);
Bundle bundle = getIntent().getExtras();
bean = bundle.getParcelableArrayList(RESULTS_BEAN);
firstPosition = bundle.getInt(IMG_POSITION, 0);
}

@Override
Expand Down Expand Up @@ -101,7 +111,8 @@ public boolean onOptionsItemSelected(MenuItem item) {
finish();
return true;
case R.id.menu_save:
ImageUtil.getInstance().saveImage(this, mName, mImageUrl);
ImageUtil.getInstance().saveImage(this, bean.get(currentPosition).getDesc(), bean.get
(currentPosition).getUrl());
return true;
case R.id.menu_share:
LazyUtil.showToast("暂时不支持分享功能哦");
Expand All @@ -111,4 +122,20 @@ public boolean onOptionsItemSelected(MenuItem item) {
}
return super.onOptionsItemSelected(item);
}

@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

}

@Override
public void onPageSelected(int position) {
currentPosition = position;
getSupportActionBar().setTitle(bean.get(currentPosition).getDesc());
}

@Override
public void onPageScrollStateChanged(int state) {

}
}
Expand Up @@ -164,9 +164,9 @@ public void setImageListener(GankRecyclerAdapter.ImageViewListener imageListener
}

@Override
public void onGankImageClick(View image, String url, String desc) {
public void onGankImageClick(View image, List<GankWelfare.ResultsBean> bean, int position) {
if (mImageListener != null) {
mImageListener.onGankImageClick(image, url, desc);
mImageListener.onGankImageClick(image, bean, position);
}
}

Expand Down
Expand Up @@ -14,6 +14,7 @@
import com.joker.gankor.adapter.GankRecyclerAdapter;
import com.joker.gankor.adapter.HotNewsRecyclerAdapter;
import com.joker.gankor.adapter.MainAdapter;
import com.joker.gankor.model.GankWelfare;
import com.joker.gankor.model.ZhihuDailyNews;
import com.joker.gankor.model.ZhihuHotNews;
import com.joker.gankor.ui.BaseFragment;
Expand Down Expand Up @@ -108,9 +109,9 @@ public void setImageListener(GankRecyclerAdapter.ImageViewListener imageListener
}

@Override
public void onGankImageClick(View image, String url, String desc) {
public void onGankImageClick(View image, List<GankWelfare.ResultsBean> bean, int position) {
if (mImageListener != null) {
mImageListener.onGankImageClick(image, url, desc);
mImageListener.onGankImageClick(image, bean, position);
}
}

Expand Down
4 changes: 2 additions & 2 deletions app/src/main/res/layout/activity_picture.xml
Expand Up @@ -8,8 +8,8 @@
android:orientation="vertical"
tools:context="com.joker.gankor.ui.activity.PictureActivity">

<ImageView
android:id="@+id/iv_pic"
<android.support.v4.view.ViewPager
android:id="@+id/vp_pic"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"/>
Expand Down
11 changes: 6 additions & 5 deletions app/src/main/res/layout/activity_picture_item.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

</ImageView>
<ImageView
android:id="@+id/iv_pic"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"/>

0 comments on commit 4431278

Please sign in to comment.