package com.yizhao.activity;
import java.util.ArrayList;
import java.util.Map;
import com.yizhao.adapter.DetailImageAdapter;
import com.yizhao.bean.ProductDetailBean;
import com.yizhao.bean.ShopsBean;
import com.yizhao.core.ATManager;
import com.yizhao.core.AsyncWorkHandler;
import com.yizhao.core.Const;
import com.yizhao.core.DBHelper;
import com.yizhao.ui.DetialGallery;
import com.yizhao.util.BitmapDownloaderTask;
import com.yizhao.util.DataFormalUtil;
import com.yizhao.util.ImageUtil;
import com.yizhao.util.NetUtil;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Message;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
public class DetailActivity extends Activity{
private Context _context;//当前Activity上下文
private Intent _intent;//转发器
private TextView highprice;//最高报价
private TextView lowprice;//最低报价
private TextView shops;//商家数
private TextView receives;//评论数
private LinearLayout shops_layout;//商家展现容器
private ProductDetailBean detailBean;//产品详情信息
private DetailImageAdapter photoAdapter;//图片适配器
private DetialGallery detailGallery;//图片滑动容器
private LayoutInflater inflater;//View工厂类
private TextView detail_bt_sc;//收藏按钮
private TextView detail_bt_fx;//分享按钮
private ArrayList<ShopsBean> fileList;
private String _coverImage;
private Bitmap coverBitmap;
private String coverImagePath;//图像存储的本地路径
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.detail);
super.onCreate(savedInstanceState);
init();
if(detailBean!=null && "true".equals(detailBean.getResult())){
highprice.setText(DataFormalUtil.convertPrice(detailBean.getHighprice())+"元");
lowprice.setText(DataFormalUtil.convertPrice(detailBean.getLowprice())+"元");
shops.setText(detailBean.getShops()+"家");
receives.setText(detailBean.getReviews()+"人");
fileList = detailBean.getFileList();
if(fileList!=null){
for(int i = 0 ; i < fileList.size(); i++){
View template = inflater.inflate(R.layout.shops_view, null);
TextView shop_name = (TextView)template.findViewById(R.id.shop_name);
TextView shop_price = (TextView)template.findViewById(R.id.shop_pric);
shop_name.setText(fileList.get(i).getShopName());
shop_price.setText(DataFormalUtil.convertPrice(fileList.get(i).getPrice())+"元");
template.setBackgroundResource(R.drawable.detail_shops_selec);
final String sellUrl = NetUtil.getUrl(fileList.get(i).getSellUrl());
template.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
Uri uri = Uri.parse(sellUrl);
if(uri!=null){
Intent it = new Intent(Intent.ACTION_VIEW,uri);
startActivity(it);
}else{
Toast.makeText(_context, "链接地址不正确,请选择其它商品查看!", Toast.LENGTH_SHORT).show();
}
}
});
shops_layout.addView(template);
}
}
_coverImage = detailBean.getCoverImage();
if(_coverImage!=null){
BitmapDownloaderTask task = new BitmapDownloaderTask(_coverImage){
@Override
protected Bitmap doInBackground(String... params) {
//首先获取首页图片,让用户先可见
try {
coverBitmap = ImageUtil.getBitmap(ImageUtil.getPicUrl(_coverImage,3));
photoAdapter.addPic(coverBitmap);
} catch (Exception e) {
Log.e(Const.TAG, "DetailActivity._coverImage asyncTask|getCoverImage fail...",e);
}
return null;
}
@Override
protected void onPostExecute(Bitmap bm){
photoAdapter.notifyDataSetChanged();
//再慢慢获取其它图片
String photos = detailBean.getPhotos();
if(photos!=null){
String[] pic_urls = photos.split("\\|");
for(int i = 0 ; i < pic_urls.length; i++){
String image_url = ImageUtil.getPicUrl(pic_urls[i], 3);
BitmapDownloaderTask task = new BitmapDownloaderTask(image_url){
@Override
protected void onPostExecute(
Bitmap bm) {
if(isCancelled()){
bm = null;
}
if(bm!=null){
photoAdapter.addPic(bm);
photoAdapter.notifyDataSetChanged();
}
}
};
task.execute("");
}
}
if(isCancelled()){
bm = null;
}
if(bm!=null){
photoAdapter.addPic(bm);
photoAdapter.notifyDataSetChanged();
}
}
};
task.execute("");
}
_intent.putExtra("status", true);
}else{
Toast.makeText(_context, "信息不存在,请选择其它商品查看!", Toast.LENGTH_SHORT).show();
DetailActivity.this.finish();
}
//收藏商品
detail_bt_sc.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
boolean sdCard = android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
if(sdCard){
AsyncWorkHandler asyncQueryHandler = new AsyncWorkHandler(){
@Override
public Object excute(Map<String, String> map) {
Integer res = -1;
if(detailBean!=null && "true".equals(detailBean.getResult())){
try {
DBHelper dbHelp = new DBHelper(_context);
boolean findIt = dbHelp.queryData(detailBean.getId());
if(findIt){
res = 1;//该产品曾被收藏
}else{
if(coverImagePath==null && coverBitmap!=null){
coverImagePath = ImageUtil.saveToSDCard(coverBitmap, detailBean.getCoverImage());
}
boolean insert_ok = dbHelp.save(detailBean.getId(), detailBean.getName(), detailBean.getLowprice(), detailBean.getShops(), detailBean.getReviews(),(coverImagePath==null?"":coverImagePath));
if(insert_ok){
res = 0;
}
}
dbHelp.close();
} catch (Exception e) {
Log.e(Const.TAG, "DetailActivity.detail_bt_sc|Exception:",e);
}
}
removeDialog(Const.PROGRESSBAR_WAIT);
return res;
}
@Override
public void handleMessage(Message msg) {
String message = "收藏失败!";
Integer res = -1;
if(msg.obj!=null){
res = (Integer)msg.obj;
}
if(res==0){
message = "收藏成功!";
}else if(res==1){
message = "该商品已经收藏!";
}else{
message = "收藏失败!";
}
Toast.makeText(_context, message , Toast.LENGTH_SHORT).show();
}
};
//异步获取信息
showDialog(Const.PROGRESSBAR_WAIT);
asyncQueryHandler.doWork(null);
}else{
Toast.makeText(_context, "收藏失败,请插入存储卡!", Toast.LENGTH_SHORT).show();
}
}
});
//分享
detail_bt_fx.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
if(detailBean!=null){
if(coverImagePath==null && coverBitmap!=null){
boolean sdCard = android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
if(sdCard){
coverImagePath = ImageUtil.saveToSDCard(coverBitmap, detailBean.getCoverImage());
}else{
Toast.makeText(_context, "没有找到您的存储卡,您只能分享文字信息!", Toast.LENGTH_SHORT).show();
}
}
Intent it = new Intent(_context,BlogActivity.class);
StringBuffer s_t = new StringBuffer();
//商品标题+ “一找网购分析结果:” + 商家数 + “家网店有买,” + 评论数 + “人发表评论。最高价为” + 最高价 + “元,最低价为”+ 最低价 + “元。详情请登陆:+url。”
s_t.append(detailBean.getName())
.append(" 一找网购分析结果:")
.append(detailBean.getShops())
.append("家网店有买,")
.append(detailBean.getReviews()).append("人发表评论。")
.append("最高价为")
.append(DataFormalUtil.convertPrice(detailBean.getHighprice()))
.append("元,最低价为")
.append(DataFormalUtil.convertPrice(detailBean.getLowprice()))
.append("元。详情请登陆 :http://www.yeezhao.com/detail-"+detailBean.getId()+".html");
it.putExtra("text", s_t.toString());
it.putExtra("localPicPath", coverImagePath);
startActivity(it);
}
}
});
}
/**
* 初始化所需要的信息
*/
private void init(){
_context = this;
_intent = this.getIntent();
inflater = LayoutInflater.from(_context);
highprice = (TextView)findViewById(R.id.detail_highprice);
lowprice = (TextView)findViewById(R.id.detail_lowprice);
shops = (TextView)findViewById(R.id.detail_shops);
receives = (TextView)findViewById(R.id.detail_receives);
shops_layout = (LinearLayout)findViewById(R.id.detail_shops_layout);
detail_bt_sc = (TextView)findViewById(R.id.detail_bt_sc);
detail_bt_fx = (TextView)findViewById(R.id.detail_bt_fx);
detailGallery = (DetialGallery)findViewById(R.id.detail_gallery);
detailGallery.setUnselectedAlpha(1.1f);
photoAdapter = new DetailImageAdapter(_context);
detailGallery.setAdapter(photoAdapter);
Object obj = _intent.getSerializableExtra("detailBean");
if(obj!=null){
detailBean = (ProductDetailBean)obj;
}
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case Const.DIALOG_YES_NO_MESSAGE:
return new AlertDialog.Builder(_context)
.setTitle("确定退出程序?")//设置对话框的标题
.setPositiveButton("确定", new DialogInterface.OnClickListener() {//设置按下表示确定按钮时按钮的text,和按钮的事件监听器
@Override
public void onClick(DialogInterface dialog, int whichButton) {
removeDialog(Const.DIALOG_YES_NO_MESSAGE);
ATManager.exitClient(_context);
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {//设置取消按钮的text 和监听器
@Override
public void onClick(DialogInterface dialog, int whichButton) {
dialog.dismiss();
}
})
.create();
case Const.PROGRESSBAR_WAIT:
ProgressDialog wait_pd = new ProgressDialog(this);
wait_pd.setMessage(Const.SAVHING);
return wait_pd;
}
return null;
}
}