GithubHelp home page GithubHelp logo

chatmessageview's Introduction

ChatMessageView

Build Status Android Arsenal Download API Apache-2.0

This library aims to provide a chat UI view for Android.

Feature

  • You need to write just few code to create chat view.
  • Auto date setting
  • Easy to use for bot app

Gradle

Download

dependencies {
    implementation 'com.github.bassaer:chatmessageview:2.1.0'
}

Usage

How to use this library

Only MessageView

<?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">

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

</LinearLayout>

ChatView has MessageView and text box.

<?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">

    <com.github.bassaer.chatmessageview.view.ChatView
        android:id="@+id/chat_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</LinearLayout>

Sample code

public class MessengerActivity extends Activity {

    private ChatView mChatView;

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

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

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

        final User me = new User(myId, myName, myIcon);
        final User you = new User(yourId, yourName, yourIcon);

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

        //Set UI parameters if you need
        mChatView.setRightBubbleColor(ContextCompat.getColor(this, R.color.green500));
        mChatView.setLeftBubbleColor(Color.WHITE);
        mChatView.setBackgroundColor(ContextCompat.getColor(this, R.color.blueGray500));
        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...");
        mChatView.setMessageMarginTop(5);
        mChatView.setMessageMarginBottom(5);

        //Click Send Button
        mChatView.setOnClickSendButtonListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //new message
                Message message = new Message.Builder()
                        .setUser(me)
                        .setRight(true)
                        .setText(mChatView.getInputText())
                        .hideIcon(true)
                        .build();
                //Set to chat view
                mChatView.send(message);
                //Reset edit text
                mChatView.setInputText("");

                //Receive message
                final Message receivedMessage = new Message.Builder()
                        .setUser(you)
                        .setRight(false)
                        .setText(ChatBot.talk(me.getName(), message.getText()))
                        .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);
            }

        });

    }
}

License

Apache-2.0

chatmessageview's People

Contributors

bassaer avatar bmx666 avatar flatfisher avatar gitlabbin avatar iddqdidkfa avatar mambrosi avatar tarumzu avatar wprenison avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

chatmessageview's Issues

Async load images causes message to appear at bottom

I'm retrieving a list of messages from my server with some being an image instead of text. I'm loading the images as a bitmap using Picasso/Glide, however due to this being an async process, this is done in the background, which means other messages are getting added whilst the image is being loaded into a bitmap.

The result is that messages are not ordered correctly, with messages that have an image showing further down the message view instead of in date order, as expected.

Is there a way to correct this?

Is there any way to get current messages are displayed?

I'm using the server to get data. I want to compare old messages with the new message to add into list Messages. But No way to clear current list messages. So I want to find another way to get current messages are displayed?

Right/Left bubble color cannot be changed in Android 4.x / 5.x

Hi, thank you for providing a great plugin.

I wrote the following test code.

chatView.setRightBubbleColor(Color.YELLOW)
chatView.setLeftBubbleColor(Color.YELLOW)

Android 6.0.1 (Nexus 5X)

It works in Android 6.x.

Android 5.0.1 (Nexus 5)

But It does not work in Android 5.x. And same in Android 4.x.

Is this a bug? Or am I wrong?

example MessengerActivity leaks memory

Hey i was wondering why the memory was increasing while re-launching the MessengerActivity in the example directory so i tryed to find something in the java heap while re-launching but i didnt had enough experience to find something. Then i found LeakCanary a Library that helps you to find memory leaks i used it to find leaks in your MessengerActivity and get this result but i do not have that much experience to interpret it pls help me :)
ps: I have the same leak in my application
screenshot

NullPointerException while creating Picture Message

I got an null pointer Exception like Issue #64. I only tryed to creat an Message with a Picture according to your Picture Message tutorial
I used ChatView for displaying the message

Here is my Logcat :

FATAL EXCEPTION: main
Process: com.example.dennis.imagemsg, PID: 19443
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setTextSize(int, float)' on a null object reference
at com.github.bassaer.chatmessageview.views.adapters.MessageAdapter.getView(MessageAdapter.java:349)
at android.widget.AbsListView.obtainView(AbsListView.java:2346)
at android.widget.ListView.makeAndAddView(ListView.java:1876)
at android.widget.ListView.fillDown(ListView.java:702)
at android.widget.ListView.fillFromTop(ListView.java:763)
at android.widget.ListView.layoutChildren(ListView.java:1671)
at android.widget.AbsListView.onLayout(AbsListView.java:2148)
at android.view.View.layout(View.java:16636)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.support.v4.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:610)
at android.view.View.layout(View.java:16636)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
at android.view.View.layout(View.java:16636)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1732)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1497)
at android.view.View.layout(View.java:16636)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
at android.view.View.layout(View.java:16636)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16636)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.support.v7.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:443)
at android.view.View.layout(View.java:16636)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16636)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
at android.view.View.layout(View.java:16636)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2678)
at android.view.View.layout(View.java:16636)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2171)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1931)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
at android.view.Choreographer.doCallbacks(Choreographer.java:670)
at android.view.Choreographer.doFrame(Choreographer.java:606)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteIn

Enhancement: Caption when sending images

Would you consider showing the message text sent with an image?
Right now setting the message text with an image has no effect. The image show, but not the caption.

How to show image in chat message view?

I want to share images to partner. I see that ChatMessageView can display the images. But I cannot find the method where I can pass the image to ChatView or MessageView. Please help me!

Showing Users Icons on version 1.8.6

inspired by the sample on the GitHub,
I think there's an issue showing IchatUser Icons on the 1.8.6 release
It took the space (where it's supposed to be seen) but no icons shown
screenshot_20180111-104053

Clear list of messages

Hello.
Thanks for a great library.

Until version 1.4.1, I cleared it by calling MessageView 's init method.

It seems that it will not be cleared in later versions, so I'm very happy to have a method to clear the list of messages.

Classes names contradict with my classes

User class and Message class names are creating conflicts with my Model having the same name, Wouldn't be better to have their names related to the library?

Maybe something like "ChatMessage" "ChatUser" or something could only be used within the library?

Thanks

Other locales times

When the default locale is not US, a comparator malfunction occurs.
Could you use Locale.getDefault()?

// MessageDateComparaor.java line14
SimpleDateFormat f = new SimpleDateFormat("MMM. dd, yyyy", Locale.US);

Library Click Events not being triggered

Hello,

I have a ChatMessageView and I am not able to get the click events being triggered

My code :

mChatView.setOnBubbleLongClickListener(new Message.OnBubbleLongClickListener() { @Override public void onLongClick(Message message) { System.out.println(message.getMessageText()); } });

Despite the Icon & Bubble events not being triggered, the options & send button are fine

Is that a problem with my code ?

Thanks in advance for the reply

Rémy

Set date for messages

Hi,

is it possible to set the date/time for every message? I don't want to see the date when the message was created in Android but the date when the message was actually send and stored in the database.

Does something like following (setTime) exists?
Message message = new Message.Builder()
.setUser(me)
.setRightMessage(true)
.setMessageText(mChatView.getInputText())
.hideIcon(true)
.setTime(1498559503 )
.build();

How to remove the default icon of User

Hello thank you very much for the wonderful library. I would like to remove the icon for the User. But when I set it to null, a default one appears. Is there a way to remove the default icon for the user.

change message font size

thank you for this library
i wonder how i can change message font size
and how o make message bubble width fix to not flexible as message text

Possibility to dynamically update status?

Hi
Thanks for a great library.

I have an enhancement request.

There is no possibility to update the message status dynamically as the chat view doesn't let us retrieve the single Message item.

Could you add this?

Chat view not visible

Hi,
i try to use this library with your example code, but on device visible only text input and send message button.
android:layout_height="match_parent"
screenshot_2

screenshot_1

If i set height manual:
android:layout_height="300dp"
chat view is visible.
screenshot_3
screenshot_4

What wrong? Why "match_parent" not working?

Disable Option button

There's a method for setEnableSendButton(boolean enable) but no such method for Option button like setEnableOptionButton. I can hide the option button using setOptionButtonColor(android.R.color.transparent) but the ripple is still visible if the button is clicked.

time text font size

default_time_text element is not connected with dimes.xml so i cant change thats size.

<TextView android:id="@+id/time_display_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/default_time_text" />

Talk to MessageView inside ChatView?

I like the library, but the only way I've found to show a chat history in the ChatView is by receiving them one by one every time I start up the view. Is there any way I can call init(ArrayList list) on the ChatView?

There is a MAP TYPE

How can I use it, MAP TYPE?
I want to show the map of some location I searched in my message

Received messages not visible in chat

After start of activity the scrolling of chat outgoing messages work. The received messages are not visible yet when I manually scroll the view they appear from the bottom of view (that expands itself with each new message). It seems that MessageView is not refreshed or scrolled after each new message. Can I trigger it somehow from your API?

Library Click Events not being triggered [2]

Hi,

I have a ChatView where I want the user to be able to click on the bubble and get something done.

Currently what happens is, on the first time I open my Fragment which contains the ChatView and click on any bubble, nothing happens.

After I go back to the previous Fragment (A list of chats like WhatsApp main screen) and open the same chat I was previously and click on the same bubble or any other, the bubble click works.

My code:

chatView.setOnBubbleClickListener(new Message.OnBubbleClickListener() {

               @Override

                    public void onClick(Message message) {

                              if (CheckNetworkAvailability.isNetworkAvailable(getContext())){

                                     presenter.onBubbleClicked(message);

                                     Toast.makeText(getContext(), "Bubble Clicked", Toast.LENGTH_SHORT).show();

                               }else{

                                       Toast.makeText(getContext(), "Can't open message", Toast.LENGTH_SHORT).show();

                }
            }
        });

(Not important but for context: This code of mine checks if there is internet available and if there is it uses the content from the API I'm using to open a WebView from the clicked message)

IMPORTANT:
Code I've used to make tests:

chatView.setOnBubbleClickListener(new Message.OnBubbleClickListener() {
            @Override
            public void onClick(Message message) {

                 Toast.makeText(getContext(), "Bubble Clicked", Toast.LENGTH_SHORT).show();
              
            }
        });

Both codes present the behaviour I've mentioned. At first nothing happens, after coming back to the ChatView activity the BubbleClick works. I can't figure out why.

error civ_border_width has already been defined

First of all thanks for your work, I hope you can help me.
I'm getting an issue once I added the dependency in the project, any way to solve the issue?

Error:(387) Attribute "civ_border_width" has already been defined

message item configrations

message box margins, paddings, fonts and color should be editable.. your package has a dimes.xml but i cant edit that programmatically,

and also left messages between margins and left and right messages between margins should be different.

the space between all messages should not be fixed.

Custom layout as a message?

I would like to use a cardview that contains several views like ImageView, TextViews and buttons to be displayed as a message. Is there any way to do this?

time message sent as string can not be used

Hey! Thanks for this project it's awesome.
A request, can i change the auto time field and make it to be a string? I get also text from the request eg(4 days ago) and I would like to add it
Thank you

Sort messages

Messages sould be always sorted by createdAt. There is no possibility to add message from past, messages always appers in bottom.

Multiline text

Can you alter the layout so that editext ("message_edit_text") can be set as multiline? Writing more than a sentence means the text scrolls from left to right and hides part of it out of view.

I tried altering this myself programatically but it won't work correctly as the LinearLayout it's wrapped in can't have it's height changed to WRAP_CONTENT. It needs given an ID. Or perhaps it should be given another dimension string other than @dimen/icon_normal that we can alter.

App crashs when keyboard appear

Here is error:
java.lang.NullPointerException: Attempt to invoke interface method 'void com.github.bassaer.chatmessageview.views.MessageView$OnKeyboardAppearListener.onKeyboardAppeared(boolean)' on a null object reference at com.github.bassaer.chatmessageview.views.MessageView.onSizeChanged(MessageView.java:139)

Scrolling Issue

FATAL EXCEPTION: main
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setImageBitmap(android.graphics.Bitmap)' on a null object reference
at jp.bassaer.chatmessageview.MessageAdapter.getView(MessageAdapter.java:52)
at android.widget.AbsListView.obtainView(AbsListView.java:2346)
at android.widget.ListView.makeAndAddView(ListView.java:1876)
at android.widget.ListView.fillUp(ListView.java:736)
at android.widget.ListView.fillGap(ListView.java:675)
at android.widget.AbsListView.trackMotionScroll(AbsListView.java:5053)
at android.widget.AbsListView.scrollIfNeeded(AbsListView.java:3448)
at android.widget.AbsListView.onTouchMove(AbsListView.java:3844)
at android.widget.AbsListView.onTouchEvent(AbsListView.java:3675)
at android.view.View.dispatchTouchEvent(View.java:9323)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2707)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2400)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2713)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2414)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2713)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2414)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2713)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2414)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2713)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2414)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2713)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2414)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2713)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2414)
at com.android.internal.policy.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2409)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1737)
at android.app.Activity.dispatchTouchEvent(Activity.java:2805)
at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:63)
at com.android.internal.policy.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2370)
at android.view.View.dispatchPointerEvent(View.java:9599)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4298)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4142)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3669)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3722)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3688)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3814)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3696)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3871)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3669)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3722)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3688)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3696)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3669)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6510)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6454)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6415)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6643)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method)
at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:176)
at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:6611)

SwipeRefreshListener + setRefreshing

I see there is a SwipeRefresh Listener and setRefreshing methods on the ChatView class.

I wanna know how to use them? I tried the listener with a TOAST but nothing happened at first when I tried to swipe on the TOP of the ChatView (First message).

More details:

What I want to do is to have a SwiperRefresh behaviour on the first message (TOP of the ChatView) to load more messages from the past (Like in WhatsApp). In my case I'm using an API to provide me these messages so no worries about this part. I will have messages to show on Swipe. But, as I've mentioned, I wanna know if the ChatView already provide something like this and how to use it specific on it?

Otherwise, I will do this myself, manually. =)

java.lang.NullPointerException Using ChatView in Fragment

i got NullPointer Exception when i try to write a 2nd message using Chat view on Fragment
this is my Logcat

FATAL EXCEPTION: main
Process: rrdl.crt, PID: 1636
java.lang.NullPointerException
at com.github.bassaer.chatmessageview.views.adapters.MessageAdapter.getView(MessageAdapter.java:350)
at android.widget.AbsListView.obtainView(AbsListView.java:2338)
at android.widget.ListView.makeAndAddView(ListView.java:1812)
at android.widget.ListView.fillDown(ListView.java:698)
at android.widget.ListView.fillGap(ListView.java:662)
at android.widget.AbsListView.trackMotionScroll(AbsListView.java:5529)
at android.widget.AbsListView$FlingRunnable.run(AbsListView.java:4596)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:788)
at android.view.Choreographer.doCallbacks(Choreographer.java:591)
at android.view.Choreographer.doFrame(Choreographer.java:559)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:774)
at android.os.Handler.handleCallback(Handler.java:808)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5299)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:831)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:647)
at dalvik.system.NativeStart.main(Native Method)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.