husong 4 lat temu
rodzic
commit
310f1e65b5

BIN
app/release/app-release.apk


+ 40 - 0
app/src/main/java/com/technology/tederen/widget/emwight/ChatRowConferenceInvite.java

@@ -0,0 +1,40 @@
+package com.hyphenate.chatuidemo.widget;
+
+import android.content.Context;
+import android.widget.BaseAdapter;
+import android.widget.TextView;
+
+import com.hyphenate.chat.EMMessage;
+import com.hyphenate.chat.EMTextMessageBody;
+import com.hyphenate.chatuidemo.Constant;
+import com.hyphenate.chatuidemo.R;
+import com.hyphenate.easeui.widget.chatrow.EaseChatRow;
+
+public class ChatRowConferenceInvite extends EaseChatRow {
+
+    private TextView contentvView;
+
+    public ChatRowConferenceInvite(Context context, EMMessage message, int position, BaseAdapter adapter) {
+        super(context, message, position, adapter);
+    }
+
+    @Override
+    protected void onInflateView() {
+        inflater.inflate(R.layout.em_row_conference_invite, this);
+    }
+
+    @Override
+    protected void onFindViewById() {
+        contentvView = (TextView) findViewById(R.id.tv_chatcontent);
+    }
+
+    @Override
+    protected void onSetUpView() {
+        EMTextMessageBody txtBody = (EMTextMessageBody) message.getBody();
+        contentvView.setText(txtBody.getMessage());
+    }
+
+    @Override
+    protected void onViewUpdate(EMMessage msg) {
+    }
+}

+ 31 - 0
app/src/main/java/com/technology/tederen/widget/emwight/ChatRowConferenceInvitePresenter.java

@@ -0,0 +1,31 @@
+package com.hyphenate.chatuidemo.widget;
+
+import android.content.Context;
+import android.widget.BaseAdapter;
+import com.hyphenate.chat.EMMessage;
+import com.hyphenate.chatuidemo.Constant;
+import com.hyphenate.chatuidemo.DemoHelper;
+import com.hyphenate.easeui.widget.chatrow.EaseChatRow;
+import com.hyphenate.easeui.widget.presenter.EaseChatRowPresenter;
+
+/**
+ * Created by zhangsong on 17-10-12.
+ */
+
+public class ChatRowConferenceInvitePresenter extends EaseChatRowPresenter {
+    @Override
+    protected EaseChatRow onCreateChatRow(Context cxt, EMMessage message, int position, BaseAdapter adapter) {
+        return new ChatRowConferenceInvite(cxt, message, position, adapter);
+    }
+
+    @Override
+    public void onBubbleClick(EMMessage message) {
+        super.onBubbleClick(message);
+
+        String confId = message.getStringAttribute(Constant.MSG_ATTR_CONF_ID, "");
+        String confPassword = message.getStringAttribute(Constant.MSG_ATTR_CONF_PASS,"");
+        String extension = message.getStringAttribute(Constant.MSG_ATTR_EXTENSION, "");
+        DemoHelper.getInstance().goConference(confId, confPassword, extension);
+    }
+
+}

+ 39 - 0
app/src/main/java/com/technology/tederen/widget/emwight/ChatRowLive.java

@@ -0,0 +1,39 @@
+package com.hyphenate.chatuidemo.widget;
+
+import android.content.Context;
+import android.widget.BaseAdapter;
+import android.widget.TextView;
+
+import com.hyphenate.chat.EMMessage;
+import com.hyphenate.chat.EMTextMessageBody;
+import com.hyphenate.chatuidemo.R;
+import com.hyphenate.easeui.widget.chatrow.EaseChatRow;
+
+public class ChatRowLive extends EaseChatRow {
+
+    private TextView contentvView;
+
+    public ChatRowLive(Context context, EMMessage message, int position, BaseAdapter adapter) {
+        super(context, message, position, adapter);
+    }
+
+    @Override
+    protected void onInflateView() {
+        inflater.inflate(R.layout.em_row_conference_invite, this);
+    }
+
+    @Override
+    protected void onFindViewById() {
+        contentvView = (TextView) findViewById(R.id.tv_chatcontent);
+    }
+
+    @Override
+    protected void onSetUpView() {
+        EMTextMessageBody txtBody = (EMTextMessageBody) message.getBody();
+        contentvView.setText(txtBody.getMessage());
+    }
+
+    @Override
+    protected void onViewUpdate(EMMessage msg) {
+    }
+}

+ 32 - 0
app/src/main/java/com/technology/tederen/widget/emwight/ChatRowLivePresenter.java

@@ -0,0 +1,32 @@
+package com.hyphenate.chatuidemo.widget;
+
+import android.content.Context;
+import android.widget.BaseAdapter;
+
+import com.hyphenate.chat.EMMessage;
+import com.hyphenate.chatuidemo.Constant;
+import com.hyphenate.chatuidemo.DemoHelper;
+import com.hyphenate.easeui.widget.chatrow.EaseChatRow;
+import com.hyphenate.easeui.widget.presenter.EaseChatRowPresenter;
+
+/**
+ * Created by zhangsong on 17-10-12.
+ */
+
+public class ChatRowLivePresenter extends EaseChatRowPresenter {
+    @Override
+    protected EaseChatRow onCreateChatRow(Context cxt, EMMessage message, int position, BaseAdapter adapter) {
+        return new ChatRowConferenceInvite(cxt, message, position, adapter);
+    }
+
+    @Override
+    public void onBubbleClick(EMMessage message) {
+        super.onBubbleClick(message);
+
+        String confId = message.getStringAttribute(Constant.EM_CONFERENCE_ID, "");
+        String confPassword = message.getStringAttribute(Constant.EM_CONFERENCE_PASSWORD,"");
+        int type = message.getIntAttribute(Constant.EM_CONFERENCE_TYPE, 0);
+        DemoHelper.getInstance().goLive(confId, confPassword, message.getFrom());
+    }
+
+}

+ 47 - 0
app/src/main/java/com/technology/tederen/widget/emwight/ChatRowVoiceCall.java

@@ -0,0 +1,47 @@
+package com.hyphenate.chatuidemo.widget;
+
+import android.content.Context;
+import android.widget.BaseAdapter;
+import android.widget.TextView;
+
+import com.hyphenate.chat.EMMessage;
+import com.hyphenate.chat.EMTextMessageBody;
+import com.hyphenate.chatuidemo.Constant;
+import com.hyphenate.easeui.R;
+import com.hyphenate.easeui.widget.chatrow.EaseChatRow;
+
+public class ChatRowVoiceCall extends EaseChatRow{
+
+    private TextView contentvView;
+
+    public ChatRowVoiceCall(Context context, EMMessage message, int position, BaseAdapter adapter) {
+        super(context, message, position, adapter);
+    }
+
+    @Override
+    protected void onInflateView() {
+        if (message.getBooleanAttribute(Constant.MESSAGE_ATTR_IS_VOICE_CALL, false)){
+            inflater.inflate(message.direct() == EMMessage.Direct.RECEIVE ?
+                    R.layout.ease_row_received_voice_call : R.layout.ease_row_sent_voice_call, this);
+        // video call
+        }else if (message.getBooleanAttribute(Constant.MESSAGE_ATTR_IS_VIDEO_CALL, false)){
+            inflater.inflate(message.direct() == EMMessage.Direct.RECEIVE ?
+                    R.layout.ease_row_received_video_call : R.layout.ease_row_sent_video_call, this);
+        }
+    }
+
+    @Override
+    protected void onFindViewById() {
+        contentvView = (TextView) findViewById(R.id.tv_chatcontent);
+    }
+
+    @Override
+    protected void onSetUpView() {
+        EMTextMessageBody txtBody = (EMTextMessageBody) message.getBody();
+        contentvView.setText(txtBody.getMessage());
+    }
+
+    @Override
+    protected void onViewUpdate(EMMessage msg) {
+    }
+}

+ 56 - 0
app/src/main/java/com/technology/tederen/widget/emwight/ContactItemView.java

@@ -0,0 +1,56 @@
+package com.hyphenate.chatuidemo.widget;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.drawable.Drawable;
+import android.util.AttributeSet;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.hyphenate.chatuidemo.R;
+
+public class ContactItemView extends LinearLayout{
+
+    private TextView unreadMsgView;
+
+    public ContactItemView(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        init(context, attrs);
+    }
+
+    public ContactItemView(Context context) {
+        super(context);
+        init(context, null);
+    }
+    
+    private void init(Context context, AttributeSet attrs){
+        TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.ContactItemView);
+        String name = ta.getString(R.styleable.ContactItemView_contactItemName);
+        Drawable image = ta.getDrawable(R.styleable.ContactItemView_contactItemImage);
+        ta.recycle();
+        
+        LayoutInflater.from(context).inflate(R.layout.em_widget_contact_item, this);
+        ImageView avatar = (ImageView) findViewById(R.id.avatar);
+        unreadMsgView = (TextView) findViewById(R.id.unread_msg_number);
+        TextView nameView = (TextView) findViewById(R.id.name);
+        if(image != null){
+            avatar.setImageDrawable(image);
+        }
+        nameView.setText(name);
+    }
+    
+    public void setUnreadCount(int unreadCount){
+        unreadMsgView.setText(String.valueOf(unreadCount));
+    }
+    
+    public void showUnreadMsgView(){
+        unreadMsgView.setVisibility(View.VISIBLE);
+    }
+    public void hideUnreadMsgView(){
+        unreadMsgView.setVisibility(View.INVISIBLE);
+    }
+    
+}

+ 19 - 0
app/src/main/java/com/technology/tederen/widget/emwight/EaseChatRecallPresenter.java

@@ -0,0 +1,19 @@
+package com.hyphenate.chatuidemo.widget;
+
+import android.content.Context;
+import android.widget.BaseAdapter;
+
+import com.hyphenate.chat.EMMessage;
+import com.hyphenate.easeui.widget.chatrow.EaseChatRow;
+import com.hyphenate.easeui.widget.presenter.EaseChatRowPresenter;
+
+/**
+ * Created by zhangsong on 17-10-12.
+ */
+
+public class EaseChatRecallPresenter extends EaseChatRowPresenter {
+    @Override
+    protected EaseChatRow onCreateChatRow(Context cxt, EMMessage message, int position, BaseAdapter adapter) {
+        return new EaseChatRowRecall(cxt, message, position, adapter);
+    }
+}

+ 48 - 0
app/src/main/java/com/technology/tederen/widget/emwight/EaseChatRowRecall.java

@@ -0,0 +1,48 @@
+package com.hyphenate.chatuidemo.widget;
+
+import android.content.Context;
+import android.widget.BaseAdapter;
+import android.widget.TextView;
+
+import com.hyphenate.chat.EMMessage;
+import com.hyphenate.chatuidemo.R;
+import com.hyphenate.easeui.widget.chatrow.EaseChatRow;
+
+/**
+ * Created by easemob on 2017/7/31.
+ */
+
+public class EaseChatRowRecall extends EaseChatRow{
+
+    private TextView contentView;
+
+    public EaseChatRowRecall(Context context, EMMessage message, int position, BaseAdapter adapter) {
+        super(context, message, position, adapter);
+    }
+
+    @Override
+    protected void onInflateView() {
+        inflater.inflate(R.layout.em_row_recall_message, this);
+    }
+
+    @Override
+    protected void onFindViewById() {
+        contentView = (TextView) findViewById(R.id.text_content);
+    }
+
+    @Override
+    protected void onSetUpView() {
+        // 设置显示内容
+        String messageStr = null;
+        if (message.direct() == EMMessage.Direct.SEND) {
+            messageStr = String.format(context.getString(R.string.msg_recall_by_self));
+        } else {
+            messageStr = String.format(context.getString(R.string.msg_recall_by_user), message.getFrom());
+        }
+        contentView.setText(messageStr);
+    }
+
+    @Override
+    protected void onViewUpdate(EMMessage msg) {
+    }
+}

+ 19 - 0
app/src/main/java/com/technology/tederen/widget/emwight/EaseChatVoiceCallPresenter.java

@@ -0,0 +1,19 @@
+package com.hyphenate.chatuidemo.widget;
+
+import android.content.Context;
+import android.widget.BaseAdapter;
+
+import com.hyphenate.chat.EMMessage;
+import com.hyphenate.easeui.widget.chatrow.EaseChatRow;
+import com.hyphenate.easeui.widget.presenter.EaseChatRowPresenter;
+
+/**
+ * Created by zhangsong on 17-10-12.
+ */
+
+public class EaseChatVoiceCallPresenter extends EaseChatRowPresenter {
+    @Override
+    protected EaseChatRow onCreateChatRow(Context cxt, EMMessage message, int position, BaseAdapter adapter) {
+        return new ChatRowVoiceCall(cxt, message, position, adapter);
+    }
+}

+ 28 - 0
app/src/main/java/com/technology/tederen/widget/emwight/MyChronometer.java

@@ -0,0 +1,28 @@
+package com.hyphenate.chatuidemo.widget;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.Chronometer;
+
+public class MyChronometer extends Chronometer{
+
+    public MyChronometer(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+    }
+
+    public MyChronometer(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public MyChronometer(Context context) {
+        super(context);
+    }
+    
+    @Override
+    protected void onWindowVisibilityChanged(int visibility) {
+        //continue when view is hidden
+        visibility = View.VISIBLE;
+        super.onWindowVisibilityChanged(visibility);
+    }
+}

+ 29 - 0
app/src/main/java/com/technology/tederen/widget/emwight/SquareRelativeLayout.java

@@ -0,0 +1,29 @@
+package com.hyphenate.chatuidemo.widget;
+
+import android.content.Context;
+import android.support.annotation.Nullable;
+import android.util.AttributeSet;
+import android.widget.RelativeLayout;
+
+/**
+ * Created by zhangsong on 18-4-27.
+ */
+
+public class SquareRelativeLayout extends RelativeLayout {
+    public SquareRelativeLayout(Context context) {
+        super(context);
+    }
+
+    public SquareRelativeLayout(Context context, @Nullable AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public SquareRelativeLayout(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+    }
+
+    @Override
+    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        super.onMeasure(widthMeasureSpec, widthMeasureSpec);
+    }
+}

+ 39 - 0
app/src/main/res/layout/em_row_recall_message.xml

@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:gravity="center"
+    >
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="center"
+        android:orientation="vertical"
+        >
+
+        <LinearLayout
+            android:id="@+id/layout_bubble"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_margin="@dimen/recall_dimen"
+            android:background="@drawable/recall_message_bg"
+            android:gravity="center"
+            android:orientation="vertical"
+            android:paddingBottom="@dimen/recall_dimen_4"
+            android:paddingLeft="@dimen/recall_dimen"
+            android:paddingRight="@dimen/recall_dimen"
+            android:paddingTop="@dimen/recall_dimen_4"
+            >
+            <!--消息内容-->
+            <TextView
+                android:id="@+id/text_content"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:maxWidth="@dimen/recall_dimen_256"
+                android:textColor="@color/recall_black_38"
+                android:textSize="@dimen/recall_size_12"
+                />
+        </LinearLayout>
+    </LinearLayout>
+</RelativeLayout>

BIN
app/src/main/res/newicon.jpg


+ 4 - 0
easeui/src/main/java/com/hyphenate/easeui/utils/Utils.java

@@ -0,0 +1,4 @@
+package com.hyphenate.easeui.utils;
+
+public class Utils {
+}