package com.youai.aistore.Product; import java.io.InputStream; import java.util.ArrayList; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.protocol.HTTP; import org.apache.http.util.ByteArrayBuffer; import android.annotation.SuppressLint; import android.app.AlertDialog; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Paint; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.DisplayMetrics; import android.util.Log; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Button; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.nostra13.universalimageloader.core.ImageLoader; import com.youai.aistore.BaseActivity; import com.youai.aistore.CustomProgressDialog; import com.youai.aistore.ExampleActivity; import com.youai.aistore.ImageCycleView; import com.youai.aistore.ImageCycleView.ImageCycleViewListener; import com.youai.aistore.MyApplication; import com.youai.aistore.R; import com.youai.aistore.Util; import com.youai.aistore.Bean.Base; import com.youai.aistore.Bean.CommentsBean; import com.youai.aistore.Bean.GoodsBean; import com.youai.aistore.Bean.ListCommentsBean; import com.youai.aistore.Fclass.FclassFristViewActivity; import com.youai.aistore.Fclass.FclassMoreActivity; import com.youai.aistore.NetInterface.Send; import com.youai.aistore.ShopCart.ShopCartActivity; import com.youai.aistore.xlistview.XListView; import com.youai.aistore.xlistview.XListView.IXListViewListener; /** * 产品详情界面 * * @author * */ public class ProductDetailsActivity extends BaseActivity implements IXListViewListener, OnClickListener { private ImageCycleView topshowic; private WebView webView; private XListView xListView; private View view_webview, view_listview; private TextView tv_shop_price, tv_market_price, tv_title, tv_click_num, tv_image_text_tv, tv_user_comment; private LinearLayout addviewll, call_ll, sms_ll; private LayoutInflater inflater; private Context context; private String URL; private MyTask myTask; private int id, showsatau, page; private GoodsBean bean; private UserCommentAdapter adapter; private ArrayList<CommentsBean> list; private Handler handler,myhandler; private ListCommentsBean listcombean, nextpagelist; private Dialog alertDialog,progressDialog; private Button addshopcartbtn, gopaynowbtn; private Base beanresult; private boolean stat; private String WEB_STYLE = "<style>* {font-size:16px;line-height:20px;} p {color:#333;} a {color:#3E62A6;} img {max-width:100%;} " + "img.alignleft {float:left;max-width:120px;margin:0 10px 5px 0;border:1px solid #ccc;background:#fff;padding:2px;} " + "pre {font-size:9pt;line-height:12pt;font-family:Courier New,Arial;border:1px solid #ddd;border-left:5px solid #6CE26C;background:#f6f6f6;padding:5px;} " + "a.tag {font-size:15px;text-decoration:none;background-color:#bbd6f3;border-bottom:2px solid #3E6D8E;border-right:2px solid #7F9FB6;color:#284a7b;margin:2px 2px 2px 0;padding:2px 4px;white-space:nowrap;}</style>"; @Override protected void onCreate(Bundle arg0) { super.onCreate(arg0); setTitleTxt(R.string.product_title); setContentXml(R.layout.product_details); setTopLeftBackground(R.drawable.btn_back); handler = new Handler(); init(); if (Util.detect(context)) { myTask = new MyTask(1); myTask.execute(""); myTask = new MyTask(2); myTask.execute(""); } else { Util.ShowToast(context, R.string.net_work_is_error); } } @SuppressLint("InflateParams") private void init() { page = 1; showsatau = 0; id = getIntent().getIntExtra("id", -1); context = ProductDetailsActivity.this; inflater = LayoutInflater.from(context); addshopcartbtn = (Button) findViewById(R.id.product_add_shopcart_btn); addshopcartbtn.setOnClickListener(this); gopaynowbtn = (Button) findViewById(R.id.product_gopaynow_btn); gopaynowbtn.setOnClickListener(this); call_ll = (LinearLayout) findViewById(R.id.product_details_call_ll); call_ll.setOnClickListener(this); sms_ll = (LinearLayout) findViewById(R.id.product_details_sms_ll); sms_ll.setOnClickListener(this); view_webview = inflater.inflate(R.layout.product_addview_webview, null); view_listview = inflater.inflate(R.layout.product_addview_listview, null); webView = (WebView) view_webview.findViewById(R.id.product_webview); webView.setFocusable(false); xListView = (XListView) view_listview .findViewById(R.id.product_xListView); xListView.statu = 2; xListView.setFocusable(false); xListView.setPullLoadEnable(true); xListView.setXListViewListener(this); addviewll = (LinearLayout) findViewById(R.id.product_addview_ll); addviewll.addView(view_webview); addviewll.addView(view_listview); view_listview.setVisibility(View.GONE); topshowic = (ImageCycleView) findViewById(R.id.product_details_ic); topshowic.stopImageTimerTask(); topshowic.settime(999999999); tv_shop_price = (TextView) findViewById(R.id.product_shop_price_tv); tv_shop_price.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG); // 下划线 tv_shop_price.getPaint().setAntiAlias(true);// 抗锯齿 tv_market_price = (TextView) findViewById(R.id.product_market_price_tv); tv_market_price.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG); // 中划线 tv_market_price.getPaint().setAntiAlias(true);// 抗锯齿 tv_click_num = (TextView) findViewById(R.id.product_click_num_tv); tv_title = (TextView) findViewById(R.id.product_title_tv); tv_image_text_tv = (TextView) findViewById(R.id.product_image_text_tv); tv_image_text_tv.setOnClickListener(this); tv_user_comment = (TextView) findViewById(R.id.product_user_comment_tv); tv_user_comment.setOnClickListener(this); tv_image_text_tv.setTextColor(getResources().getColor( R.color.home_text_red)); tv_image_text_tv.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG); // 下划线 tv_image_text_tv.getPaint().setAntiAlias(true);// 抗锯齿 tv_user_comment.getPaint().setFlags(0); // 取消设置的的划线 tv_user_comment.setTextColor(getResources().getColor(R.color.black)); // 自适应屏幕 webView .getSettings().setSupportZoom(false); webView.getSettings().setDefaultFontSize(15); webView.getSettings().setBuiltInZoomControls(false); // webView.getSettings().setLayoutAlgorithm( // LayoutAlgorithm.SINGLE_COLUMN); webView.getSettings().setAllowFileAccess(true); webView.setWebViewClient(new MyWebViewClient()); myhandler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); String str = (String) msg.obj; str = str .replaceAll("(<img[^>]*?)\\s+width\\s*=\\s*\\S+", "$1"); str = str.replaceAll("(<img[^>]*?)\\s+height\\s*=\\s*\\S+", "$1"); str += WEB_STYLE; webView.loadDataWithBaseURL(null, str, "text/html", "utf-8", null); } }; } class MyWebViewClient extends WebViewClient { // 重写父类方法,让新打开的网页在当前的WebView中显示 @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return shouldOverrideUrlLoading(view, url); } // 网页开始加载 @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); } // 网页加载完毕 @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); } } private ImageCycleViewListener mAdCycleViewListener = new ImageCycleViewListener() { @Override public void onImageClick(int position, View imageView) { // TODO 单击图片处理事件 } @Override public void displayImage(String imageURL, ImageView imageView) { ImageLoader.getInstance().displayImage(imageURL, imageView); } }; @Override public void onRefresh() { page = 1; myTask = new MyTask(3); myTask.execute(""); } @Override public void onLoadMore() { page += 1; myTask = new MyTask(3); myTask.execute(""); } private class MyTask extends AsyncTask<Object, Object, Object> { private boolean s; private int getstatu = 1; public MyTask(int getstatu) { this.getstatu = getstatu; } private void setdata(boolean s) { this.s = s; } // onPreExecute方法用于在执行后台任务前做一些UI操作 @Override protected void onPreExecute() { if (getstatu == 1 || getstatu == 2) { startProgressDialog(context); } } // doInBackground方法内部执行后台任务,不可在此方法内修改UI @Override protected Object doInBackground(Object... params) { try { if (getstatu == 1) { Send send = new Send(context); bean = send.GetProductDetails(id); return bean; } else if (getstatu == 2) { Send send = new Send(context); listcombean = send.GetProductComments(id, page); return listcombean; } else if (getstatu == 3) { Send send = new Send(context); nextpagelist = send.GetProductComments(id, page); return nextpagelist; } else if (getstatu == 4) { Send send = new Send(context); int good_id = id; int number = 1; String session_id = MyApplication.SessionId; String user_id = MyApplication.UserId; beanresult = send.AddShopCart(good_id, number, session_id, user_id); return beanresult; } } catch (Exception e) { e.printStackTrace(); } return null; } // onProgressUpdate方法用于更新进度信息 @Override protected void onProgressUpdate(Object... progresses) { } // onPostExecute方法用于在执行完后台任务后更新UI,显示结果 @SuppressWarnings("static-access") @Override protected void onPostExecute(Object result) { stopProgressDialog(); if (getstatu == 1) { bean = (GoodsBean) result; if (bean != null) { if (bean.getCode() == 200) { // 图片 topshowic.setImageResources(bean.getPicurls(), mAdCycleViewListener); tv_shop_price.setText("¥" + bean.getShop_price() + "元"); tv_market_price.setText("¥" + bean.getMarket_price() + "元"); tv_click_num.setText(bean.getClick()); tv_title.setText(bean.getTitle()); // TODO webview URL = bean.getGood_desc(); new Thread() { public void run() { Message msg = new Message(); String str = doGetConnect(URL); if (str != null && !str.equals("")) { msg.what = 1; msg.obj = str; } myhandler.sendMessage(msg); }; }.start(); DisplayMetrics dm = new DisplayMetrics();// 获取当前显示的界面大小 getWindowManager().getDefaultDisplay().getMetrics(dm); int height = dm.heightPixels;// 获取当前界面的高度 LinearLayout.LayoutParams linearParams = (LinearLayout.LayoutParams) webView .getLayoutParams(); linearParams.width = linearParams.WRAP_CONTENT; linearParams.height = height;// linearParams.WRAP_CONTENT; webView.setLayoutParams(linearParams); handler.post(new Runnable() { @Override public void run() { DisplayMetrics dm = new DisplayMetrics();// 获取当前显示的界面大小 getWindowManager().getDefaultDisplay() .getMetrics(dm); LinearLayout.LayoutParams linearParams = (LinearLayout.LayoutParams) webView .getLayoutParams(); linearParams.width = linearParams.WRAP_CONTENT; linearParams.height = linearParams.WRAP_CONTENT; webView.setLayoutParams(linearParams); } }); }else if(bean.getCode() == 500){ Util.ShowToast(context, R.string.net_work_is_error); } else { Util.ShowToast(context, bean.getMsg()); } } else { Util.ShowToast(context, R.string.net_work_is_error); } } else if (getstatu == 2) { listcombean = (ListCommentsBean) result; if (listcombean != null) { if (listcombean.getCode() == 200) { list = listcombean.getList(); adapter = new UserCommentAdapter(context, list); xListView.setAdapter(adapter); Util.setListViewHeightBasedOnChildren(xListView); }else if(listcombean.getCode() == 500){ Util.ShowToast(context, R.string.net_work_is_error); } else { Util.ShowToast(context, listcombean.getMsg()); } } else { Util.ShowToast(context, R.string.net_work_is_error); } } else if (getstatu == 3) { onLoad(); nextpagelist = (ListCommentsBean) result; if (nextpagelist != null) { if (nextpagelist.getCode() == 200) { if (nextpagelist.getList().size() > 0) { if (page == 1) { list = nextpagelist.getList(); if (adapter == null) { adapter = new UserCommentAdapter(context, list); xListView.setAdapter(adapter); } else { adapter.setdata(list); adapter.notifyDataSetInvalidated(); } } else { list.addAll(nextpagelist.getList()); if (adapter == null) { adapter = new UserCommentAdapter(context, list); xListView.setAdapter(adapter); } else { adapter.setdata(list); adapter.notifyDataSetInvalidated(); } } Util.setListViewHeightBasedOnChildren(xListView); } else { page-=1; Util.ShowToast(context, R.string.page_is_final); } }else if(nextpagelist.getCode() == 500){ Util.ShowToast(context, R.string.net_work_is_error); } else { Util.ShowToast(context, listcombean.getMsg()); } } else { page -=1; Util.ShowToast(context, R.string.net_work_is_error); } } else if (getstatu == 4) { beanresult = (Base) result; if (beanresult != null) { if (beanresult.getCode() == 200) { if (s) { stat = false; ExampleActivity.setCurrentTab(2); //TODO int fid = getIntent().getIntExtra("finishid", -1); if(fid==1){ FclassFristViewActivity.isfinish = true; }else if(fid == 2){ FclassMoreActivity.isfinish = true; } ShopCartActivity.shopcartchaneged = true; finish(); } else { Util.ShowToast(context, R.string.product_add_shopcart_success); ShopCartActivity.shopcartchaneged = true; } }else if(beanresult.getCode() == 500){ Util.ShowToast(context, R.string.net_work_is_error); } else { Util.ShowToast(context, beanresult.getMsg()); } } else { Util.ShowToast(context, R.string.net_work_is_error); } } } // onCancelled方法用于在取消执行中的任务时更改UI @Override protected void onCancelled() { // stopProgressDialog(); } } @Override public void onClick(View arg0) { switch (arg0.getId()) { case R.id.product_image_text_tv: if (showsatau == 1) { view_listview.setVisibility(View.GONE); view_webview.setVisibility(View.VISIBLE); showsatau = 0; tv_image_text_tv.setTextColor(getResources().getColor( R.color.home_text_red)); tv_image_text_tv.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG); // 下划线 tv_image_text_tv.getPaint().setAntiAlias(true);// 抗锯齿 tv_user_comment.getPaint().setFlags(0); // 取消设置的的划线 tv_user_comment.setTextColor(getResources().getColor( R.color.black)); } break; case R.id.product_user_comment_tv: if (showsatau == 0) { view_webview.setVisibility(View.GONE); view_listview.setVisibility(View.VISIBLE); showsatau = 1; tv_user_comment.setTextColor(getResources().getColor( R.color.home_text_red)); tv_user_comment.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG); // 下划线 tv_user_comment.getPaint().setAntiAlias(true);// 抗锯齿 tv_image_text_tv.getPaint().setFlags(0); // 取消设置的的划线 tv_image_text_tv.setTextColor(getResources().getColor( R.color.black)); } break; case R.id.product_details_call_ll: ShowDialog(1); break; case R.id.product_details_sms_ll: ShowDialog(2); break; case R.id.product_add_shopcart_btn: myTask = new MyTask(4); myTask.execute(""); break; case R.id.product_gopaynow_btn: myTask = new MyTask(4); stat = true; myTask.setdata(stat); myTask.execute(""); break; } } private void onLoad() { xListView.stopRefresh(); xListView.stopLoadMore(); } private void ShowDialog(final int statu) { int index, title; if (statu == 1) { title = R.string.product_iscall; index = R.string.product_cll_tell; } else { title = R.string.product_issms; index = R.string.product_sms_send; } alertDialog = new AlertDialog.Builder(this) .setTitle(title) .setIcon(null) .setPositiveButton(R.string.product_cancle, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }) .setNegativeButton(index, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if (statu == 1) { Intent phoneIntent = new Intent( "android.intent.action.CALL", Uri.parse("tel:" + MyApplication.callnumber)); startActivity(phoneIntent); } else { Uri uri = Uri.parse("smsto:" + MyApplication.smsnumber); Intent ii = new Intent( Intent.ACTION_SENDTO, uri); ii.putExtra("sms_body", ""); startActivity(ii); } } }).create(); alertDialog.show(); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (alertDialog != null && alertDialog.isShowing()) { alertDialog.dismiss(); alertDialog = null; } else if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) { finish(); return true; } return super.onKeyDown(keyCode, event); } /** * 启动Loding... * * @param context */ public void startProgressDialog(Context context) { if (progressDialog == null) { progressDialog = CustomProgressDialog.createDialog(context); } progressDialog.show(); } /** * 关闭Loding... */ public void stopProgressDialog() { if (progressDialog != null && progressDialog.isShowing()) { progressDialog.dismiss(); progressDialog = null; } } final class InJavaScriptLocalObj { public void showSource(String html) { System.out.println("====>iamge="+html); Util.ShowToast(context, html); } } private String doGetConnect(String url) { String result = ""; InputStream is = null; HttpGet httpRequest = new HttpGet(url); try { HttpResponse httpResponse = new DefaultHttpClient() .execute(httpRequest); if (httpResponse.getStatusLine().getStatusCode() == 200) { // 正确 is = httpResponse.getEntity().getContent(); byte[] data = new byte[1024]; int n = -1; ByteArrayBuffer buf = new ByteArrayBuffer(10 * 1024); while ((n = is.read(data)) != -1) buf.append(data, 0, n); result = new String(buf.toByteArray(), HTTP.UTF_8); Log.v("result==", result); is.close(); return result; } else { Log.v("tip==", "error response code"); } } catch (Exception e) { Log.e("error==", "" + e.getMessage()); } return null; } }