diff --git a/.idea/compiler.xml b/.idea/compiler.xml index fb7f4a8..61a9130 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 2daba66..9a51d79 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -5,13 +5,22 @@ + + + - + diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml deleted file mode 100644 index e497da9..0000000 --- a/.idea/runConfigurations.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/java/com/sl/house_property/MainFragment.java b/app/src/main/java/com/sl/house_property/MainFragment.java index 9d78d74..149d5ad 100644 --- a/app/src/main/java/com/sl/house_property/MainFragment.java +++ b/app/src/main/java/com/sl/house_property/MainFragment.java @@ -97,6 +97,7 @@ import utils.JsonUtils; import utils.KeyboardUtil; import utils.Md5; import utils.SPUtils; +import utils.TimeUtils; import utils.UtilHelpers; @@ -847,7 +848,7 @@ public class MainFragment extends BaseFragment implements V } }); - + homeGridAdapterItemBinding.tvTime.setText(TimeUtils.getRecentTimeSpanByNow(TimeUtils.dataOne(discoveryListEntity.getCtime()))); if (discoveryListEntity.getLike().isEmpty()) { homeGridAdapterItemBinding.tvLike.setVisibility(View.GONE); @@ -864,7 +865,7 @@ public class MainFragment extends BaseFragment implements V } homeGridAdapterItemBinding.tvLike.setText(likeString.toString()); - homeGridAdapterItemBinding.tvTime.setText(DateUtils.getDate(discoveryListEntity.getCtime())); + } if (discoveryListEntity.getDis_content().isEmpty()) { @@ -1307,6 +1308,18 @@ public class MainFragment extends BaseFragment implements V page=1; getlist(page); + final RegisterUser user = + Config.getInstance(getActivity()).getUser(); + Map map = new HashMap<>(); + if (user != null) { + map.put("userid", user.getUserid()); + } else { + map.put("userid", 0 + ""); + } + map.put("app", "Advert"); + map.put("class", "Advertr_an_AdvertHomeList"); + map.put("sign", Md5.md5("Advert" + "Advertr_an_AdvertHomeList" + Md5.secret)); + getGankList(ApiConfig.BASE_URL, map, getResources().getString(R.string.requsting), 0, false); } diff --git a/app/src/main/java/com/sl/house_property/discovery/DiscoveryFragment.java b/app/src/main/java/com/sl/house_property/discovery/DiscoveryFragment.java index 8508195..7b8c483 100644 --- a/app/src/main/java/com/sl/house_property/discovery/DiscoveryFragment.java +++ b/app/src/main/java/com/sl/house_property/discovery/DiscoveryFragment.java @@ -2,7 +2,9 @@ package com.sl.house_property.discovery; import android.app.ProgressDialog; import android.content.Intent; +import android.content.pm.ActivityInfo; import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.graphics.Rect; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; @@ -23,7 +25,11 @@ import com.google.gson.Gson; import com.google.gson.internal.LinkedTreeMap; import com.google.gson.reflect.TypeToken; import com.gyf.immersionbar.ImmersionBar; +import com.hjq.permissions.OnPermission; +import com.hjq.permissions.Permission; +import com.hjq.permissions.XXPermissions; import com.lxj.xpopup.XPopup; +import com.lxj.xpopup.interfaces.OnConfirmListener; import com.lxj.xpopup.interfaces.OnSelectListener; import com.lzy.ninegrid.ImageInfo; import com.lzy.ninegrid.preview.NineGridViewClickAdapter; @@ -39,10 +45,15 @@ import com.sl.house_property.databinding.ItemDiscoveryBinding; import com.sl.house_property.order.SettleActivity; import com.squareup.picasso.Picasso; import com.squareup.picasso.Target; +import com.zhihu.matisse.Matisse; +import com.zhihu.matisse.MimeType; +import com.zhihu.matisse.engine.impl.PicassoEngine; +import com.zhihu.matisse.internal.entity.CaptureStrategy; import org.json.JSONException; import org.json.JSONObject; +import java.io.File; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.HashMap; @@ -62,11 +73,13 @@ import rx.Subscription; import rx.functions.Action1; import tools.Config; import tools.PicassoRoundTransform; +import top.zibin.luban.Luban; import utils.CommonUtils; import utils.DateUtils; import utils.GetJsonDataUtil; import utils.KeyboardUtil; import utils.Md5; +import utils.TimeUtils; import utils.UtilHelpers; public class DiscoveryFragment extends BaseFragment implements MainTabActivity.MyOnTouchListener { @@ -137,6 +150,75 @@ public class DiscoveryFragment extends BaseFragment im } }); + mDataBinding.v.setOnClickListener(v -> { + checkAlbumPermission(191, 1); + }); + } + + private void selectImage(int requestCode, int max) { + Matisse + .from(this) + //选择视频和图片 + .choose(MimeType.ofImage()) + + //这两行要连用 是否在选择图片中展示照相 和适配安卓7.0 FileProvider + .capture(true) + .captureStrategy(new CaptureStrategy(true, "PhotoPicker")) + //有序选择图片 123456... + .countable(true) + //最大选择数量为9 + .maxSelectable(max) + //选择方向 + .restrictOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) + //界面中缩略图的质量 + .thumbnailScale(0.8f) + //蓝色主题 + .theme(R.style.Matisse_Zhihu) + //Picasso加载方式 + .imageEngine(new PicassoEngine()) + //请求码 + .forResult(requestCode); + } + + + /* + * 检查访问相册权限 + * */ + private void checkAlbumPermission(final int requestCode, final int max) { + XXPermissions.with(baseActivity).permission(Permission.WRITE_EXTERNAL_STORAGE, Permission.CAMERA).request(new OnPermission() { + @Override + public void hasPermission(List granted, boolean isAll) { + if (isAll) { + selectImage(requestCode, max); + } + } + + @Override + public void noPermission(List denied, boolean quick) { + if (quick) + new XPopup.Builder(baseActivity).asConfirm( + "提示", "需要相册和相机权限才可以正常使用" + , new OnConfirmListener() { + @Override + public void onConfirm() { + XXPermissions.gotoPermissionSettings(baseActivity); + } + }).show(); + } + }); +// if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { +// selectImage(requestCode, max); +// return; +// } +// if ((ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)&&(ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED)) { +// //权限还没有授予,需要在这里写申请权限的代码 +// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { +// requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.CAMERA}, 2); +// } +// +// } else { +// selectImage(requestCode, max); +// } } @Override @@ -445,7 +527,7 @@ public class DiscoveryFragment extends BaseFragment im } }); - + homeGridAdapterItemBinding.tvTime.setText(TimeUtils.getRecentTimeSpanByNow(TimeUtils.dataOne(discoveryListEntity.getCtime()))); if (discoveryListEntity.getLike().isEmpty()) { homeGridAdapterItemBinding.tvLike.setVisibility(View.GONE); @@ -464,8 +546,8 @@ public class DiscoveryFragment extends BaseFragment im } homeGridAdapterItemBinding.tvLike.setText(likeString.toString()); + // TimeUtils.getRecentTimeSpanByNow(TimeUtils.dataOne(discoveryListEntity.getCtime())) - homeGridAdapterItemBinding.tvTime.setText(DateUtils.getDate(discoveryListEntity.getCtime())); } if (discoveryListEntity.getDis_content().isEmpty()) { @@ -963,9 +1045,32 @@ public class DiscoveryFragment extends BaseFragment im if (requestCode == 14 && resultCode == 200) { page = 1; getlist(1); + } else if (requestCode == 191) { + //选取图片回调 + if (data==null){ + return; + } + List strings = Matisse.obtainPathResult(data); + if (!strings.isEmpty()){ + try { + + List list = Luban.with(baseActivity).load(strings).ignoreBy(100).setTargetDir(baseActivity.getCacheDir().getAbsolutePath()).get(); + if (null != list && list.size() > 0) { + File file = list.get(0); + // Bitmap bitmap = BitmapFactory.decodeFile(file.toString()); + Picasso.with(getActivity()).load(file) + .placeholder(R.mipmap.icon_default_rectangle) + .into(target); + } + }catch (Exception e){ + + } + + } } } + private void deleteComment(String dis_id, String userid, final int superPosition, final int itemPosition) { Map map = new HashMap<>(); diff --git a/app/src/main/java/com/sl/house_property/f1/AddcararageIttemActivity.java b/app/src/main/java/com/sl/house_property/f1/AddcararageIttemActivity.java index 7c6ab79..431a0cc 100644 --- a/app/src/main/java/com/sl/house_property/f1/AddcararageIttemActivity.java +++ b/app/src/main/java/com/sl/house_property/f1/AddcararageIttemActivity.java @@ -571,7 +571,6 @@ public class AddcararageIttemActivity extends BaseActivity { public MessageAdapter() { super(R.layout.item_message); @@ -20,7 +22,7 @@ public class MessageAdapter extends BaseQuickAdapterfindViewById(R.id.iv)); baseViewHolder.setText(R.id.tv_name, messageEntity.getStore_name()); baseViewHolder.setText(R.id.tv_title, messageEntity.getTitle()); - baseViewHolder.setText(R.id.tv_time, messageEntity.getCtime()); + baseViewHolder.setText(R.id.tv_time, TimeUtils.getRecentTimeSpanByNow(TimeUtils.dataOne(messageEntity.getCtime()))); if (messageEntity.getIs_dot().equals("1")) { baseViewHolder.getView(R.id.view).setVisibility(View.VISIBLE); } else { diff --git a/app/src/main/java/utils/TimeConstants.java b/app/src/main/java/utils/TimeConstants.java new file mode 100644 index 0000000..d446091 --- /dev/null +++ b/app/src/main/java/utils/TimeConstants.java @@ -0,0 +1,25 @@ +package utils; + + + +import android.support.annotation.IntDef; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +public final class TimeConstants { + + public static final int MSEC = 1; + public static final int SEC = 1000; + public static final int MIN = 60000; + public static final int HOUR = 3600000; + public static final int DAY = 86400000; + public static final long MONTH = 2592000000L; + public static final long YEAR = 31104000000L; + + @IntDef({MSEC, SEC, MIN, HOUR, DAY}) + @Retention(RetentionPolicy.SOURCE) + public @interface Unit { + } + +} diff --git a/app/src/main/java/utils/TimeUtils.java b/app/src/main/java/utils/TimeUtils.java new file mode 100644 index 0000000..b376ec1 --- /dev/null +++ b/app/src/main/java/utils/TimeUtils.java @@ -0,0 +1,120 @@ +package utils; + +import android.text.TextUtils; +import android.util.Log; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Locale; + +public class TimeUtils { + + public static String getRecentTimeSpanByNow(final long millis) { + if (millis == 0) { + return "未知"; + } + + long span =System.currentTimeMillis()- millis; + Log.e("time",System.currentTimeMillis()+""); + Log.e("millis",millis+""); + if (span < 1000) { + return "刚刚"; + } else if (span < TimeConstants.MIN) { + return "刚刚"; + } else if (span < TimeConstants.HOUR) { + return String.format(Locale.getDefault(), "%d分钟前", span / TimeConstants.MIN); + } else if (span < TimeConstants.DAY) { + return String.format(Locale.getDefault(), "%d小时前", span / TimeConstants.HOUR); + } else if (span < TimeConstants.MONTH) { + if (span / TimeConstants.DAY >= 7) { + SimpleDateFormat sdr = new SimpleDateFormat("MM-dd", + Locale.CHINA); + return sdr.format(millis); + } else { + String format = String.format(Locale.getDefault(), "%d天前", span / TimeConstants.DAY); + + Log.e("format",format); + return format; + + } + } else if (span < TimeConstants.YEAR) { + SimpleDateFormat sdr; + if (span / TimeConstants.MONTH >= 6) { + sdr = new SimpleDateFormat("yyyy-MM-dd", + Locale.CHINA); + + } else { + sdr = new SimpleDateFormat("MM-dd", + Locale.CHINA); + } + return sdr.format(millis); + + } +// else if (span > TimeConstants.YEAR) { +// return String.format(Loc +// ale.getDefault(), "%d年前", span / TimeConstants.YEAR); +// } + else { + SimpleDateFormat sdr = new SimpleDateFormat("yyyy-MM-dd", + Locale.CHINA); + return sdr.format(millis); + + } + } + + /** + * 调此方法输入所要转换的时间输入例如("2014-06-14-16-09-00")返回时间戳 + * + * @param time + * @return + */ + public static Long dataOne(String time) { + if (TextUtils.isEmpty(time)) { + return 0l; + } + SimpleDateFormat sdr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", + Locale.CHINA); + Date date = null; + try { + date = sdr.parse(time); + return date.getTime(); + } catch (ParseException e) { + e.printStackTrace(); + } + + + return 0l; + } + + public static String formatTime(String time) { + SimpleDateFormat sdr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", + Locale.CHINA); + Date date = null; + try { + date = sdr.parse(time); + SimpleDateFormat sdr2 = new SimpleDateFormat("MM-dd", + Locale.CHINA); + return sdr2.format(date.getTime()); + } catch (ParseException e) { + e.printStackTrace(); + } + + + return ""; + } + + public static String mouthOne() { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月", Locale.CHINA); + return simpleDateFormat.format(new Date().getTime()); + + + } + + public static Long deadTime(String time) { + + Long aLong = dataOne(time); + long time1 = new Date().getTime(); + return aLong - time1; + } +} diff --git a/app/src/main/res/layout/item_discovery.xml b/app/src/main/res/layout/item_discovery.xml index 73cccf0..f243e7f 100644 --- a/app/src/main/res/layout/item_discovery.xml +++ b/app/src/main/res/layout/item_discovery.xml @@ -61,7 +61,7 @@ android:layout_height="wrap_content" android:layout_gravity="center" android:layout_weight="1" - android:text="21天前" + android:text="" android:textColor="@color/darkgray" android:textSize="12sp" />