package com.snail.travellingTrail.travelNotes.controller; import java.io.UnsupportedEncodingException; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpEntity; import org.apache.http.entity.StringEntity; import net.tsz.afinal.FinalBitmap; import net.tsz.afinal.FinalHttp; import net.tsz.afinal.bitmap.core.BitmapDisplayConfig; import net.tsz.afinal.bitmap.display.Displayer; import net.tsz.afinal.http.AjaxCallBack; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.jankey.NoScrollingListView; import com.snail.travellingTrail.R; import com.snail.travellingTrail.common.RequestAddress; import com.snail.travellingTrail.common.TravellingTrailApplication; import com.snail.travellingTrail.common.utils.BitmapUtil; import com.snail.travellingTrail.common.utils.DialogTool; import com.snail.travellingTrail.common.utils.PhoneInfo; import com.snail.travellingTrail.common.utils.ToastHelper; import com.snail.travellingTrail.trailMap.controller.CommentActivity; import com.snail.travellingTrail.trailMap.controller.TrailMapActivity; import com.snail.travellingTrail.trailMap.controller.WriteCommentActivity; import com.snail.travellingTrail.trailMap.model.Footprint; import com.snail.travellingTrail.trailMap.model.FootprintContent; import com.snail.travellingTrail.travelNotes.model.MapImage; import com.snail.travellingTrail.travelNotes.model.TravelInformation; import com.snail.travellingTrail.travelNotes.model.TravelNotesProcessor; import com.snail.travellingTrail.user.controller.MyPageActivity; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.FrameLayout.LayoutParams; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; public class TravelNotesActivity extends Activity implements OnClickListener { NoScrollingListView listView; TextView commentTextView, timeIntervalTextView, titleTextView, introductionTextView, nicknameTextView, likeTextView; ImageView avatarImageView, mapImageView, pressImageView; TravelNotesAdapter adapter; LinearLayout commentLinearLayout, likeLinearLayout; TravelInformation travelInformation; List<Footprint> footprints; List<FootprintContent> footprintContents; FinalHttp finalHttp; FinalBitmap mapFinalBitmap, avatarFinalBitmap; BitmapDisplayConfig bitmapDisplayConfig; long travelId; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_travel_notes); findviews(); init(); getMapFootprints(); getTravelNotesInformation(); setListener(); // setListView(); // setListViewListener(); } private void findviews() { listView = (NoScrollingListView)findViewById(R.id.act_travel_notes_lv); commentLinearLayout = (LinearLayout)findViewById(R.id.act_travel_notes_llyt_comment); commentTextView = (TextView) findViewById(R.id.act_travel_notes_tv_comment); titleTextView = (TextView) findViewById(R.id.act_travel_notes_tv_title); timeIntervalTextView = (TextView) findViewById(R.id.act_travel_notes_tv_time_interval); nicknameTextView = (TextView) findViewById(R.id.act_travel_notes_tv_nickname); introductionTextView = (TextView) findViewById(R.id.act_travel_notes_tv_introduction); likeTextView = (TextView) findViewById(R.id.act_travel_notes_tv_like); likeLinearLayout = (LinearLayout)findViewById(R.id.act_travel_notes_llyt_like); avatarImageView = (ImageView) findViewById(R.id.act_travel_notes_iv_avatar); mapImageView = (ImageView) findViewById(R.id.act_travel_notes_iv_map); pressImageView = (ImageView) findViewById(R.id.act_travel_notes_iv_press); } private void init() { travelId = Long.valueOf(getIntent().getExtras().getString("travelId")); // travelId = 1; PhoneInfo.loadScreenInfo(TravelNotesActivity.this); LayoutParams layoutParams = (LayoutParams) mapImageView.getLayoutParams(); layoutParams.width = PhoneInfo.screenWidthPx; //800为地图图片原始宽度,1000为原始高度 layoutParams.height = (int) (PhoneInfo.screenWidthPx * ( 800f / 1000f)); System.out.println("LayoutParams:width x height --- " + layoutParams.width + "x" + layoutParams.height); mapImageView.setLayoutParams(layoutParams); pressImageView.setLayoutParams(layoutParams); System.out.println("mapImageView:width x height --- " + mapImageView.getLayoutParams().width + "x" + mapImageView.getLayoutParams().height); footprintContents = new ArrayList<FootprintContent>(); mapFinalBitmap = FinalBitmap.create(TravelNotesActivity.this); avatarFinalBitmap = FinalBitmap.create(TravelNotesActivity.this); finalHttp = new FinalHttp(); } private void setListView() { // // 设置下拉刷新的样式 // SimpleHeader header = new SimpleHeader(this); // header.setTextColor(getResources().getColor(R.color.aurantium)); // header.setCircleColor(getResources().getColor(R.color.aurantium)); // listView.setHeadable(header); // // // 设置加载更多的样式 // SimpleFooter footer = new SimpleFooter(this); // footer.setCircleColor(getResources().getColor(R.color.aurantium)); // listView.setFootable(footer); // setAdapter(); } private void setAdapter() { adapter = new TravelNotesAdapter(TravelNotesActivity.this, footprintContents); listView.setAdapter(adapter); } private void setListener() { pressImageView.setOnClickListener(this); likeLinearLayout.setOnClickListener(this); } private void setListViewListener() { // listView.setOnRefreshStartListener(new OnStartListener() // { // @Override // public void onStart() // { // getTravelNotesData(); // } // }); } private void getMapFootprints() { DialogTool.showProgressDialog(TravelNotesActivity.this, "加载中...客官请稍等哈~"); finalHttp.get(RequestAddress.GET_TRAVEL_MAP_FOOTPRINTS + travelId, new AjaxCallBack<String>(){ @Override public void onFailure(Throwable t, int errorNo, String strMsg) { if (strMsg != null) { Log.v("onFailure", strMsg); ToastHelper.showToast(TravelNotesActivity.this, "加载失败,错误代码:" + errorNo + "\n错误信息:\n" + strMsg, Toast.LENGTH_SHORT); } else{ ToastHelper.showToast(TravelNotesActivity.this, "加载失败,错误代码:" + errorNo, Toast.LENGTH_SHORT); } // listView.refresh(); } @Override public void onSuccess(String result) { Log.v("onSuccess", result); Type type = new TypeToken<ArrayList<Footprint>>(){ }.getType(); Gson gson = new Gson(); footprints = gson.fromJson(result, type); getMapImage(); // listView.refresh(); } }); } private void getMapImage() { bitmapDisplayConfig = new BitmapDisplayConfig(); bitmapDisplayConfig.setBitmapWidth(mapImageView.getLayoutParams().width); // 800为地图图片原始宽度,1000为原始高度 bitmapDisplayConfig.setBitmapHeight(mapImageView.getLayoutParams().height); mapFinalBitmap.configDisplayer(new Displayer() { @Override public void loadFailDisplay(View imageView, Bitmap bitmap) { } @Override public void loadCompletedisplay(View view, Bitmap bitmap, BitmapDisplayConfig arg2) { System.out.println("Map Bitmap Origin:width x height --- " + bitmap.getWidth() + "x" + bitmap.getHeight()); bitmap = BitmapUtil.compressAccordingToWidth(bitmap, PhoneInfo.screenWidthPx); System.out.println("Map Bitmap Compressed:width x height --- " + bitmap.getWidth() + "x" + bitmap.getHeight()); ((ImageView)view).setImageBitmap(bitmap); getTravelNotesData(); } }); if (footprints.size() < 1) { mapFinalBitmap.display(mapImageView, MapImage.getNoneMapUrl(), bitmapDisplayConfig); } else { mapFinalBitmap.display(mapImageView, MapImage.getSingleTravelMapImgUrl(footprints, TravelNotesActivity.this), bitmapDisplayConfig); } } private void getTravelNotesInformation() { finalHttp.get(RequestAddress.GET_TRAVEL_NOTES_INTRODUCTION + travelId, new AjaxCallBack<String>(){ @Override public void onFailure(Throwable t, int errorNo, String strMsg) { DialogTool.cancelProgressDialog(); if (strMsg != null) { Log.v("onFailure", strMsg); ToastHelper.showToast(TravelNotesActivity.this, "加载失败,错误代码:" + errorNo + "\n错误信息:\n" + strMsg, Toast.LENGTH_SHORT); } else{ ToastHelper.showToast(TravelNotesActivity.this, "加载失败,错误代码:" + errorNo, Toast.LENGTH_SHORT); } } @Override public void onSuccess(String request) { DialogTool.cancelProgressDialog(); Log.v("onSuccess", request); Gson gson = new Gson(); travelInformation = gson.fromJson(request, TravelInformation.class); avatarFinalBitmap.display(avatarImageView, travelInformation.getUs_Avatar()); nicknameTextView.setText( travelInformation.getUs_Nickname()); titleTextView.setText( travelInformation.getTrvl_Name()); String endTime = (travelInformation.getTrvl_Time_End() != null && !travelInformation.getTrvl_Time_End().equals("") && !travelInformation.getTrvl_Time_End().equals("null") ) ? travelInformation.getTrvl_Time_End().substring(0, 10) : "未知"; timeIntervalTextView.setText(travelInformation.getTrvl_Time_Start().substring(0, 10) + " 至 " + endTime ); introductionTextView.setText(travelInformation.getTrvl_Introduce()); if (travelInformation.getTrvl_Comment_Count() > 0) { commentTextView.setText(String.valueOf(travelInformation.getTrvl_Comment_Count())); } if (travelInformation.getTrvl_Like_Count() > 0) { likeTextView.setText(String.valueOf(travelInformation.getTrvl_Like_Count())); } setCommentBtnListener(); } }); } private void setCommentBtnListener() { commentLinearLayout.setOnClickListener(this); } private void getTravelNotesData() { finalHttp.get(RequestAddress.GET_TRAVEL_FOOTPRINTS + travelId, new AjaxCallBack<String>(){ @Override public void onFailure(Throwable t, int errorNo, String strMsg) { if (strMsg != null) { Log.v("onFailure", strMsg); } // listView.setRefreshFail(); } @Override public void onSuccess(String request) { Log.v("onSuccess", request); Type type = new TypeToken<ArrayList<Footprint>>(){ }.getType(); Gson gson = new Gson(); footprints = gson.fromJson(request, type); footprintContents = TravelNotesProcessor.listTheTravelNotesContents(footprints); adapter = new TravelNotesAdapter(TravelNotesActivity.this, footprintContents); listView.setAdapter(adapter); // adapter.setFootprintContents(footprintContents); // adapter.notifyDataSetChanged(); // listView.setRefreshSuccess(); } }); } @Override public void onClick(View v) { Intent intent = new Intent(); switch (v.getId()) { case R.id.act_travel_notes_llyt_comment: switch (travelInformation.getTrvl_Comment_Count()) { case 0: intent.setClass(TravelNotesActivity.this, WriteTravelCommentActivity.class); break; default: intent.setClass(TravelNotesActivity.this, TravelCommentActivity.class); break; } intent.putExtra("travelId", travelId); startActivity(intent); break; case R.id.act_travel_notes_iv_press: intent.setClass(TravelNotesActivity.this, TrailMapActivity.class); intent.putExtra("travelId", travelId); startActivity(intent); break; case R.id.act_travel_notes_llyt_like: sendLike(); break; default: break; } } private void sendLike() { if (TravellingTrailApplication.loginUser == null) { ToastHelper.showToast(TravelNotesActivity.this, "请先登录", Toast.LENGTH_SHORT); return; } String jsonString = "{\"Trvl_Likes_Trvls_Id\":" + travelId + ",\"Trvl_Likes_Us_Id\":" + TravellingTrailApplication.loginUser.getUs_Info_Us_Id() + "}"; HttpEntity entity; try { entity = new StringEntity(jsonString); FinalHttp finalHttp = new FinalHttp(); // finalHttp.post(RequestAddress.SEND_TRAVEL_COMMENT, entity, "application/json", // new AjaxCallBack<String>() // { // // @Override // public void onFailure(Throwable t, int errorNo, // String strMsg) // { // DialogTool.cancelProgressDialog(); // if (strMsg != null) // { // ToastHelper.showToast(TravelNotesActivity.this, // "失败,错误代码:" + errorNo + "\n错误信息:" + strMsg, // Toast.LENGTH_SHORT); // } // } // // @Override // public void onSuccess(String result) // { // Log.v("TravelNotesActivity-->sendLike", "onSuccess result--->" + result); // ToastHelper.showToast(TravelNotesActivity.this, "发送成功", // Toast.LENGTH_SHORT); if (likeTextView.getText().toString() != null && !likeTextView.getText().toString().equals("")) { likeTextView.setText( (Integer.valueOf(likeTextView.getText().toString()) + 1) + ""); } else { likeTextView.setText("1"); } // } // // }); } catch (UnsupportedEncodingException e1) { e1.printStackTrace(); } } }