package com.mogujie.tt.ui.activity;
import java.io.Serializable;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Rect;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.MotionEvent;
import android.view.VelocityTracker;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.TextView;
import com.mogujie.tt.R;
import com.mogujie.tt.adapter.album.AlbumHelper;
import com.mogujie.tt.adapter.album.ImageBucket;
import com.mogujie.tt.adapter.album.ImageBucketAdapter;
import com.mogujie.tt.config.HandlerConstant;
import com.mogujie.tt.config.SysConstant;
/**
* @Description 相册列表
* @author Nana
* @date 2014-5-6
*/
public class PickPhotoActivity extends Activity implements OnTouchListener {
List<ImageBucket> dataList = null;
ListView listView = null;
ImageBucketAdapter adapter = null;
AlbumHelper helper = null;
TextView cancel = null;
Handler uiHandler = null;
public static Bitmap bimap = null;
private String CHAT_USER_ID = null;
boolean touchable = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tt_activity_pick_photo);
initData();
initView();
}
/**
* 初始化数据
*/
private void initData() {
CHAT_USER_ID = (String) getIntent().getSerializableExtra(
SysConstant.EXTRA_CHAT_USER_ID);
helper = AlbumHelper.getHelper(getApplicationContext());
dataList = helper.getImagesBucketList(false);
bimap = BitmapFactory.decodeResource(getResources(),
R.drawable.tt_default_album_grid_image);
}
/**
* 初始化view
*/
private void initView() {
listView = (ListView) findViewById(R.id.list);
adapter = new ImageBucketAdapter(this, dataList);
listView.setAdapter(adapter);
listView.setOnTouchListener(this);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Intent intent = new Intent(PickPhotoActivity.this,
ImageGridActivity.class);
intent.putExtra(SysConstant.EXTRA_IMAGE_LIST,
(Serializable) dataList.get(position).imageList);
intent.putExtra(SysConstant.EXTRA_ALBUM_NAME,
dataList.get(position).bucketName);
intent.putExtra(SysConstant.EXTRA_CHAT_USER_ID,
CHAT_USER_ID);
startActivity(intent);
setResult(Activity.RESULT_OK, null);
PickPhotoActivity.this.finish();
}
});
cancel = (TextView) findViewById(R.id.cancel);
cancel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
setResult(Activity.RESULT_OK, null);
PickPhotoActivity.this.finish();
overridePendingTransition(R.anim.tt_stay, R.anim.tt_album_exit);
}
});
uiHandler = new Handler() {
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case HandlerConstant.HANDLER_CANCEL_SELECTED:
adapter.setSelectedPosition(-1);
adapter.notifyDataSetChanged();
break;
default:
break;
}
}
};
}
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
View mDownView = null;
@SuppressWarnings("unused")
float mDownX = 0;
int mDownPosition = -1;
VelocityTracker mVelocityTracker = null;
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN: {
Rect rect = new Rect();
int childCount = listView.getChildCount();
int[] listViewCoords = new int[2];
listView.getLocationOnScreen(listViewCoords);
int x = (int) motionEvent.getRawX() - listViewCoords[0];
int y = (int) motionEvent.getRawY() - listViewCoords[1];
View child;
for (int i = 0; i < childCount; i++) {
child = listView.getChildAt(i);
child.getHitRect(rect);
if (rect.contains(x, y)) {
mDownView = child;
break;
}
}
if (mDownView != null) {
mDownX = motionEvent.getRawX();
mDownPosition = listView.getPositionForView(mDownView);
mVelocityTracker = VelocityTracker.obtain();
mVelocityTracker.addMovement(motionEvent);
adapter.setSelectedPosition(mDownPosition);
adapter.notifyDataSetChanged();
}
}
break;
case MotionEvent.ACTION_UP:
uiHandler.sendEmptyMessage(HandlerConstant.HANDLER_CANCEL_SELECTED);
break;
}
return false;
}
}