This commit is contained in:
2025-11-18 15:12:24 +08:00
parent c173c425ce
commit a7d2035e70
1361 changed files with 367452 additions and 0 deletions
@@ -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;
}
}
}