ChatMessageView

  • 列表 (ListView)
  • ★★★★★
  • 2017-01-09 16:26
  • 1132 kb
  • Android Studio

介绍:

一个实现了聊天界面的库。

运行效果:

使用说明:

Gradle

dependencies {
    compile 'jp.bassaer:chatmessageview:1.2.0'
}

只有消息(MessageView)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent">

    <jp.bassaer.chatmessageview.MessageView
        android:id="@+id/message_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</LinearLayout>

实现了文字输入框的聊天界面

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">

    <jp.bassaer.chatmessageview.views.ChatView
        android:id="@+id/chat_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</LinearLayout>

Sample code

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_messenger);

    //User icon
    final Bitmap myIcon = BitmapFactory.decodeResource(getResources(), R.drawable.face_2);
    //User name
    final String myName = "Michael";

    final Bitmap yourIcon = BitmapFactory.decodeResource(getResources(), R.drawable.face_1);
    final String yourName = "Emily";

    mChatView = (ChatView)findViewById(R.id.chat_view);

    //Set UI options
    mChatView.setRightBubbleColor(ContextCompat.getColor(this, R.color.deepOrange500));
    mChatView.setLeftBubbleColor(Color.WHITE);
    mChatView.setBackgroundColor(ContextCompat.getColor(this, R.color.blueGray700));
    mChatView.setSendButtonColor(ContextCompat.getColor(this, R.color.cyan500));
    mChatView.setSendIcon(R.drawable.ic_action_send);
    mChatView.setRightMessageTextColor(Color.WHITE);
    mChatView.setLeftMessageTextColor(Color.BLACK);
    mChatView.setUsernameTextColor(Color.WHITE);
    mChatView.setSendTimeTextColor(Color.WHITE);
    mChatView.setDateSeparatorColor(Color.WHITE);
    mChatView.setInputTextHint("new message...");

    //Click Send Button
    mChatView.setOnClickSendButtonListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //new message
            Message message = new Message.Builder()
                    .setUserIcon(myIcon)
                    .setUserName(myName)
                    .setRightMessage(true)
                    .setMessageText(mChatView.getInputText())
                    .build();
            //Set to chat view
            mChatView.send(message);
            //Reset edit text
            mChatView.setInputText("");

            //Receive message
            final Message receivedMessage = new Message.Builder()
                    .setUserIcon(yourIcon)
                    .setUserName(yourName)
                    .setRightMessage(false)
                    .setMessageText(ChatBot.talk(message.getUserName(), message.getMessageText()))
                    .build();

            // This is a demo bot
            // Return within 3 seconds
            int sendDelay  = (new Random().nextInt(4) +1) * 1000;
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    mChatView.receive(receivedMessage);
                }
            }, sendDelay);
        }
    });
}