package com.ccxt.whl.gushi; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.apache.http.Header; import com.ccxt.whl.Constant; import com.ccxt.whl.DemoApplication; import com.ccxt.whl.R; import com.ccxt.whl.utils.CommonUtils; import com.ccxt.whl.utils.DeviceUuidFactory; import com.ccxt.whl.utils.HttpRestClient; import com.ccxt.whl.utils.ImageOptions; import com.ccxt.whl.utils.JsonToMapList; import com.ccxt.whl.utils.MyLogger; import com.ccxt.whl.utils.PreferenceUtils; import com.loopj.android.http.BaseJsonHttpResponseHandler; import com.loopj.android.http.RequestParams; import com.nostra13.universalimageloader.core.ImageLoader; import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Color; import android.graphics.Rect; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.ColorDrawable; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; import android.text.Editable; import android.text.Selection; import android.text.Spannable; import android.text.TextWatcher; import android.view.Gravity; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; import android.view.ViewTreeObserver.OnGlobalLayoutListener; import android.view.ViewTreeObserver.OnPreDrawListener; import android.view.animation.AnimationUtils; import android.view.inputmethod.InputMethodManager; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.GridView; import android.widget.HorizontalScrollView; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.PopupWindow; import android.widget.ScrollView; import android.widget.TextView; import android.widget.Toast; import android.widget.AdapterView.OnItemClickListener; public class PublishActivity extends Activity implements OnItemClickListener { private GridView gridview; private GridAdapter adapter; private LinearLayout activity_selectimg_send; // private ImageView back; private LinearLayout back; private EditText comment_content; /*************输入限制************/ private static final int MAX_COUNT = 140; private TextView mTextView = null; /*************输入限制end************/ private String temp; private Button selectimg_bt_content_type, selectimg_bt_search; //private LinearLayout selectimg_relativeLayout_below; private LinearLayout pic_add; //private ScrollView activity_selectimg_scrollView; private HorizontalScrollView selectimg_horizontalScrollView; private List<String> categoryList; private float dp; public List<Bitmap> bmp = new ArrayList<Bitmap>(); public List<String> drr = new ArrayList<String>(); List<String> urList = new ArrayList<String>(); private ProgressDialog pd;//添加loading条 //新增设备唯一id private static String uid = null; private static MyLogger Log = MyLogger.yLog(); protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.gushi_publish_activity); /****************配置必要参数****************/ DeviceUuidFactory uuid = new DeviceUuidFactory(PublishActivity.this); uid = uuid.getDeviceUuid().toString(); //获取设备唯一id pd = new ProgressDialog(PublishActivity.this); pd.setMessage("正在提交请求..."); /*****************配置必要参数***************/ Init(); //实例化字数统计控件 mTextView = (TextView) findViewById(R.id.count); setLeftCount(); } public void Init() { dp = getResources().getDimension(R.dimen.dp); comment_content = (EditText) findViewById(R.id.comment_content); comment_content.setFocusable(true); comment_content.setFocusableInTouchMode(true); //添加字数统计监听 comment_content.addTextChangedListener(mTextWatcher); back = (LinearLayout) findViewById(R.id.back); back.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if(bmp.size()>0||comment_content.getText().length()>0){ new AlertDialog.Builder(PublishActivity.this) .setTitle("要放弃发布故事吗?") .setPositiveButton("确定", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { PublishActivity.this.finish(); dialog.dismiss(); //设置你的操作事项 } }) .setNegativeButton("取消", null) .show(); }else{ PublishActivity.this.finish(); } } }); selectimg_horizontalScrollView = (HorizontalScrollView) findViewById(R.id.selectimg_horizontalScrollView); gridview = (GridView) findViewById(R.id.noScrollgridview); gridview.setSelector(new ColorDrawable(Color.TRANSPARENT)); gridviewInit(); comment_content.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub temp = s.toString(); } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub } }); activity_selectimg_send = (LinearLayout) findViewById(R.id.activity_selectimg_send); activity_selectimg_send.setOnClickListener(new OnClickListener() { public void onClick(View v) { /*if (bmp.size() < 1) { Toast.makeText(getApplicationContext(), "至少需要一张图片", Toast.LENGTH_SHORT).show(); return; }*/ if (bmp.size() > 3) { Toast.makeText(getApplicationContext(), "每次发布最多三张图片", Toast.LENGTH_SHORT).show(); return; } ((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE)) .hideSoftInputFromWindow(PublishActivity.this .getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); String content = comment_content.getText().toString().trim(); String content_str = null;//要发布的文字 try { content_str = URLEncoder.encode(content,"UTF-8"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (content.equals("")) { Toast.makeText(getApplicationContext(), "发布的内容不能为空", Toast.LENGTH_SHORT).show(); return; } for (int i = 0; i < drr.size(); i++) { urList.add(drr.get(i)); } //System.out.println(urList.toString()); publish_gushi(urList, content_str);//发布故事事件 // 图片地址 urList; } private void publish_gushi(final List<String> urList, String content) { activity_selectimg_send.setEnabled(false); pd.show(); //System.out.println("=================="+urList.size()); RequestParams params = new RequestParams(); for(int i=0;i<urList.size();i++){ File file = new File(urList.get(i)); try { params.put("pic"+i, file,"image/jpeg"); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } params.add("content", content); params.put("user", DemoApplication.getInstance().getUser()); params.put("picnum", urList.size());//发布图片数量 params.add("uid", uid); params.add("jwd", PreferenceUtils.getInstance(PublishActivity.this).getSettingUserloc()); HttpRestClient.post(Constant.GUSHI_PUBLISH, params, new BaseJsonHttpResponseHandler() { @Override public void onSuccess(int statusCode, Header[] headers, String rawJsonResponse, Object response) { urList.clear(); Log.d("publish_qes"+rawJsonResponse ); pd.dismiss(); activity_selectimg_send.setEnabled(true); if(CommonUtils.isNullOrEmpty(rawJsonResponse)){ Toast.makeText(PublishActivity.this, "您的网络不稳定,请检查网络!", 0).show(); return; } Map<String, Object> lm = JsonToMapList.getMap(rawJsonResponse); if(lm.get("status").toString() != null && lm.get("status").toString().equals("yes")){ Toast.makeText(PublishActivity.this, "更新成功", 0).show(); Log.d("message=="+lm.get("message").toString()); comment_content.setText(""); bmp.clear(); adapter.notifyDataSetChanged(); }else{ Toast.makeText(PublishActivity.this, lm.get("message").toString(), 0).show(); Log.d("message=="+lm.get("message").toString()); } } @Override public void onFailure(int statusCode, Header[] headers, Throwable throwable, String rawJsonData, Object errorResponse) { pd.dismiss(); Toast.makeText(PublishActivity.this, "您的网络不稳定,请稍后再试", 0).show(); activity_selectimg_send.setEnabled(true); urList.clear(); // TODO Auto-generated method stub } @Override protected Object parseResponse(String rawJsonData, boolean isFailure) throws Throwable { // TODO Auto-generated method stub return null; } }); // params.put("pic1", file,"image/jpeg"); // params.put("pic2", file,"image/jpeg"); // params.put("pic3", file,"image/jpeg"); //params.put("user", DemoApplication.getInstance().getUser()); //params.put("param", "headurl"); //params.add("uid", uid); // HttpRestClient.post(Constant.UPDATE_USER_URL, params, responseHandler); // pd.show(); /* RequestParams params = new RequestParams(); final String contentType = RequestParams.APPLICATION_OCTET_STREAM; params.put("fileOne", , contentType); params.put("fileTwo", , contentType); params.put("fileThree", , contentType); params.put("fileFour", , contentType); params.put("fileFive",, contentType); // client.post(this, URL, params, responseHandler); * * * * * *@Override public void onSuccess(int statusCode, Header[] headers, String rawJsonResponse, Object response) { // TODO Auto-generated method stub Log.d("publish_qes",rawJsonResponse ); pd.dismiss(); activity_selectimg_send.setEnabled(true); if(CommonUtils.isNullOrEmpty(rawJsonResponse)){ Toast.makeText(PublishActivity.this, "您的网络不稳定,请检查网络!", 0).show(); return; } Map<String, Object> lm = JsonToMapList.getMap(rawJsonResponse); if(lm.get("status").toString() != null && lm.get("status").toString().equals("yes")){ Toast.makeText(PublishActivity.this, "更新成功", 0).show(); Log.d("log","message=="+lm.get("message").toString()); }else{ Toast.makeText(PublishActivity.this, lm.get("message").toString(), 0).show(); Log.d("log","message=="+lm.get("message").toString()); } } @Override public void onFailure(int statusCode, Header[] headers, Throwable throwable, String rawJsonData, Object errorResponse) { // TODO Auto-generated method stub pd.dismiss(); Toast.makeText(PublishActivity.this, "您的网络不稳定,请稍后再试", 0).show(); activity_selectimg_send.setEnabled(true); } @Override protected Object parseResponse(String rawJsonData, boolean isFailure) throws Throwable { // TODO Auto-generated method stub System.out.println("================="+rawJsonData); pd.dismiss(); Toast.makeText(PublishActivity.this, "您的网络不稳定,请稍后再试", 0).show(); activity_selectimg_send.setEnabled(true); return null; } * */ } }); /*******************************************暂时未知以下代码作用***************************************************/ // selectimg_relativeLayout_below = (LinearLayout) findViewById(R.id.selectimg_relativeLayout_below); //activity_selectimg_scrollView = (ScrollView) findViewById(R.id.activity_selectimg_scrollView); //activity_selectimg_scrollView.setVerticalScrollBarEnabled(false); pic_add = (LinearLayout) findViewById(R.id.pic_add); final View decorView = getWindow().getDecorView(); final WindowManager wm = this.getWindowManager(); decorView.getViewTreeObserver().addOnGlobalLayoutListener( new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { @SuppressWarnings("deprecation") int displayheight = wm.getDefaultDisplay().getHeight(); Rect rect = new Rect(); decorView.getWindowVisibleDisplayFrame(rect); int dynamicHight = rect.bottom - rect.top; float ratio = (float) dynamicHight / (float) displayheight; if (ratio > 0.2f && ratio < 0.6f) { // selectimg_relativeLayout_below // .setVisibility(View.VISIBLE); // activity_selectimg_scrollView.scrollBy(0, // activity_selectimg_scrollView.getHeight()); pic_add.setVisibility(View.GONE); } else { // selectimg_relativeLayout_below // .setVisibility(View.GONE); pic_add.setVisibility(View.VISIBLE); } } }); /*****************************************暂时未知以上代码作用***************************************************/ } public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { if(bmp.size()>0||comment_content.getText().length()>0){ new AlertDialog.Builder(PublishActivity.this) .setTitle("要放弃发布故事吗?") .setPositiveButton("确定", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { PublishActivity.this.finish(); dialog.dismiss(); //设置你的操作事项 } }) .setNegativeButton("取消", null) .show(); }else{ PublishActivity.this.finish(); } return true; } else { return super.onKeyDown(keyCode, event); } } public void gridviewInit() { adapter = new GridAdapter(this); adapter.setSelectedPosition(0); int size = 0; if (bmp.size() < 6) { size = bmp.size() + 1; } else { size = bmp.size(); } LayoutParams params = gridview.getLayoutParams(); final int width = size * (int) (dp * 9.4f); params.width = width; gridview.setLayoutParams(params); gridview.setColumnWidth((int) (dp * 9.4f)); gridview.setStretchMode(GridView.NO_STRETCH); gridview.setNumColumns(size); gridview.setAdapter(adapter); gridview.setOnItemClickListener(this); selectimg_horizontalScrollView.getViewTreeObserver() .addOnPreDrawListener(// 绘制完毕 new OnPreDrawListener() { public boolean onPreDraw() { selectimg_horizontalScrollView.scrollTo(width, 0); selectimg_horizontalScrollView .getViewTreeObserver() .removeOnPreDrawListener(this); return false; } }); } protected void onPause() { // TODO Auto-generated method stub super.onPause(); } public class GridAdapter extends BaseAdapter { private LayoutInflater listContainer; private int selectedPosition = -1; private boolean shape; public boolean isShape() { return shape; } public void setShape(boolean shape) { this.shape = shape; } public class ViewHolder { public ImageView image; public Button bt; } public GridAdapter(Context context) { listContainer = LayoutInflater.from(context); } public int getCount() { if (bmp.size() < 6) { return bmp.size() + 1; } else { return bmp.size(); } } public Object getItem(int arg0) { return null; } public long getItemId(int arg0) { return 0; } public void setSelectedPosition(int position) { selectedPosition = position; } public int getSelectedPosition() { return selectedPosition; } /** * ListView Item设置 */ public View getView(int position, View convertView, ViewGroup parent) { final int sign = position; // 自定义视图 ViewHolder holder = null; if (convertView == null) { holder = new ViewHolder(); // 获取list_item布局文件的视图 convertView = listContainer.inflate( R.layout.gushi_item_published_grida, null); // 获取控件对象 holder.image = (ImageView) convertView .findViewById(R.id.item_grida_image); holder.bt = (Button) convertView .findViewById(R.id.item_grida_bt); // 设置控件集到convertView convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } if (position == bmp.size()) { holder.image.setImageBitmap(BitmapFactory.decodeResource( getResources(), R.drawable.icon_addpic_unfocused)); holder.bt.setVisibility(View.GONE); if (position == 6) { holder.image.setVisibility(View.GONE); } } else { holder.image.setImageBitmap(bmp.get(position)); holder.bt.setOnClickListener(new OnClickListener() { public void onClick(View v) { PhotoActivity.bitmap.remove(sign); bmp.get(sign).recycle(); bmp.remove(sign); drr.remove(sign); gridviewInit(); } }); } return convertView; } } public class PopupWindows extends PopupWindow { public PopupWindows(Context mContext, View parent) { View view = View .inflate(mContext, R.layout.gushi_select_popupwindows, null); view.startAnimation(AnimationUtils.loadAnimation(mContext, R.anim.fade_ins)); LinearLayout ll_popup = (LinearLayout) view .findViewById(R.id.ll_popup); // ll_popup.startAnimation(AnimationUtils.loadAnimation(mContext, // R.anim.push_bottom_in_2)); setWidth(LayoutParams.FILL_PARENT); setHeight(LayoutParams.FILL_PARENT); setBackgroundDrawable(new BitmapDrawable()); setFocusable(true); setOutsideTouchable(true); setContentView(view); showAtLocation(parent, Gravity.BOTTOM, 0, 0); update(); Button bt1 = (Button) view .findViewById(R.id.item_popupwindows_camera); Button bt2 = (Button) view .findViewById(R.id.item_popupwindows_Photo); Button bt3 = (Button) view .findViewById(R.id.item_popupwindows_cancel); bt1.setOnClickListener(new OnClickListener() { public void onClick(View v) { photo(); dismiss(); } }); bt2.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent i = new Intent( // 相册 Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(i, RESULT_LOAD_IMAGE); dismiss(); } }); bt3.setOnClickListener(new OnClickListener() { public void onClick(View v) { dismiss(); } }); } } private static final int TAKE_PICTURE = 0; private static final int RESULT_LOAD_IMAGE = 1; private static final int CUT_PHOTO_REQUEST_CODE = 2; private static final int SELECTIMG_SEARCH = 3; private String path = ""; private Uri photoUri; public void photo() { try { Intent openCameraIntent = new Intent( MediaStore.ACTION_IMAGE_CAPTURE); String sdcardState = Environment.getExternalStorageState(); String sdcardPathDir = android.os.Environment .getExternalStorageDirectory().getPath() + Constant.CACHE_DIR+"/photo/"; //String sdcardPathDir = FileUtils.SDPATH1; File file = null; if (Environment.MEDIA_MOUNTED.equals(sdcardState)) { // 有sd卡,是否有myImage文件夹 File fileDir = new File(sdcardPathDir); if (!fileDir.exists()) { fileDir.mkdirs(); } // 是否有headImg文件 file = new File(sdcardPathDir + System.currentTimeMillis() + ".jpg"); } if (file != null) { path = file.getPath(); photoUri = Uri.fromFile(file); openCameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri); startActivityForResult(openCameraIntent, TAKE_PICTURE); } } catch (Exception e) { e.printStackTrace(); } } protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case TAKE_PICTURE: if (drr.size() < 6 && resultCode == -1) {// 拍照 startPhotoZoom(photoUri); } break; case RESULT_LOAD_IMAGE: if (drr.size() < 6 && resultCode == RESULT_OK && null != data) {// 相册返回 Uri uri = data.getData(); if (uri != null) { startPhotoZoom(uri); } } break; case CUT_PHOTO_REQUEST_CODE: if (resultCode == RESULT_OK && null != data) {// 裁剪返回 Bitmap bitmap = Bimp.getLoacalBitmap(drr.get(drr.size() - 1)); PhotoActivity.bitmap.add(bitmap); bitmap = Bimp.createFramedPhoto(480, 480, bitmap, (int) (dp * 1.6f)); bmp.add(bitmap); gridviewInit(); } break; case SELECTIMG_SEARCH: if (resultCode == RESULT_OK && null != data) { String text = "#" + data.getStringExtra("topic") + "#"; text = comment_content.getText().toString() + text; comment_content.setText(text); comment_content.getViewTreeObserver().addOnPreDrawListener( new OnPreDrawListener() { public boolean onPreDraw() { comment_content.setEnabled(true); // 设置光标为末尾 CharSequence cs = comment_content.getText(); if (cs instanceof Spannable) { Spannable spanText = (Spannable) cs; Selection.setSelection(spanText, cs.length()); } comment_content.getViewTreeObserver() .removeOnPreDrawListener(this); return false; } }); } break; } } private void startPhotoZoom(Uri uri) { try { /****判断目录是否已存在****/ String sdcardPathDir = android.os.Environment .getExternalStorageDirectory().getPath() + Constant.CACHE_DIR+"/photo/"; //String sdcardPathDir = FileUtils.SDPATH1; File file = null; // 有sd卡,是否有myImage文件夹 File fileDir = new File(sdcardPathDir); if (!fileDir.exists()) { fileDir.mkdirs(); } /****判断目录是否已存在end****/ // 获取系统时间 然后将裁剪后的图片保存至指定的文件夹 SimpleDateFormat sDateFormat = new SimpleDateFormat( "yyyyMMddhhmmss"); String address = sDateFormat.format(new java.util.Date()); if (!FileUtils.isFileExist("")) { FileUtils.createSDDir(""); } drr.add(FileUtils.SDPATH + address + ".jpg"); //Uri imageUri = Uri.parse("file:///sdcard/formats/" + address // + ".jpg"); //这里需要和FileUtils.SDPATH 一致,而且在之前要创建文件夹 Uri imageUri = Uri.parse("file:///sdcard/"+Constant.CACHE_DIR+"/photo/thumb" + address + ".jpg"); System.out.println("uri===="+ FileUtils.SDPATH + address + ".jpg"); final Intent intent = new Intent("com.android.camera.action.CROP"); // 照片URL地址 intent.setDataAndType(uri, "image/*"); intent.putExtra("crop", "true"); intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); intent.putExtra("outputX", 480); intent.putExtra("outputY", 480); // 输出路径 intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); // 输出格式 intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString()); // 不启用人脸识别 intent.putExtra("noFaceDetection", false); intent.putExtra("return-data", false); startActivityForResult(intent, CUT_PHOTO_REQUEST_CODE); } catch (IOException e) { e.printStackTrace(); } } protected void onDestroy() { FileUtils.deleteDir(FileUtils.SDPATH); FileUtils.deleteDir(FileUtils.SDPATH1); // 清理图片缓存 for (int i = 0; i < bmp.size(); i++) { bmp.get(i).recycle(); } for (int i = 0; i < PhotoActivity.bitmap.size(); i++) { PhotoActivity.bitmap.get(i).recycle(); } PhotoActivity.bitmap.clear(); bmp.clear(); drr.clear(); super.onDestroy(); } public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { ((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE)) .hideSoftInputFromWindow(PublishActivity.this .getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); if (arg2 == bmp.size()) { String sdcardState = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(sdcardState)) { new PopupWindows(PublishActivity.this, gridview); } else { Toast.makeText(getApplicationContext(), "sdcard已拔出,不能选择照片", Toast.LENGTH_SHORT).show(); } } else { Intent intent = new Intent(PublishActivity.this, PhotoActivity.class); intent.putExtra("ID", arg2); startActivity(intent); } } /**********************************************editext输入限制方法******************************************/ private TextWatcher mTextWatcher = new TextWatcher() { private int editStart; private int editEnd; public void afterTextChanged(Editable s) { editStart = comment_content.getSelectionStart(); editEnd = comment_content.getSelectionEnd(); // 先去掉监听器,否则会出现栈溢出 comment_content.removeTextChangedListener(mTextWatcher); // 注意这里只能每次都对整个EditText的内容求长度,不能对删除的单个字符求长度 // 因为是中英文混合,单个字符而言,calculateLength函数都会返回1 while (calculateLength(s.toString()) > MAX_COUNT) { // 当输入字符个数超过限制的大小时,进行截断操作 s.delete(editStart - 1, editEnd); editStart--; editEnd--; } comment_content.setText(s); comment_content.setSelection(editStart); // 恢复监听器 comment_content.addTextChangedListener(mTextWatcher); setLeftCount(); } public void beforeTextChanged(CharSequence s, int start, int count, int after) { } public void onTextChanged(CharSequence s, int start, int before, int count) { } }; /** * 计算分享内容的字数,一个汉字=两个英文字母,一个中文标点=两个英文标点 注意:该函数的不适用于对单个字符进行计算,因为单个字符四舍五入后都是1 * * @param c * @return */ private long calculateLength(CharSequence c) { double len = 0; for (int i = 0; i < c.length(); i++) { int tmp = (int) c.charAt(i); if (tmp > 0 && tmp < 127) { len += 0.5; } else { len++; } } return Math.round(len); } /** * 刷新剩余输入字数,最大值新浪微博是140个字,人人网是200个字 */ private void setLeftCount() { mTextView.setText(String.valueOf((MAX_COUNT - getInputCount()))); } /** * 获取用户输入的分享内容字数 * * @return */ private long getInputCount() { return calculateLength(comment_content.getText().toString()); } }