33
This commit is contained in:
@@ -0,0 +1,299 @@
|
||||
package cn.shangyu.gdxzExpert.photo;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextPaint;
|
||||
import android.text.TextUtils;
|
||||
import android.util.TypedValue;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import androidx.annotation.RequiresApi;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.appcompat.widget.AppCompatCheckBox;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.viewpager.widget.PagerAdapter;
|
||||
import androidx.viewpager.widget.ViewPager;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions;
|
||||
import com.gyf.immersionbar.ImmersionBar;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import cn.shangyu.gdxzExpert.R;
|
||||
import cn.shangyu.gdxzExpert.bean.PhotoAibum;
|
||||
import cn.shangyu.gdxzExpert.bean.PhotoItem;
|
||||
import cn.shangyu.gdxzExpert.utils.ToastUtil;
|
||||
import cn.shangyu.gdxzExpert.view.PhotoView;
|
||||
|
||||
|
||||
/**
|
||||
* Author: yangshuiqiang
|
||||
* Date:2017/6/15.
|
||||
*/
|
||||
|
||||
|
||||
public class AlbumPreviewActivity extends AppCompatActivity implements View.OnClickListener {
|
||||
|
||||
public static final String ARG_BUCKET_INDEX = "ARG_BUCKET_INDEX";
|
||||
public static final String MAX_NUMBER = "MAX_NUMBER";
|
||||
public static final String ARG_INDEX = "ARG_INDEX";
|
||||
|
||||
// public static final String ARG_MODE = "ARG_MODE";
|
||||
|
||||
// private List<ImageBean0> mImageBeen;
|
||||
List<PhotoItem> mImageBeen;
|
||||
private AppCompatCheckBox mCheckBox;
|
||||
|
||||
private ViewPager mViewPager;
|
||||
|
||||
// private AppBarLayout mAppbarLayout;
|
||||
|
||||
// private int mMode;
|
||||
private ImageView top_back_layout;// 返回按钮
|
||||
private boolean mIsFullScreen;
|
||||
private ArrayList<String> potisions;
|
||||
int maxnumber,haveNums;
|
||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.ysq_activity_album_preview);
|
||||
// mAppbarLayout = (AppBarLayout) findViewById(R.id.appbar);
|
||||
Toolbar toolbar =findViewById(R.id.toolbar);
|
||||
ImmersionBar.with(this).keyboardEnable(true).statusBarDarkFont(true).titleBar(toolbar).init();
|
||||
// setSupportActionBar(toolbar);
|
||||
//noinspection ConstantConditions
|
||||
// getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
// initActionbar();
|
||||
// mMode = getIntent().getIntExtra(ARG_MODE, -1);
|
||||
final int currentPosition = getIntent().getIntExtra(ARG_INDEX, 0);
|
||||
maxnumber=getIntent().getIntExtra(MAX_NUMBER,0);
|
||||
haveNums=getIntent().getIntExtra("haveNums",0);
|
||||
potisions=getIntent().getStringArrayListExtra("potisions");
|
||||
PhotoAibum aibum= (PhotoAibum) getIntent().getSerializableExtra("aibum");
|
||||
mImageBeen = aibum.getBitList();
|
||||
// Collections.reverse(mImageBeen);
|
||||
// getSupportActionBar().setTitle(getTitle(mImageBeen.get(currentPosition).getPhotoID()+""));
|
||||
mViewPager = (ViewPager) findViewById(R.id.viewpager);
|
||||
mViewPager.setAdapter(mPreviewAdapter);
|
||||
mViewPager.setCurrentItem(currentPosition);
|
||||
mViewPager.addOnPageChangeListener(mOnPageChangeListener);
|
||||
mCheckBox =findViewById(R.id.checkbox);
|
||||
|
||||
if(potisions!=null) {
|
||||
String p = potisions.stream()
|
||||
.filter(new Predicate<String>() {
|
||||
@Override
|
||||
public boolean test(String customer) {
|
||||
return (currentPosition+"").equals(customer);
|
||||
}
|
||||
})
|
||||
.findAny()
|
||||
.orElse(null);
|
||||
if (p != null) {
|
||||
mCheckBox.setChecked(true);
|
||||
} else {
|
||||
mCheckBox.setChecked(false);
|
||||
}
|
||||
}
|
||||
// mCheckBox.setChecked(mImageBeen.get(currentPosition).isSelected());
|
||||
mCheckBox.setOnCheckedChangeListener(mOnCheckedChangeListener);
|
||||
mCheckBox.setOnClickListener(this);
|
||||
// mCheckBox.setOnCannotCheckMoreListener(mOnCannotCheckMoreListener);
|
||||
top_back_layout = findViewById(R.id.top_back_layout);
|
||||
top_back_layout.setOnClickListener(this);
|
||||
// getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
|
||||
// mAppbarLayout.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
private PagerAdapter mPreviewAdapter = new PagerAdapter() {
|
||||
@Override
|
||||
public int getCount() {
|
||||
return mImageBeen.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isViewFromObject(View view, Object object) {
|
||||
return view == object;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object instantiateItem(ViewGroup container, final int position) {
|
||||
PhotoView imageview = new PhotoView(AlbumPreviewActivity.this);
|
||||
imageview.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
|
||||
imageview.setTag(R.id.tag_position, position);
|
||||
imageview.setOnClickListener(AlbumPreviewActivity.this);
|
||||
Glide.with(AlbumPreviewActivity.this).load(mImageBeen.get(position).getPath())
|
||||
.transition(DrawableTransitionOptions.withCrossFade(400))
|
||||
.into(imageview);
|
||||
container.addView(imageview);
|
||||
return imageview;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void destroyItem(ViewGroup container, int position, Object object) {
|
||||
container.removeView((View) object);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
private ViewPager.OnPageChangeListener mOnPageChangeListener = new ViewPager.OnPageChangeListener() {
|
||||
@Override
|
||||
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
||||
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
||||
@Override
|
||||
public void onPageSelected(final int position) {
|
||||
//noinspection ConstantConditions
|
||||
// getSupportActionBar().setTitle(getTitle(mImageBeen.get(position).getPhotoID()+""));
|
||||
mCheckBox.setOnCheckedChangeListener(null);
|
||||
if(potisions!=null)
|
||||
{
|
||||
String p=potisions.stream()
|
||||
.filter(new Predicate<String>() {
|
||||
@Override
|
||||
public boolean test(String customer) {
|
||||
return ("" + position).equals(customer);
|
||||
}
|
||||
})
|
||||
.findAny()
|
||||
.orElse(null);
|
||||
if(p!=null)
|
||||
{
|
||||
mCheckBox.setChecked(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
mCheckBox.setChecked(false);
|
||||
}
|
||||
}
|
||||
|
||||
mCheckBox.setOnCheckedChangeListener(mOnCheckedChangeListener);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageScrollStateChanged(int state) {
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
private CompoundButton.OnCheckedChangeListener mOnCheckedChangeListener = new CompoundButton.OnCheckedChangeListener() {
|
||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||
// mImageBeen.get(mViewPager.getCurrentItem()).setSelected(isChecked);
|
||||
// RecyclerView recyclerView = AlbumAdapter0.mWeakRecyclerViewRef.get();
|
||||
// int childCount = recyclerView.getChildCount();
|
||||
// for (int i = 0; i < childCount; i++) {
|
||||
// View childView = recyclerView.getChildAt(i);
|
||||
// AlbumAdapter0.VH childViewHolder = (AlbumAdapter0.VH) recyclerView.getChildViewHolder(childView);
|
||||
// AlbumAdapter0 adapter = (AlbumAdapter0) recyclerView.getAdapter();
|
||||
// if (mImageBeen.get(mViewPager.getCurrentItem()).getPath()
|
||||
// .equals(adapter.getPicPath(childViewHolder))) {
|
||||
// adapter.setCheckBox(childViewHolder);
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
if (isChecked)
|
||||
{
|
||||
if(haveNums<maxnumber&&potisions.size()<maxnumber)
|
||||
{
|
||||
potisions.add(mViewPager.getCurrentItem()+"");
|
||||
haveNums++;
|
||||
}
|
||||
else
|
||||
{
|
||||
buttonView.setChecked(false);
|
||||
ToastUtil.showMessage("最多添加"+maxnumber+"张");
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
haveNums--;
|
||||
potisions= (ArrayList<String>) potisions.stream()
|
||||
.filter(new Predicate<String>() {
|
||||
@Override
|
||||
public boolean test(String customer) {
|
||||
return !(mViewPager.getCurrentItem()+"").equals(customer);
|
||||
}
|
||||
})
|
||||
.collect(Collectors.<String>toList())
|
||||
;
|
||||
}
|
||||
// AlbumActivity.albumPicker.add(mImageBeen.get(mViewPager.getCurrentItem()));
|
||||
// else
|
||||
// AlbumActivity.albumPicker.remove(mImageBeen.get(mViewPager.getCurrentItem()));
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
Intent intent = new Intent();
|
||||
intent.putStringArrayListExtra("potisions",potisions);
|
||||
intent.putExtra("haveNums",haveNums);
|
||||
setResult(RESULT_OK, intent);
|
||||
finish();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private void initActionbar() {
|
||||
int statusBarHeight = 0;
|
||||
int id = getResources().getIdentifier("status_bar_height", "dimen", "android");
|
||||
if (id > 0) {
|
||||
statusBarHeight = getResources().getDimensionPixelOffset(id);
|
||||
}
|
||||
// mAppbarLayout.setPadding(0, statusBarHeight, 0, 0);
|
||||
}
|
||||
|
||||
private String getTitle(String title) {
|
||||
TextPaint paint = new TextPaint();
|
||||
paint.setTextSize(sp2px(20));
|
||||
return TextUtils.ellipsize(title, paint, dp2px(200), TextUtils.TruncateAt.END).toString();
|
||||
}
|
||||
|
||||
private int dp2px(int dpValue) {
|
||||
return (int) TypedValue.applyDimension(
|
||||
TypedValue.COMPLEX_UNIT_DIP, dpValue, getResources().getDisplayMetrics());
|
||||
}
|
||||
|
||||
private int sp2px(int dpValue) {
|
||||
return (int) TypedValue.applyDimension(
|
||||
TypedValue.COMPLEX_UNIT_SP, dpValue, getResources().getDisplayMetrics());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
switch (v.getId())
|
||||
{
|
||||
case R.id.top_back_layout:
|
||||
Intent intent = new Intent();
|
||||
intent.putStringArrayListExtra("potisions",potisions);
|
||||
intent.putExtra("haveNums",haveNums);
|
||||
setResult(RESULT_OK, intent);
|
||||
finish();
|
||||
break;
|
||||
case R.id.checkbox:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package cn.shangyu.gdxzExpert.photo;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.MotionEvent;
|
||||
|
||||
import androidx.viewpager.widget.ViewPager;
|
||||
|
||||
|
||||
/**
|
||||
* author:ysq
|
||||
* date:2017/2/16.
|
||||
*/
|
||||
|
||||
public class PreviewViewPager extends ViewPager {
|
||||
|
||||
public PreviewViewPager(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
public PreviewViewPager(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onLayout(boolean changed, int l, int t, int r, int b) {
|
||||
setPadding(getPaddingLeft(), 0, getPaddingRight(), getPaddingBottom());
|
||||
super.onLayout(changed, l, t, r, b);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onInterceptTouchEvent(MotionEvent ev) {
|
||||
try {
|
||||
return super.onInterceptTouchEvent(ev);
|
||||
} catch (Exception e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user