Commit 750a13b6 authored by linfeng's avatar linfeng

Merge branch 'master-price-john' of http://113.105.137.151:22280/lify/rvapp into master-price

parents 010ab394 8d13160c
......@@ -38,9 +38,11 @@ import com.ruiwenliu.wrapper.base.BaseBean;
import com.ruiwenliu.wrapper.base.BaseWrapperFragment;
import com.ruiwenliu.wrapper.bean.ActBean;
import com.ruiwenliu.wrapper.bean.UpdateTokenBean;
import com.ruiwenliu.wrapper.inter.ImInitListenter;
import com.ruiwenliu.wrapper.receiver.NetWorkReceiver;
import com.ruiwenliu.wrapper.statusbar.StatusBarUtil;
import com.ruiwenliu.wrapper.util.GpsManager;
import com.ruiwenliu.wrapper.util.UtilsManager;
import com.ruiwenliu.wrapper.util.listener.SwitchFragment;
import com.ruiwenliu.wrapper.weight.CustomScrollViewPager;
......@@ -55,6 +57,7 @@ import com.rv.home.rv.module.ApiConfig;
import com.ruiwenliu.wrapper.base.presenter.CommonPresenter;
import com.rv.home.rv.module.ui.main.home.HomeFragment;
import com.rv.home.rv.module.ui.main.home.bean.EffectiveTimeBean;
import com.rv.im.CustomerListActivity;
import com.rv.im.ImService;
import com.rv.im.ImSetting;
import com.rv.im.call.AudioOrVideoController;
......@@ -94,7 +97,8 @@ import butterknife.OnClick;
import cn.jpush.android.api.BasicPushNotificationBuilder;
import cn.jpush.android.api.JPushInterface;
public class MainActivity extends BaseActivity<CommonPresenter> implements DownListenerManager.DownListener, ChatMessageListener {
public class MainActivity extends BaseActivity<CommonPresenter> implements DownListenerManager.DownListener, ChatMessageListener,ImInitListenter {
private boolean hasGetVersionInfo = false; // 判断是否已经获取过版本信息
......@@ -152,6 +156,11 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements DownL
return new Intent(context, MainActivity.class);
}
@Override
public boolean isBindService() {
return hasBindService;
}
@Override
protected int setLayout() {
return R.layout.activity_main;
......@@ -165,6 +174,7 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements DownL
EventBus.getDefault().register(this);
DownListenerManager.getInstance().addDownListener(this);
ListenerManager.getInstance().addChatMessageListener(this);
// AppUtils.setBadger(ImSetting.getContext(), ChatMessageServiceImp.getInstance(ImSetting.getContext()).getUnReadMsg());
GpsManager.getInstance(this).rigister();
}
......@@ -247,9 +257,9 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements DownL
case 1:
EffectiveTimeBean bean = (EffectiveTimeBean) result;
if (bean != null && bean.isRel() && bean.getData() != null) {
AppCookie.save( "actRent", bean.getData().getActRent());
AppCookie.save( "actTour", bean.getData().getActTour());
AppCookie.save( "insurePrice", bean.getData().getInsurePrice());
AppCookie.save("actRent", bean.getData().getActRent());
AppCookie.save("actTour", bean.getData().getActTour());
AppCookie.save("insurePrice", bean.getData().getInsurePrice());
AppCookie.save("actMember", bean.getData().getActMember());
}
break;
......@@ -258,14 +268,11 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements DownL
if (actBean != null && actBean.isRel() && actBean.getData() != null && actBean.getData().size() > 0) {
final ActBean.Act act = actBean.getData().get(0);
mPresenter.saveOnclick("0", String.valueOf(act.getId()));
promotionDialog = new PromotionDialog.Builder(this, new View.OnClickListener() {
@Override
public void onClick(View view) {
promotionDialog = new PromotionDialog.Builder(this, view -> {
promotionDialog.dismiss();
mPresenter.saveOnclick("1", String.valueOf(act.getId()));
postActivityPopup(act.getId());
startActivity(WebViewActivity.getIntent(getApplicationContext(), act.getUrl(), act.getName()));
}
}).setData(act).create();
promotionDialog.show();
}
......@@ -425,6 +432,7 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements DownL
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (mAdapter != null) {
mAdapter.getCurrentFragment().onActivityResult(requestCode, resultCode, data);
}
......@@ -657,7 +665,7 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements DownL
Cookie.clear(getApplicationContext());
OkGoUtil.clearToken();
ImSetting.logout();
// AppUtils.setBadger(getApplicationContext(), 0);
showLogoutDialog();
}
......@@ -757,7 +765,5 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements DownL
TitleTextWindow view = new TitleTextWindow(this);
view.show();
}
((HomeFragment) mAdapter.getItem(0)).newsComing();
((TourismFragment) mAdapter.getItem(1)).newsComing();
}
}
......@@ -2,9 +2,16 @@ package com.xxfc.rv.other;
import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.os.Bundle;
import android.text.TextUtils;
import com.ruiwenliu.wrapper.util.AppUtils;
import com.rv.im.CustomerListActivity;
import com.rv.im.db.service.ChatMessageServiceImp;
import com.yuyife.okgo.OkGoUtil;
import me.leolin.shortcutbadger.ShortcutBadger;
public class RvActivityLifecycleCallbacks implements Application.ActivityLifecycleCallbacks {
......@@ -23,22 +30,26 @@ public class RvActivityLifecycleCallbacks implements Application.ActivityLifecyc
@Override
public void onActivityStarted(Activity activity) {
ativiteCount += 1;
}
@Override
public void onActivityResumed(Activity activity) {
ativiteCount += 1;
}
@Override
public void onActivityPaused(Activity activity) {
ativiteCount -= 1;
}
@Override
public void onActivityStopped(Activity activity) {
ativiteCount -= 1;
if (ativiteCount == 0) {
// Toast.makeText(activity.getApplication(), "程序退到后台", Toast.LENGTH_SHORT).show();
setBadger(activity.getApplicationContext());
}
}
@Override
......@@ -68,4 +79,16 @@ public class RvActivityLifecycleCallbacks implements Application.ActivityLifecyc
public static void setIsSpecialCases(boolean isSpecialCases) {
RvActivityLifecycleCallbacks.isSpecialCases = isSpecialCases;
}
/********
* 设置桌面未读消息数
*/
public static void setBadger(Context context) {
if (ShortcutBadger.isBadgeCounterSupported(context)) {
if (TextUtils.isEmpty(OkGoUtil.getToken()))
AppUtils.setBadger(context, 0);
else
AppUtils.setBadger(context, ChatMessageServiceImp.getInstance(context).getUnReadMsg());
}
}
}
......@@ -85,5 +85,7 @@ dependencies {
api 'cn.jiguang.sdk:jpush:3.3.4'
// 此处以JPush 3.3.4 版本为例。
api 'cn.jiguang.sdk:jcore:2.1.2'
api "me.leolin:ShortcutBadger:1.1.22@aar"
// 此处以JCore 2.1.2 版本为例。
}
package com.ruiwenliu.wrapper.inter;
public interface ImInitListenter {
boolean isBindService();
}
......@@ -9,6 +9,8 @@ import com.yuyife.okgo.OkGoUtil;
import org.greenrobot.eventbus.EventBus;
import me.leolin.shortcutbadger.ShortcutBadger;
public class AppUtils {
public static void logout(Context context) {
......@@ -19,4 +21,18 @@ public class AppUtils {
OkGoUtil.clearToken();
EventBus.getDefault().post(new MessageEventLogout());
}
/********
* 设置桌面未读消息数
* @param count
*/
public static void setBadger(Context context, int count) {
if (ShortcutBadger.isBadgeCounterSupported(context)) {
if (count > 0) {
ShortcutBadger.applyCount(context, count);
} else {
ShortcutBadger.removeCount(context);
}
}
}
}
......@@ -15,6 +15,7 @@ buildscript {
maven {
url "https://jitpack.io"
}
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
......@@ -28,6 +29,7 @@ buildscript {
allprojects {
repositories {
mavenCentral()
google()
jcenter()
// 支付宝 SDK AAR 包所需的配置
......
......@@ -48,6 +48,7 @@ import com.google.gson.Gson;
import com.ruiwenliu.wrapper.SPConstance;
import com.ruiwenliu.wrapper.base.BaseBean;
import com.ruiwenliu.wrapper.base.BaseFragment;
import com.ruiwenliu.wrapper.inter.ImInitListenter;
import com.ruiwenliu.wrapper.util.GpsManager;
import com.ruiwenliu.wrapper.util.LocationManager;
import com.ruiwenliu.wrapper.util.UtilsManager;
......@@ -257,6 +258,7 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa
return fragment;
}
@Override
public int getViewLayout() {
return R.layout.fragment_home;
......@@ -915,10 +917,14 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa
} else if (id == R.id.iv_home_travel_server_image) {
if (isLogin()) {
hasNewMessage = false;
if (llItemTop.getVisibility() != View.VISIBLE) {
travelServerImage.setImageResource(R.drawable.rv_rentingcar_icon_service_white);
} else {
travelServerImage.setImageResource(R.drawable.rentingcar_icon_service_orangeorange);
// if (llItemTop.getVisibility() != View.VISIBLE) {
// travelServerImage.setImageResource(R.drawable.rv_rentingcar_icon_service_white);
// } else {
// travelServerImage.setImageResource(R.drawable.rentingcar_icon_service_orangeorange);
// }
if (_mActivity instanceof ImInitListenter && !((ImInitListenter) _mActivity).isBindService()) {
showToast("Im初始化中...");
return;
}
ComponentName name = new ComponentName(getActivity(), "com.rv.im.CustomerListActivity");
Intent intent = new Intent();
......@@ -1335,11 +1341,7 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa
//只是layout背景透明(仿知乎滑动效果)
llItemSearch.setBackground(getResources().getDrawable(R.drawable.shape_rv_textview_home_translucent));
travelCityText.setTextColor(getResources().getColor(R.color.colorWrite));
// if(hasNewMessage){
// travelServerImage.setImageResource(R.drawable.rv_rentingcar_icon_service_white_news);
// }else {
// travelServerImage.setImageResource(R.drawable.rv_rentingcar_icon_service_white);
// }
travelServerImage.setImageResource(R.drawable.rv_rentingcar_icon_service_white);
ivTravelCityTextHint.setImageResource(R.drawable.rv_common_icon_up_arrow2);
ivSearchInputHint.setImageResource(R.drawable.rv_common_icon_search2);
......@@ -1352,11 +1354,6 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa
} else {
llItemTop.setVisibility(View.VISIBLE);
llItemSearch.setBackground(getResources().getDrawable(R.drawable.shape_rv_textview_home_search));
// if(hasNewMessage){
// travelServerImage.setImageResource(R.drawable.rentingcar_icon_service_orangeorange_news);
// }else{
// travelServerImage.setImageResource(R.drawable.rentingcar_icon_service_orangeorange);
// }
travelServerImage.setImageResource(R.drawable.rentingcar_icon_service_orangeorange);
travelCityText.setTextColor(getResources().getColor(R.color.colorMain));
ivTravelCityTextHint.setImageResource(R.drawable.rv_common_icon_up_arrow);
......@@ -1467,18 +1464,6 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa
});
}
/******
* 新消息
*/
public void newsComing() {
// hasNewMessage = true ;
// if (llItemTop.getVisibility() != View.VISIBLE) {
// travelServerImage.setImageResource(R.drawable.rv_rentingcar_icon_service_white_news);
// } else {
// travelServerImage.setImageResource(R.drawable.rentingcar_icon_service_orangeorange_news);
// }
}
@Override
public void onDestroyView() {
super.onDestroyView();
......
......@@ -38,6 +38,7 @@ import com.ruiwenliu.wrapper.base.BaseBean;
import com.ruiwenliu.wrapper.base.BaseFragment;
import com.ruiwenliu.wrapper.bean.UserInfoBean;
import com.ruiwenliu.wrapper.browse.ActivityImageBrowseInt;
import com.ruiwenliu.wrapper.util.AppUtils;
import com.ruiwenliu.wrapper.util.UtilsManager;
import com.ruiwenliu.wrapper.util.glide.GlideManager;
import com.ruiwenliu.wrapper.weight.refresh.SimpleRefreshLayout;
......@@ -248,11 +249,7 @@ public class MineFragment extends BaseFragment<CommonPresenter> implements Simpl
.subscribe(new Observer<SignOutEvent>(disposable) {
@Override
public void onNext(SignOutEvent event) {
UtilsManager.getInstance(_mActivity).clearShareData("city_json");
UtilsManager.getInstance(_mActivity).setShNull();
RvCache.getInstance().clear();
Cookie.clear(_mActivity);
OkGoUtil.clearToken();
AppUtils.logout(_mActivity);
signOut();
}
});
......@@ -559,6 +556,9 @@ public class MineFragment extends BaseFragment<CommonPresenter> implements Simpl
if(!TextUtils.isEmpty(info.getPositionName())){
tvCapacity.setText(info.getPositionName());
tvCapacity.setVisibility(View.VISIBLE);
}else{
tvCapacity.setText("");
tvCapacity.setVisibility(View.GONE);
}
//更新实名信息
......
......@@ -33,6 +33,7 @@ import com.ruiwenliu.wrapper.SPConstance;
import com.frame.base.url.Constance;
import com.ruiwenliu.wrapper.base.BaseBean;
import com.ruiwenliu.wrapper.base.BaseFragment;
import com.ruiwenliu.wrapper.inter.ImInitListenter;
import com.ruiwenliu.wrapper.util.GpsManager;
import com.ruiwenliu.wrapper.util.LocationManager;
import com.ruiwenliu.wrapper.util.glide.GlideManager;
......@@ -112,9 +113,6 @@ public class TourismFragment extends BaseFragment<TourismPresenter> implements S
private LocationManager locationManager;
private GeoCoder geoCoder;
private boolean hasNewMessage;
public static TourismFragment getInstance(int type) {
Bundle bundl = new Bundle();
bundl.putInt("type", type);
......@@ -237,9 +235,10 @@ public class TourismFragment extends BaseFragment<TourismPresenter> implements S
.navigation();
} else if (id == R.id.travel_server_image) {
if (isLogin()) {
hasNewMessage = false;
ImgTravelServer.setImageResource(R.drawable.common_journey_service_gray);
if (_mActivity instanceof ImInitListenter && !((ImInitListenter) _mActivity).isBindService()) {
showToast("Im初始化中...");
return;
}
ComponentName name = new ComponentName(getActivity(), "com.rv.im.CustomerListActivity");
Intent intent = new Intent();
intent.putExtra("login_user_id", Cookie.getStringValue(getContext(), SPConstance.USER_JSON_IMUSERID));
......@@ -448,12 +447,6 @@ public class TourismFragment extends BaseFragment<TourismPresenter> implements S
travelBanner.updateBannerStyle(BannerConfig.CIRCLE_INDICATOR);
}
public void newsComing() {
// hasNewMessage = true;
// ImgTravelServer.setImageResource(R.drawable.common_journey_service_gray_news);
}
@Override
public void onDestroy() {
super.onDestroy();
......
......@@ -41,8 +41,6 @@ import java.util.List;
import java.util.Map;
import java.util.Timer;
import okhttp3.Call;
public class CustomerListActivity extends BaseStatusActivity<CommonPresenter> implements SimpleRefreshLayout.OnSimpleRefreshListener, ChatMessageListener {
private SimpleRefreshLayout refreshLayout;
......@@ -129,6 +127,7 @@ public class CustomerListActivity extends BaseStatusActivity<CommonPresenter> im
if (lists != null && lists.size() > 0) {
for (Customer customer : lists) {
ChatMessage message = ChatMessageServiceImp.getInstance(getApplicationContext()).getLastMsg(customer.getImUserId());
customer.setUnReadMessage(ChatMessageServiceImp.getInstance(getApplicationContext()).getUnReadMsg(customer.getImUserId()));
if (message != null) customer.setLastMessageInfo(message);
}
Collections.sort(lists, (o1, o2) -> {
......@@ -227,6 +226,7 @@ public class CustomerListActivity extends BaseStatusActivity<CommonPresenter> im
for (Customer customer : customers) {
if (!TextUtils.isEmpty(customer.getImUserId()) &&
customer.getImUserId().equals(fromUserId)) {
customer.setUnReadMessage(ChatMessageServiceImp.getInstance(getApplicationContext()).getUnReadMsg(fromUserId));
if (message != null)
customer.setLastMessageInfo(message);
break;
......
......@@ -5,7 +5,6 @@ import android.content.Context;
import android.content.SharedPreferences;
import com.rv.im.db.SQLiteHelper;
import com.rv.im.db.service.ChatConversationServiceImp;
import com.rv.im.db.service.ChatMessageServiceImp;
import com.rv.im.db.service.CustomerServiceImp;
......@@ -44,9 +43,9 @@ public class ImSetting {
*
*/
public static void logout() {
// ChatConversationServiceImp.getInstance(getContext()).release();
CustomerServiceImp.getInstance(getContext()).release();
ChatMessageServiceImp.getInstance(getContext()).release();
getSharePreference(getContext()).edit().clear().commit();
SQLiteHelper.closeDb(); // 关掉数据库连接
}
......
......@@ -4,6 +4,7 @@ import android.content.Context;
import android.graphics.Color;
import android.support.annotation.Nullable;
import android.text.TextUtils;
import android.view.View;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
......@@ -40,11 +41,24 @@ public class CustomerListAdapter extends BaseQuickAdapter<Customer, BaseViewHold
}
if (!TextUtils.isEmpty(item.getLastMsg()))
// helper.setText(R.id.tv_last_msg, item.getLastMsg());
helper.setText(R.id.tv_last_msg, parser.addSmileySpans(deleteHtml(item.getLastMsg()), true));
else {
helper.setText(R.id.tv_last_msg, " ");
}
if (item.getUnReadMessage() > 0) {
if(item.getUnReadMessage() < 100){
helper.setText(R.id.tv_unread_num, item.getUnReadMessage() + "");
}else{
helper.setText(R.id.tv_unread_num, "···");
}
helper.itemView.findViewById(R.id.tv_unread_num).setVisibility(View.VISIBLE);
helper.itemView.findViewById(R.id.img_no_unread).setVisibility(View.GONE);
} else {
helper.itemView.findViewById(R.id.tv_unread_num).setVisibility(View.GONE);
helper.itemView.findViewById(R.id.img_no_unread).setVisibility(View.VISIBLE);
}
}
private static String deleteHtml(String msg) {
......
......@@ -24,7 +24,6 @@ public class ConversationDao {
private ConversationDao(Context context) {
try {
this.mContext = context;
// mHelper = OpenHelperManager.getHelper(mContext, SQLiteHelper.class);
dao = DaoManager.createDao(SQLiteHelper.getInstance(context).getConnectionSource(), ChatConversation.class);
} catch (SQLException e) {
e.printStackTrace();
......@@ -32,26 +31,10 @@ public class ConversationDao {
}
public static final ConversationDao getInstance(Context context) {
// if (instance == null) {
// synchronized (ConversationDao.class) {
// if (instance == null) {
// instance = new ConversationDao(context);
// }
// }
// }
return new ConversationDao(context);
}
// public static final ConversationDao getInstance(Context context) {
// if (instance == null) {
// synchronized (ConversationDao.class) {
// if (instance == null) {
// instance = new ConversationDao(context);
// }
// }
// }
// return instance;
// }
@Override
protected void finalize() throws Throwable {
......
......@@ -9,7 +9,7 @@ import com.j256.ormlite.android.apptools.OpenHelperManager;
import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.dao.DaoManager;
import com.j256.ormlite.dao.GenericRawResults;
import com.rv.im.ImSetting;
import com.rv.im.db.SQLiteHelper;
import com.rv.im.db.table.ChatMessage;
import com.rv.im.enums.MessageStatusEnum;
......@@ -102,7 +102,7 @@ public class MessageDao {
* 删除消息
* @param message
*/
public void deleteMessage(ChatMessage message){
public void deleteMessage(ChatMessage message) {
if (dao == null) {
LogUtil.e(TAG, "dao is null");
return;
......@@ -272,25 +272,40 @@ public class MessageDao {
LogUtil.e(TAG, "userId is null");
return 0;
}
int count = 0;
List<ChatMessage> chatMessages;
List<ChatMessage> chatMessages = null;
try {
chatMessages = dao.queryBuilder().orderBy("timeSend", false).where()
chatMessages = dao.queryBuilder().where()
.eq("fromUserId", userId)
.or()
.eq("toUserId", userId)
.and()
.eq("isRead", false)
.query();
if (chatMessages != null && chatMessages.size() > 0) {
for (ChatMessage message : chatMessages) {
if (!message.isRead()) {
count += 1;
} catch (SQLException e) {
e.printStackTrace();
}
return chatMessages != null ? chatMessages.size() : 0;
}
/***********
* 获取所有未读的消息
* @return
*/
public int getUnReadMessage() {
if (dao == null) {
LogUtil.e(TAG, "dao is null");
return 0;
}
List<ChatMessage> chatMessages = null;
try {
chatMessages = dao.queryBuilder().where()
.eq("isRead", false)
.and()
.eq("toUserId", ImSetting.getUserId())
.query();
} catch (SQLException e) {
e.printStackTrace();
}
return count;
return chatMessages != null ? chatMessages.size() : 0;
}
public void setMessageRead(String userId) {
......@@ -302,7 +317,6 @@ public class MessageDao {
LogUtil.e(TAG, "userId is null");
return;
}
int count = 0;
List<ChatMessage> chatMessages;
try {
chatMessages = dao.queryBuilder().orderBy("timeSend", false).where()
......
......@@ -16,7 +16,7 @@ public class ChatMessageServiceImp implements IChatMessageService {
private static ChatMessageServiceImp instance = null;
private ConversationDao conversationDao = null;
public ChatMessageServiceImp(Context context) {
private ChatMessageServiceImp(Context context) {
dao = new MessageDao(context);
conversationDao = ConversationDao.getInstance(context);
}
......@@ -80,6 +80,11 @@ public class ChatMessageServiceImp implements IChatMessageService {
return dao.getUnReadMessage(targetUserId);
}
@Override
public int getUnReadMsg() {
return dao.getUnReadMessage();
}
@Override
public void setMsgRead(String targetUserId) {
dao.setMessageRead(targetUserId);
......
......@@ -24,6 +24,8 @@ public interface IChatMessageService {
int getUnReadMsg(String targetUserId);
int getUnReadMsg();
void setMsgRead(String targetUserId);
void setVoicePlay(String packId);
......
......@@ -30,6 +30,8 @@ public class Customer {
private long lastMsgTimes;
private int unReadMessage ;
public int get_id() {
return _id;
}
......@@ -102,6 +104,14 @@ public class Customer {
this.lastMsgTimes = lastMsgTimes;
}
public int getUnReadMessage() {
return unReadMessage;
}
public void setUnReadMessage(int unReadMessage) {
this.unReadMessage = unReadMessage;
}
public void setLastMessageInfo(ChatMessage lastMessageInfo) {
if (lastMessageInfo.getMessageType() == MessageTypeEnum.TEXT.getType()) {
......
......@@ -4,6 +4,7 @@ import android.media.MediaPlayer;
import android.os.Handler;
import android.os.Looper;
import com.ruiwenliu.wrapper.util.AppUtils;
import com.rv.im.ImSetting;
import com.rv.im.R;
import com.rv.im.db.service.ChatMessageServiceImp;
......@@ -106,6 +107,7 @@ public class ListenerManager {
mHandler.post(() -> {
if (message != null) {
ChatMessageServiceImp.getInstance(ImSetting.getContext()).addMessage(message); // 数据库添加消息
AppUtils.setBadger(ImSetting.getContext(),ChatMessageServiceImp.getInstance(ImSetting.getContext()).getUnReadMsg() );
for (int i = mChatMessageListeners.size() - 1; i >= 0; i--) {
mChatMessageListeners.get(i).onNewMessage(message.getFromUserId(), message, false);
}
......
......@@ -58,17 +58,52 @@
</LinearLayout>
<TextView
android:id="@+id/tv_state"
<LinearLayout
android:layout_width="@dimen/size_50"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginRight="@dimen/dp_10"
android:gravity="right|top"
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/tv_state"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:text="在线"
android:textColor="@color/gray"
android:textSize="@dimen/text_12" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/size_3"
android:gravity="right"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_unread_num"
android:layout_width="@dimen/indicator_size"
android:layout_height="@dimen/indicator_size"
android:layout_alignParentEnd="true"
android:layout_marginRight="@dimen/size_3"
android:background="@drawable/tab_unread_bg"
android:gravity="center"
android:textColor="@android:color/white"
android:textSize="10dp"
android:visibility="gone" />
<ImageView
android:id="@+id/img_no_unread"
android:layout_width="@dimen/dp20"
android:layout_height="@dimen/size_15"
android:src="@mipmap/msg_replay_icon"
android:visibility="gone" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment