LocalPictureActivity.java 源代码
package activity;
import activity.FishEye.FishEyePhotoActivity;
import activity.WallMounted.WallMountedPhotoActivity;
import android.animation.ObjectAnimator;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.CheckBox;
import android.widget.GridView;
import android.widget.LinearLayout;
import android.widget.ListAdapter;
import base.HiActivity;
import bean.MyCamera;
import com.hichip.campro.R;
import common.Constant;
import common.HiDataValue;
import common.TitleView;
import custom.dialog.NiftyDialogBuilder;
import custom.stickygridview.GridItem;
import custom.stickygridview.StickyGridAdapter;
import custom.stickygridview.YMComparator;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import java.util.Map;
import java.util.TimeZone;
import utils.HiTools;
import utils.MyToast;
import utils.SharePreUtils;
import utils.TimeUtil;
public class LocalPictureActivity extends HiActivity implements View.OnClickListener {
private static final int ACTIVITY_RESULT_PHOTO_VIEW = 10;
private static final int DEFAULT_LIST_SIZE = 20;
public static final String EXTRA_GIRDLST = "girdlst";
public static final String EXTRA_POSITION = "position";
public static Activity mActivity;
public static List<GridItem> mDeleteList = new ArrayList();
private static int section = 1;
private StickyGridAdapter adapter;
private GridView gridview;
private MyCamera mMyCamera;
private LinearLayout mll_anim;
private String uid;
final List<String> IMAGE_FILES = Collections.synchronizedList(new ArrayList(20));
private ArrayList<GridItem> mGirdList = new ArrayList<>();
private Map<String, Integer> sectionMap = new HashMap();
private boolean isDeleteModel = false;
private BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ImagePagerActivity.BROAD_ACTION)) {
int intExtra = intent.getIntExtra(ImagePagerActivity.INDEX, 0);
if (LocalPictureActivity.this.mGirdList == null || LocalPictureActivity.this.mGirdList.size() <= 0 || intExtra >= LocalPictureActivity.this.mGirdList.size()) {
return;
}
LocalPictureActivity.this.mGirdList.remove(intExtra);
LocalPictureActivity.this.adapter.notifyDataSetChanged();
}
}
};
@Override
protected int setLayoutId() {
return R.layout.activity_local_picture;
}
@Override
protected void init(Bundle bundle) {
this.uid = getIntent().getExtras().getString(HiDataValue.EXTRAS_KEY_UID);
Iterator<MyCamera> it = HiDataValue.CameraList.iterator();
while (true) {
if (!it.hasNext()) {
break;
}
MyCamera next = it.next();
if (this.uid.equalsIgnoreCase(next.getUid())) {
this.mMyCamera = next;
break;
}
}
initView();
registerBrodCast();
mActivity = this;
}
private void initView() {
this.mGirdList.clear();
initTopView();
setImagesPath(new File(HiDataValue.getPathCameraSnapshot(this.mMyCamera.getUid(), this)).getAbsolutePath());
removeCorruptImage();
this.gridview = (GridView) findViewById(R.id.asset_grid);
Collections.sort(this.mGirdList, new YMComparator());
ListIterator<GridItem> listIterator = this.mGirdList.listIterator();
while (listIterator.hasNext()) {
GridItem next = listIterator.next();
String time = next.getTime();
if (!this.sectionMap.containsKey(time)) {
next.setSection(section);
this.sectionMap.put(time, Integer.valueOf(section));
section++;
} else {
next.setSection(this.sectionMap.get(time).intValue());
}
}
StickyGridAdapter stickyGridAdapter = new StickyGridAdapter(this, this.mGirdList, this.gridview, this.mMyCamera);
this.adapter = stickyGridAdapter;
this.gridview.setAdapter((ListAdapter) stickyGridAdapter);
this.gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long j) {
if (i < 0) {
return;
}
if (LocalPictureActivity.this.isDeleteModel) {
CheckBox checkBox = (CheckBox) view.findViewById(R.id.grid_cb);
checkBox.setChecked(!checkBox.isChecked());
if (checkBox.isChecked()) {
LocalPictureActivity.mDeleteList.add((GridItem) LocalPictureActivity.this.mGirdList.get(i));
} else {
LocalPictureActivity.mDeleteList.remove(LocalPictureActivity.this.mGirdList.get(i));
}
LocalPictureActivity.this.adapter.checks[i] = checkBox.isChecked();
return;
}
Intent intent = new Intent();
if (LocalPictureActivity.this.mMyCamera.isWallMounted) {
intent.putExtra(HiDataValue.EXTRAS_KEY_UID, LocalPictureActivity.this.mMyCamera.getUid());
intent.putExtra("photo_path", ((GridItem) LocalPictureActivity.this.mGirdList.get(i)).getPath());
intent.putExtra("position", i);
intent.setClass(LocalPictureActivity.this, WallMountedPhotoActivity.class);
LocalPictureActivity.this.startActivity(intent);
return;
}
if (LocalPictureActivity.this.mMyCamera.isFishEye()) {
LocalPictureActivity localPictureActivity = LocalPictureActivity.this;
int i2 = SharePreUtils.getInt(Constant.INSTALLMODE, localPictureActivity, localPictureActivity.mMyCamera.getUid());
MyCamera myCamera = LocalPictureActivity.this.mMyCamera;
if (i2 == -1) {
i2 = 0;
}
myCamera.mInstallMode = i2;
intent.setClass(LocalPictureActivity.this, FishEyePhotoActivity.class);
intent.putExtra("photo_path", ((GridItem) LocalPictureActivity.this.mGirdList.get(i)).getPath());
intent.putExtra("position", i);
} else {
intent.setClass(LocalPictureActivity.this, ImagePagerActivity.class);
}
intent.putExtra(HiDataValue.EXTRAS_KEY_UID, LocalPictureActivity.this.mMyCamera.getUid());
intent.putParcelableArrayListExtra("girdlst", LocalPictureActivity.this.mGirdList);
intent.putExtra("position", i);
LocalPictureActivity.this.startActivityForResult(intent, 10);
}
});
}
private void initTopView() {
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.ll_anim);
this.mll_anim = linearLayout;
linearLayout.setOnClickListener(this);
final TitleView titleView = (TitleView) findViewById(R.id.title_top_lp);
titleView.setTitle(getString(R.string.title_local_picture));
titleView.setButton(0);
titleView.setButton(1);
titleView.setRightTxt(getString(R.string.edit));
titleView.setNavigationBarButtonListener(new TitleView.NavigationBarButtonListener() {
@Override
public void OnNavigationButtonClick(int i) {
if (i == 0) {
LocalPictureActivity.this.finish();
return;
}
if (i != 1) {
return;
}
LocalPictureActivity.mDeleteList.clear();
if (LocalPictureActivity.this.isDeleteModel) {
titleView.setRightTxt(LocalPictureActivity.this.getString(R.string.edit));
LocalPictureActivity.this.adapter.setDelMode(0);
LocalPictureActivity.this.loadAnimation(HiTools.dip2px(r4, 50.0f));
LocalPictureActivity.this.isDeleteModel = false;
return;
}
titleView.setRightTxt(LocalPictureActivity.this.getString(R.string.finish));
LocalPictureActivity.this.loadAnimation(HiTools.dip2px(r4, -50.0f));
LocalPictureActivity.this.adapter.setDelMode(1);
LocalPictureActivity.this.isDeleteModel = true;
}
});
}
public final synchronized void setImagesPath(String str) {
this.IMAGE_FILES.clear();
String[] list = new File(str).list();
if (list != null && list.length > 0) {
Arrays.sort(list);
for (String str2 : list) {
this.mGirdList.add(new GridItem(str + "/" + str2, paserTimeToYM(new File(str + "/" + str2).lastModified() / 1000)));
}
Collections.reverse(this.IMAGE_FILES);
}
}
public final void removeCorruptImage() {
Iterator<String> it = this.IMAGE_FILES.iterator();
while (it.hasNext()) {
if (BitmapFactory.decodeFile(it.next()) == null) {
it.remove();
}
}
}
private String paserTimeToYM(long j) {
TimeZone.setDefault(TimeZone.getDefault());
return new SimpleDateFormat(TimeUtil.FORMAT_DATE).format(new Date(j * 1000));
}
@Override
public void onActivityResult(int i, int i2, Intent intent) {
super.onActivityResult(i, i2, intent);
if (i == 10 && i2 == -1) {
this.mGirdList.remove(intent.getExtras().getInt(ImagePagerActivity.INDEX));
this.adapter.notifyDataSetChanged();
}
}
@Override
public void onClick(View view) {
int id = view.getId();
if (id == R.id.btn_return) {
finish();
return;
}
if (id != R.id.ll_anim) {
return;
}
if (mDeleteList.size() <= 0) {
MyToast.showToast(this, getString(R.string.tip_delete_snap));
} else {
final NiftyDialogBuilder niftyDialogBuilder = NiftyDialogBuilder.getInstance(this);
niftyDialogBuilder.withMessage(getString(R.string.tips_msg_delete_snapshot)).withButton1Text(getString(R.string.btn_no)).withButton2Text(getString(R.string.btn_ok)).setButton1Click(new View.OnClickListener() {
@Override
public void onClick(View view2) {
niftyDialogBuilder.dismiss();
}
}).setButton2Click(new View.OnClickListener() {
@Override
public void onClick(View view2) {
niftyDialogBuilder.dismiss();
Iterator<GridItem> it = LocalPictureActivity.mDeleteList.iterator();
while (it.hasNext()) {
new File(it.next().getPath()).delete();
}
LocalPictureActivity.this.mGirdList.removeAll(LocalPictureActivity.mDeleteList);
for (int i = 0; i < LocalPictureActivity.this.adapter.checks.length - LocalPictureActivity.mDeleteList.size(); i++) {
LocalPictureActivity.this.adapter.checks[i] = false;
}
LocalPictureActivity.this.adapter.notifyDataSetChanged();
LocalPictureActivity.mDeleteList.clear();
}
}).show();
}
}
public void loadAnimation(float f) {
ObjectAnimator ofFloat = ObjectAnimator.ofFloat(this.mll_anim, "translationY", this.mll_anim.getTranslationY(), f);
ofFloat.setDuration(250L);
ofFloat.start();
}
private void registerBrodCast() {
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ImagePagerActivity.BROAD_ACTION);
registerReceiver(this.mReceiver, intentFilter);
}
@Override
public void onDestroy() {
super.onDestroy();
BroadcastReceiver broadcastReceiver = this.mReceiver;
if (broadcastReceiver != null) {
unregisterReceiver(broadcastReceiver);
}
}
}