package com.liyu.fakeweather.ui.girl;
import android.app.WallpaperManager;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import com.liyu.fakeweather.R;
import com.liyu.fakeweather.model.Girl;
import com.liyu.fakeweather.ui.base.BaseActivity;
import com.liyu.fakeweather.ui.girl.adapter.PicFragmentAdapter;
import com.liyu.fakeweather.utils.RxImage;
import com.liyu.fakeweather.utils.ShareUtils;
import com.liyu.fakeweather.utils.TimeUtils;
import com.liyu.fakeweather.utils.ToastUtil;
import java.io.IOException;
import java.io.Serializable;
import java.util.List;
import rx.Observer;
import rx.android.schedulers.AndroidSchedulers;
/**
* Created by liyu on 2016/11/3.
*/
public class PictureActivity extends BaseActivity {
public static final String EXTRA_IMAGE_URL = "image_url";
public static final String EXTRA_IMAGE_TITLE = "image_title";
public static final String EXTRA_IMAGE_LIST = "image_list";
public static final String EXTRA_IMAGE_INDEX = "image_index";
public static final String TRANSIT_PIC = "picture";
private ViewPager viewPager;
private PicFragmentAdapter adapter;
private List<Girl> girls;
private int currentIndex;
public static Intent newIntent(Context context, String url, String desc) {
Intent intent = new Intent(context, PictureActivity.class);
intent.putExtra(PictureActivity.EXTRA_IMAGE_URL, url);
intent.putExtra(PictureActivity.EXTRA_IMAGE_TITLE, desc);
return intent;
}
public static Intent newIntent(Context context, List<Girl> girls, int index) {
Intent intent = new Intent(context, PictureActivity.class);
intent.putExtra(PictureActivity.EXTRA_IMAGE_LIST, (Serializable) girls);
intent.putExtra(PictureActivity.EXTRA_IMAGE_INDEX, index);
return intent;
}
@Override
protected int getLayoutId() {
return R.layout.activity_picture;
}
@Override
protected int getMenuId() {
return R.menu.menu_pic;
}
@Override
protected void initViews(Bundle savedInstanceState) {
showSystemUI();
setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setShowHideAnimationEnabled(true);
adapter = new PicFragmentAdapter(getSupportFragmentManager());
viewPager = (ViewPager) findViewById(R.id.picturePager);
viewPager.setOnTouchListener(new View.OnTouchListener() {
int flag = 0;
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
flag = 0;
break;
case MotionEvent.ACTION_MOVE:
flag = 1;
break;
case MotionEvent.ACTION_UP:
if (flag == 0) {
hideOrShowToolbar();
}
break;
}
return false;
}
});
}
@Override
protected void loadData() {
currentIndex = getIntent().getIntExtra(EXTRA_IMAGE_INDEX, 0);
girls = (List<Girl>) getIntent().getSerializableExtra(EXTRA_IMAGE_LIST);
if (girls == null || girls.isEmpty())
return;
hideOrShowToolbar();
for (Girl girl : girls) {
Fragment fragment = new PictureFrament();
Bundle data = new Bundle();
data.putString("url", girl.getUrl());
fragment.setArguments(data);
adapter.addFragment(fragment);
}
viewPager.setAdapter(adapter);
viewPager.setCurrentItem(currentIndex);
viewPager.setOffscreenPageLimit(viewPager.getAdapter().getCount());
}
private void hideOrShowToolbar() {
if (getSupportActionBar().isShowing()) {
getSupportActionBar().hide();
hideSystemUI();
} else {
showSystemUI();
getSupportActionBar().show();
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
int id = item.getItemId();
if (id == R.id.menu_share) {
RxImage.saveImageAndGetPathObservable(this, girls.get(viewPager.getCurrentItem()).getUrl(), TimeUtils.getSystemTime())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<Uri>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
ToastUtil.showLong("图片分享失败: " + e.toString());
}
@Override
public void onNext(Uri uri) {
ShareUtils.shareImage(PictureActivity.this, uri, "分享福利...");
}
});
} else if (id == R.id.menu_save) {
RxImage.saveImageAndGetPathObservable(this, girls.get(viewPager.getCurrentItem()).getUrl(), TimeUtils.getSystemTime())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<Uri>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
ToastUtil.showLong("图片成功失败: " + e.toString());
}
@Override
public void onNext(Uri uri) {
ToastUtil.showLong("图片成功保存至: " + RxImage.getRealFilePath(PictureActivity.this, uri));
}
});
} else if (id == R.id.menu_wallpaper) {
final WallpaperManager wm = WallpaperManager.getInstance(this);
RxImage.saveImageAndGetPathObservable(this, girls.get(viewPager.getCurrentItem()).getUrl(), TimeUtils.getSystemTime())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<Uri>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
ToastUtil.showLong("壁纸设置失败: " + e.toString());
}
@Override
public void onNext(Uri uri) {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
startActivity(wm.getCropAndSetWallpaperIntent(uri));
} else {
try {
wm.setStream(PictureActivity.this.getContentResolver().openInputStream(uri));
ToastUtil.showShort("设置壁纸成功!");
} catch (IOException e) {
ToastUtil.showShort("设置壁纸失败!" + e.toString());
}
}
}
});
}
return true;
}
}