# ChatView
**Repository Path**: fzyme_admin/ChatView
## Basic Information
- **Project Name**: ChatView
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-05-11
- **Last Updated**: 2021-05-11
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# ChatView for Android
This is an Android library which can be used to add chat functionality to your android application with just a few lines of code.
This library is still in beta but will be improved over time.
|
|
|
|
|
|
You should have a accent color in your colors.xml otherwise view will crash.
You can hide or show sender layout
```xml
app:showSenderLayout="true or false"
```
This is still in beta
Sender Layout has 4 buttons for now.
* Send Button
* Camera Button
* Gallery Button
* Video Button
and a Text box
You can change the color of buttons by changing the accent color you use in your app.
Note: You should use your own logic of picking images,videos and capturing images.
In this sample I used an external library to pick images from gallery.
```java
//Send button click listerer
chatView.setOnClickSendButtonListener(new ChatView.OnClickSendButtonListener() {
@Override
public void onSendButtonClick(String body) {
if(switchbool) {
Message message = new Message();
message.setBody(body);
message.setType(Message.RightSimpleMessage);
message.setTime(getTime());
message.setUserName("Groot");
message.setUserIcon(Uri.parse("android.resource://com.shrikanthravi.chatviewlibrary/drawable/groot"));
chatView.addMessage(message);
switchbool=false;
}
else{
Message message1 = new Message();
message1.setBody(body);
message1.setType(Message.LeftSimpleMessage);
message1.setTime(getTime());
message1.setUserName("Hodor");
message1.setUserIcon(Uri.parse("android.resource://com.shrikanthravi.chatviewlibrary/drawable/hodor"));
chatView.addMessage(message1);
switchbool=true;
}
}
});
//Gallery button click listener
chatView.setOnClickGalleryButtonListener(new ChatView.OnClickGalleryButtonListener() {
@Override
public void onGalleryButtonClick() {
Matisse.from(ChatViewTestActivity.this)
.choose(MimeType.allOf())
.countable(true)
.maxSelectable(9)
.restrictOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED)
.thumbnailScale(0.85f)
.imageEngine(new PicassoEngine())
.forResult(imagePickerRequestCode);
}
});
//Video button click listener
chatView.setOnClickVideoButtonListener(new ChatView.OnClickVideoButtonListener() {
@Override
public void onVideoButtonClick() {
Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Video.Media.EXTERNAL_CONTENT_URI);
i.setType("video/*");
startActivityForResult(i, SELECT_VIDEO);
}
});
//Camera button click listener
chatView.setOnClickCameraButtonListener(new ChatView.OnClickCameraButtonListener() {
@Override
public void onCameraButtonClicked() {
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
File file = new File(Environment.getExternalStorageDirectory(), "MyPhoto.jpg");
file.delete();
File file1 = new File(Environment.getExternalStorageDirectory(), "MyPhoto.jpg");
Uri uri = FileProvider.getUriForFile(ChatViewTestActivity.this, getApplicationContext().getPackageName() + ".provider", file1);
cameraIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(cameraIntent, CAMERA_REQUEST);
}
});
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//Image Selection result
if (requestCode == imagePickerRequestCode && resultCode == RESULT_OK) {
mSelected = Matisse.obtainResult(data);
if(switchbool) {
if (mSelected.size() == 1) {
Message message = new Message();
message.setBody(messageET.getText().toString().trim());
message.setType(Message.RightSingleImage);
message.setTime(getTime());
message.setUserName("Groot");
message.setImageList(mSelected);
message.setUserIcon(Uri.parse("android.resource://com.shrikanthravi.chatviewlibrary/drawable/groot"));
chatView.addMessage(message);
switchbool=false;
} else {
Message message = new Message();
message.setBody(messageET.getText().toString().trim());
message.setType(Message.RightMultipleImages);
message.setTime(getTime());
message.setUserName("Groot");
message.setImageList(mSelected);
message.setUserIcon(Uri.parse("android.resource://com.shrikanthravi.chatviewlibrary/drawable/groot"));
chatView.addMessage(message);
switchbool=false;
}
}
else{
if (mSelected.size() == 1) {
Message message = new Message();
message.setBody(messageET.getText().toString().trim());
message.setType(Message.LeftSingleImage);
message.setTime(getTime());
message.setUserName("Hodor");
message.setImageList(mSelected);
message.setUserIcon(Uri.parse("android.resource://com.shrikanthravi.chatviewlibrary/drawable/hodor"));
chatView.addMessage(message);
switchbool=true;
} else {
Message message = new Message();
message.setBody(messageET.getText().toString().trim());
message.setType(Message.LeftMultipleImages);
message.setTime(getTime());
message.setUserName("Hodor");
message.setImageList(mSelected);
message.setUserIcon(Uri.parse("android.resource://com.shrikanthravi.chatviewlibrary/drawable/hodor"));
chatView.addMessage(message);
switchbool=true;
}
}
}
else {
//Video Selection result
if (requestCode == SELECT_VIDEO && resultCode == RESULT_OK) {
if (switchbool) {
Message message = new Message();
message.setType(Message.RightVideo);
message.setTime(getTime());
message.setUserName("Groot");
message.setVideoUri(Uri.parse(getPath(data.getData())));
message.setUserIcon(Uri.parse("android.resource://com.shrikanthravi.chatviewlibrary/drawable/groot"));
chatView.addMessage(message);
switchbool = false;
} else {
Message message = new Message();
message.setType(Message.LeftVideo);
message.setTime(getTime());
message.setUserName("Hodor");
message.setVideoUri(Uri.parse(getPath(data.getData())));
message.setUserIcon(Uri.parse("android.resource://com.shrikanthravi.chatviewlibrary/drawable/hodor"));
chatView.addMessage(message);
switchbool = true;
}
}
else{
//Image Capture result
if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) {
if (switchbool) {
Message message = new Message();
message.setType(Message.RightSingleImage);
message.setTime(getTime());
message.setUserName("Groot");
mSelected.clear();
File file = new File(Environment.getExternalStorageDirectory(), "MyPhoto.jpg");
//Uri of camera image
Uri uri = FileProvider.getUriForFile(this, getApplicationContext().getPackageName() + ".provider", file);
mSelected.add(uri);
message.setImageList(mSelected);
message.setUserIcon(Uri.parse("android.resource://com.shrikanthravi.chatviewlibrary/drawable/groot"));
chatView.addMessage(message);
switchbool = false;
} else {
Message message = new Message();
message.setType(Message.LeftSingleImage);
message.setTime(getTime());
message.setUserName("Hodor");
mSelected.clear();
File file = new File(Environment.getExternalStorageDirectory(), "MyPhoto.jpg");
//Uri of camera image
Uri uri = FileProvider.getUriForFile(this, getApplicationContext().getPackageName() + ".provider", file);
mSelected.add(uri);
message.setImageList(mSelected);
message.setUserIcon(Uri.parse("android.resource://com.shrikanthravi.chatviewlibrary/drawable/hodor"));
chatView.addMessage(message);
switchbool = true;
}
}
}
}
}
```
### Customization
Note: You can customize the chatview in both xml and java way.
```xml
//xml