更新时间计算展示方式
邻里圈封面可更换图片(暂未调接口)
This commit is contained in:
2
.idea/compiler.xml
generated
2
.idea/compiler.xml
generated
@@ -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
11
.idea/misc.xml
generated
@@ -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">
|
||||
|
||||
13
.idea/runConfigurations.xml
generated
13
.idea/runConfigurations.xml
generated
@@ -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>
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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<>();
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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 {
|
||||
|
||||
25
app/src/main/java/utils/TimeConstants.java
Normal file
25
app/src/main/java/utils/TimeConstants.java
Normal 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 {
|
||||
}
|
||||
|
||||
}
|
||||
120
app/src/main/java/utils/TimeUtils.java
Normal file
120
app/src/main/java/utils/TimeUtils.java
Normal 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;
|
||||
}
|
||||
}
|
||||
@@ -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" />
|
||||
|
||||
Reference in New Issue
Block a user