更新时间计算展示方式

邻里圈封面可更换图片(暂未调接口)
This commit is contained in:
jinyuer
2021-11-22 17:08:22 +08:00
parent d73374bc4e
commit 8d8d01f3f8
10 changed files with 282 additions and 22 deletions

2
.idea/compiler.xml generated
View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel target="11" />
<bytecodeTargetLevel target="1.8" />
</component>
</project>

11
.idea/misc.xml generated
View File

@@ -5,13 +5,22 @@
<configuration PROFILE_NAME="Debug" CONFIG_NAME="Debug" />
</configurations>
</component>
<component name="DesignSurface">
<option name="filePathToZoomLevelMap">
<map>
<entry key="..\:/AndroidStudioProject/HouseProperty/app/src/main/res/layout/fragment_discovery.xml" value="0.3614583333333333" />
<entry key="..\:/AndroidStudioProject/HouseProperty/app/src/main/res/layout/fragment_main.xml" value="0.3614583333333333" />
<entry key="..\:/AndroidStudioProject/HouseProperty/app/src/main/res/layout/item_discovery.xml" value="0.3614583333333333" />
</map>
</option>
</component>
<component name="FindBugsConfigurable">
<option name="make" value="true" />
<option name="effort" value="default" />
<option name="priority" value="Medium" />
<option name="excludeFilter" value="" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="false" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">

View File

@@ -1,13 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RunConfigurationProducerService">
<option name="ignoredProducers">
<set>
<option value="com.android.tools.idea.compose.preview.runconfiguration.ComposePreviewRunConfigurationProducer" />
<option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" />
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" />
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" />
</set>
</option>
</component>
</project>

View File

@@ -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<FragmentMainBinding> 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<FragmentMainBinding> 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<FragmentMainBinding> implements V
page=1;
getlist(page);
final RegisterUser user =
Config.getInstance(getActivity()).getUser();
Map<String, String> 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);
}

View File

@@ -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<FragmentDiscoveryBinding> implements MainTabActivity.MyOnTouchListener {
@@ -137,6 +150,75 @@ public class DiscoveryFragment extends BaseFragment<FragmentDiscoveryBinding> 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<String> granted, boolean isAll) {
if (isAll) {
selectImage(requestCode, max);
}
}
@Override
public void noPermission(List<String> 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<FragmentDiscoveryBinding> 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<FragmentDiscoveryBinding> 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<FragmentDiscoveryBinding> im
if (requestCode == 14 && resultCode == 200) {
page = 1;
getlist(1);
} else if (requestCode == 191) {
//选取图片回调
if (data==null){
return;
}
List<String> strings = Matisse.obtainPathResult(data);
if (!strings.isEmpty()){
try {
List<File> 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<String, String> map = new HashMap<>();

View File

@@ -571,7 +571,6 @@ public class AddcararageIttemActivity extends BaseActivity<ActivityAddcararageIt
Gson gs = new Gson();
LinkedTreeMap adta = (LinkedTreeMap) resultcode.data;
String s = gs.toJson(adta);
try {
JSONObject jsonObject = new JSONObject(s);

View File

@@ -9,6 +9,8 @@ import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.sl.house_property.R;
import utils.TimeUtils;
public class MessageAdapter extends BaseQuickAdapter<MessageEntity.StoreInfo, BaseViewHolder> {
public MessageAdapter() {
super(R.layout.item_message);
@@ -20,7 +22,7 @@ public class MessageAdapter extends BaseQuickAdapter<MessageEntity.StoreInfo, Ba
.into(baseViewHolder.itemView.<ImageView>findViewById(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 {

View File

@@ -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 {
}
}

View File

@@ -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;
}
}

View File

@@ -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" />