lucasr / twoway-view Goto Github PK
View Code? Open in Web Editor NEW[DEPRECATED] RecyclerView made simple
[DEPRECATED] RecyclerView made simple
as the title.
Wondering how to add footer view to the current implementation
I see the stackFromBottom method in AbsListView which extends AdapterView. Also, the twoway-view extends AdapterView. But there's no stackFromBottom method it.
So there's the question:
How to add stackFromBottom attribute in it? Or there's another method to use?
On devices with small screen size and android 2.3, like Galaxy Gio GT-S5660, Galaxy Ace Duos GT-S6802 scroll dosen't work.
There is following code in the method private boolean maybeStartScrolling(int delta)
every time return true:
if (Math.abs(delta) <= mTouchSlop && !isOverScroll)
Because mTouchSlop equal 12 (Galaxy Ace), or 16 (Galaxy Gio), and I can't do any gesture to increase delta bigger, then mTouchSlop.
P.S. Sorry for my terrible English.
I use LoaderCallbacks to populate a CursorAdaptor with the loaded cursor when it has finished loading and pass it to the TwoWay-View.
The TwoWay-View component is displaying correctly, but what I am seeing is that the CursorAdapter bindView method is being called constantly. It is called continuously even though there are only 10 items in the list and I am not moving/scrolling the list (actually I am not touching the screen at all).
This is a problem for me, because I download images (1 for each item in the list) and I am generating too many requests for http client calls. Even though the results for these calls are cached, this is not ideal. I didn't have this issue when using a GridView or a ListView for the exact same scenario.
Are there any ways to check the bitmap for being recycled?
java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@40a1fd38, 109x87
at android.graphics.Canvas.throwIfRecycled(Canvas.java:973)
at android.graphics.Canvas.drawBitmap(Canvas.java:1062)
at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:332)
at android.widget.ImageView.onDraw(ImageView.java:943)
at android.view.View.draw(View.java:7014)
at android.view.ViewGroup.drawChild(ViewGroup.java:1732)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
at android.view.ViewGroup.drawChild(ViewGroup.java:1730)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
at org.lucasr.twowayview.TwoWayView.dispatchDraw(TwoWayView.java:3605)
at android.view.View.draw(View.java:7017)
at org.lucasr.twowayview.TwoWayView.draw(TwoWayView.java:3614)
I am getting an exception while trying to run demo project
Caused by: java.lang.NoClassDefFoundError: android.support.v4.widget.EdgeEffectCompat
at org.lucasr.twowayview.TwoWayView.setOverScrollMode(TwoWayView.java:936)
at android.view.View.(View.java:3237)
at android.view.View.(View.java:3295)
at android.view.ViewGroup.(ViewGroup.java:427)
at android.widget.AdapterView.(AdapterView.java:235)
at org.lucasr.twowayview.TwoWayView.(TwoWayView.java:287)
at org.lucasr.twowayview.TwoWayView.(TwoWayView.java:283)
Can you please implement functionality of Endless list with this Twoway- view so for huge data loading its good to use.
Thanks
Nkpatel
On line 5740, in LayoutParams(ViewGroup.LayoutParams other)
Log.w(LOGTAG, "Constructing LayoutParams with height MATCH_PARENT - " +
'height' should be 'width'.
Hey so I was hoping to override the overscroll mechanism to get a bounce effect.
Normally on ScrollViews I can just override overScrollBy and give it a custom max overscroll distance.
I've tried doing that with the overScrollByInternal call in this view, but it doesn't seem to do it.
Any ideas how this functionality can be achieved?
Hi,
I was playing with the sample in the emulator with android 4.2.
I changed the list_item width to 50dp and changed the orientation of the TwoWayView to horizontal.
While flinging the view, I rapidly get a NullPointerException with the following stacktrace :
03-17 21:30:14.939: ERROR/AndroidRuntime(2108): FATAL EXCEPTION: main
java.lang.NullPointerException
at org.lucasr.twowayview.TwoWayView.fillGap(TwoWayView.java:3456)
at org.lucasr.twowayview.TwoWayView.trackMotionScroll(TwoWayView.java:1924)
at org.lucasr.twowayview.TwoWayView.computeScroll(TwoWayView.java:1982)
at android.view.View.getDisplayList(View.java:12633)
at android.view.View.getDisplayList(View.java:12689)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2910)
at android.view.View.getDisplayList(View.java:12583)
at android.view.View.getDisplayList(View.java:12689)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2910)
at android.view.View.getDisplayList(View.java:12583)
at android.view.View.getDisplayList(View.java:12689)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2910)
at android.view.View.getDisplayList(View.java:12583)
at android.view.View.getDisplayList(View.java:12689)
at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:1198)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:2173)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2045)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1854)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:989)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4351)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
at android.view.Choreographer.doCallbacks(Choreographer.java:562)
at android.view.Choreographer.doFrame(Choreographer.java:532)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5039)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
Cheers
Hi!
Is the library compatible with GINGERBREAD (API 10) ?
I've used it over a map, inside an viewpager, but it doesn't seems that it is compatible. Does anyone has information about it ?
Ps: Is there any news on the development of smoothScrollToPosition/By ?
Thanks.
Hi,
Methods getFirstVisiblePosition() and getLastVisiblePosition() returns 0 and list.size(). So my Adapter downloading all images, even if they are not visible.
Feature?
I want to say thanks for this great lib, How can I hide scrollbars in this view?
Unfortunately android:scrollbars="none"
not working!
I have implemented view like so
<RelativeLayout android:layout_width="match_parent"
android:layout_height="270dp">
<org.lucasr.twowayview.TwoWayView
android:id="@+id/twowayview_list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:drawSelectorOnTop="false"
android:orientation="horizontal"
android:scrollbars="none"
/>
</RelativeLayout>
what i tried to do is to make a fix height on the horizontal list view but the parent view does not seems detect it at it stated.
Please kindly fix it, many thanks!
I am inflating the TwoWayView with ImageViews.
Layout looks like this (I am using SmartImageView):
<com.loopj.android.image.SmartImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="80dp"
android:layout_height="80dp"
/>
And here is the inflating code in getView() method of the adapter:
if (convertView == null) {
switch (getItemViewType(position)) {
case 0:
convertView = mInflater.inflate(R.layout.photo_stream_counter, null);
break;
case 1:
convertView = mInflater.inflate(R.layout.photo_stream_photo, null);
break;
default:
convertView = mInflater.inflate(R.layout.photo_stream_photo, null);
break;
}
}
But the size that I set up in xml is not taken in consideration when drawing the contents of TwoWayView. You can see it on screenshot:
And if I set the layout params programmatically, like this:
case 1:
convertView = mInflater.inflate(R.layout.photo_stream_photo, null);
convertView.setLayoutParams(new TwoWayView.LayoutParams(imageSize, imageSize));
break;
But when I try to scroll the view, it fails with exception:
ERROR/AndroidRuntime(703): FATAL EXCEPTION: main
java.lang.ClassCastException: com.dudu.android.views.CounterButton cannot be cast to com.loopj.android.image.SmartImageView
at com.dudu.android.main.profile.photostream.PhotoStreamAdapter.getView(PhotoStreamAdapter.java:53)
at com.dudu.android.views.TwoWayView.obtainView(TwoWayView.java:3880)
The first item in my TwoWayView is the CounterButton, showing the actual amount of photos. But somehow getView() receives it in convertView instead of SmartImageView.
If I don't resize the images, the scrolling works fine.
While trying to inflate a custom layout, i'm getting a NullPointerException.
11-22 15:55:48.318: E/AndroidRuntime(20366): FATAL EXCEPTION: main
11-22 15:55:48.318: E/AndroidRuntime(20366): java.lang.NullPointerException
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.support.v4.view.ViewCompatJB.getImportantForAccessibility(ViewCompatJB.java:54)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.support.v4.view.ViewCompat$JBViewCompatImpl.getImportantForAccessibility(ViewCompat.java:481)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.support.v4.view.ViewCompat.getImportantForAccessibility(ViewCompat.java:837)
11-22 15:55:48.318: E/AndroidRuntime(20366): at org.lucasr.twowayview.TwoWayView.obtainView(TwoWayView.java:5344)
11-22 15:55:48.318: E/AndroidRuntime(20366): at org.lucasr.twowayview.TwoWayView.measureWidthOfChildren(TwoWayView.java:4710)
11-22 15:55:48.318: E/AndroidRuntime(20366): at org.lucasr.twowayview.TwoWayView.onMeasure(TwoWayView.java:3763)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.view.View.measure(View.java:15848)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:728)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:477)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.view.View.measure(View.java:15848)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5008)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.view.View.measure(View.java:15848)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.widget.ScrollView.measureChildWithMargins(ScrollView.java:1217)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.widget.ScrollView.onMeasure(ScrollView.java:321)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.view.View.measure(View.java:15848)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5008)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.view.View.measure(View.java:15848)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.widget.LinearLayout.measureVertical(LinearLayout.java:847)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.view.View.measure(View.java:15848)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5008)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
11-22 15:55:48.318: E/AndroidRuntime(20366): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2189)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.view.View.measure(View.java:15848)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1905)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1104)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1284)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.view.Choreographer.doCallbacks(Choreographer.java:562)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.view.Choreographer.doFrame(Choreographer.java:532)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.os.Handler.handleCallback(Handler.java:730)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.os.Handler.dispatchMessage(Handler.java:92)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.os.Looper.loop(Looper.java:137)
11-22 15:55:48.318: E/AndroidRuntime(20366): at android.app.ActivityThread.main(ActivityThread.java:5103)
11-22 15:55:48.318: E/AndroidRuntime(20366): at java.lang.reflect.Method.invokeNative(Native Method)
11-22 15:55:48.318: E/AndroidRuntime(20366): at java.lang.reflect.Method.invoke(Method.java:525)
11-22 15:55:48.318: E/AndroidRuntime(20366): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
11-22 15:55:48.318: E/AndroidRuntime(20366): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
11-22 15:55:48.318: E/AndroidRuntime(20366): at dalvik.system.NativeStart.main(Native Method)
Using Maven won't work as the support library requested does not have all of the functions.
I fixed this myself by changingg the android support library dependency to this:
<dependency>
<groupId>android.support</groupId>
<artifactId>compatibility-v4</artifactId>
<version>11</version>
</dependency>
Please note that you need to deploy it yourself using https://github.com/mosabua/maven-android-sdk-deployer
I'm trying to set the currently selected item when I do a rotation, so I'm using the method .setSelection but do nothing ... It's a bug?
UPDATE: Please close... my fault! sorry :(
Hi,
would it make sense to remove the log statement in https://github.com/lucasr/twoway-view/blob/master/library/src/org/lucasr/twowayview/TwoWayView.java#L1866 to prevent a message pollution of the console?
Thanks,
Marc
I need to leave static empty space at the two ends of the list view, for a vertical list view, I'd do:
android:paddingTop="100dp"
android:paddingBottom="100dp"
android:clipToPadding="false"
But this doesn't work with TwoWay-view, the list items get rendered weird, can you please look into this?
BTW, I also tried out sephiroth74/HorizontalVariableListView, his implementation is more feature complete, but the his HListView is not extended from AdapterView/AbaListView. And your implementation can specify orientation, so that I could use horizontal for portrait screen, and vertical for landscape screen. Good stuff, thanks!
In Eclipse:
after I import the library and sample,
I found that your code is write on "java/org/lucar" not in "src//org/lucar",
then I always get ClassNotFoundException.
How do I change the default setting about that?
The values that getScroll() returns appear to be inconsistent.
Is there any way to accurately get the current scroll position of the gridView?
Hi,
We have started using this widget a few weeks ago. It works well in terms of performance, but we would need to have keyboard navigation and proper focus handling.
Are there plans to implement those? Is there any way that we could help?
Didn't manage to create a pull request for this but I'm trying to center an item in the middle of the screen, similar to setSelection, but for centering on the screen.
public void centerOnPosition(int position)
{
if (getChildCount()>0)
{
View child=getChildAt(0);
int childmeasuredwidth=child.getMeasuredWidth();
if (childmeasuredwidth>0)
{
int whereShouldIScrollTo = (childmeasuredwidth * (2 * position + 1) - getWidth()) / 2;
int targetposition=whereShouldIScrollTo/childmeasuredwidth;
int offset=whereShouldIScrollTo%childmeasuredwidth;
//Log.e("a","centerOnPosition="+position+" whereShouldIScrollTo="+whereShouldIScrollTo+" target="+targetposition+" offset="+offset);
setSelectionFromOffset(targetposition, offset);
}
else
{
setSelectionFromOffset(position, 0);
}
}
else
{
setSelectionFromOffset(position, 0);
}
}
It works correctly, but the problem is when i notifydatasetchanged, it makes a jump. From what I saw, it seems that the handleDataChanged() has a different mSyncPosition than the target setselection.
I am testing your two-way listview, really great :) is there a way to remove the scrollbar please ? thanks in advance
What about some debug flag that enables/disables the logging?
Default value could be BuildConfig.DEBUG.
Thanks for this excellent library, the Android development world needs a good horizontal listview implementation.
Any chance that the smoothScrollBy/smoothScrollToPosition methods will be implemented in this library?
As far as I can see, this is one of the few remaining features needed to make the twoway-view match the functionality of the standard Android listview.
Hello Lucas,
as far as I can see via the source code TwoWayView can be configured to scroll horizontally or vertically, but not both at the same time.
Do you have plans to allow TwoWayView scroll at both directions?
Thanks
Do you want to add OnScrollOnBottom and OnScrollOnTop function?
I think it will be useful,
because I start to wrote right now.
How can i add Headers/Footers in the List (Is there a simple way for now)
Hi.
Right now when I click on an item, I get green color highlight. Is there a way to disable that?
I know how to add selector, but the current green color gets mixed with my colors and turns ugly.
Thank you in advance.
can i add android support divider on twowayview ? Did you add ?
I want to keep the views moving, e.g. images that slide through slowly without user interaction. If the user does touch events, that should be stopped.
Any thoughts how this could be achieved? I made a quick hack and made trackMotionScroll public, and periodically called it (like one pixel every 10ms).
Also, it would be nice to be notified when the user interacts with the view (e.g. touch). Like this, I'd be able to pause the automatic scrolling.
If the finger moves (far enough), there should be no long press event.
I have tried adding margin to the views inside, but it doesn´t seems to respect those values.
I need to highlight selected view , for example, using a selector . But I am not able to set selector ? I dont find any option to do it .
Using the inherited method call scrollTo(int x,int y)
DOES scroll the view, but any items in the list that were offscreen do not get drawn (invalidating, notifying change on adapter, nothing tried gets them drawn). So this list does scroll to where it is told, but the elements are undrawn and blank.
Using method defined in TwoWayView, scrollBy(int delta)
does not appear to work on my horizontal scrolling TwoWayView. Does not appear to change the view at all. Looking at the source code I'm not seeing any obvious reason nothing happens, the list is populated (getChildCount() returns non-zero) and it does scroll with gestures and draws the items appropriately, etc.
Has anyone has accomplished programmatic scrolling with horizontal scroll direction successfully?
When i set the orientation to horizontal,the parameters "wrap_content" for layout_height does not work.
What I would like to achieve is to "synch" the horizontal scrolling of the TwoWayView with an horizontal SeekBar displayed at the bottom of the activity screen. Here's what I've done so far:
Unfortunately, this method does not work well since the TwoWayView does not override the getScrollX and setScrollX method.
I then tried to replace the getScrollX and setScrollX methods my own custom methods that uses TwoWayView internal mScroller instance. Here is the code:
public int getScroll() {
final int pos;
mScroller.computeScrollOffset();
if (mIsVertical) {
pos = mScroller.getCurrY();
} else {
pos = mScroller.getCurrX();
}
return pos;
}
public void scrollTo(int value) {
if (mIsVertical) {
mScroller.setFinalY(value);
} else {
mScroller.setFinalX(value);
}
computeScroll();
}
But for some reason, my getScroll method return positive and negative values, from -2000 to +2000...
That said, I really need your help. I'm sure there is an easy way to implement the method I need to sync the listview scroll offset to the seekbar. I just don't know the internal workings of your component well enough to do it myself.
Thanks a lot for your help and have a nice day.
There is a bug on one of my devices (LG gt540, android 2.3). I have horizontal list of images, that fetched from the server and when the image is loaded, fade_in animation is started.
On this device if list is not scrolling at the current moment, but image loaded and animation is started, list doesn't redraw this child view, so animation like "paused" on it's first frame. After that if we will scroll list(draw methods of list was called), than animation will play. I cant figure out why so that? For some reasons drawing methods of TwoWayView not called (I've checked with logcat), when animation is playing and when the list is not scrolling.
P.S. With default android listview and same adapter everything works good.
I try to set ChoiceMode to ChoiceMode.SINGLE. I want to change background for custom item view when it selected and I wrote selector that checks android:state_activated="true". It doesn't work. The item gets default background every time.
The part of the custom item:
<TextView
android:id="@+id/text1"
android:layout_width="60dp"
android:layout_height="50dp"
android:layout_marginRight="15dp"
android:background="@drawable/item_section_background_selector"
android:textSize="12sp"
android:gravity="center_horizontal|center_vertical"
android:textColor="@android:color/black"
android:text="Example"/>
Selector:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="true" android:drawable="@android:color/transparent"/>
<item android:drawable="@drawable/section_background"/>
</selector>
I found it:
the line 4723 in TwoWayView.java
it's: returnedWidth += child.getMeasuredHeight();
should be: returnedWidth += child.getMeasuredWidth();
In Kitkat the Horizontal mode is broken, only the fist element will be shown and it contains all the area with an infinite scoll
I have implemented sample adapter with 2 types of entries.
The twowayview is looking something like this:
Everything works fine for now, but sometimes suddenly this exception is thrown:
ERROR/AndroidRuntime(25175): FATAL EXCEPTION: main
java.lang.IllegalArgumentException: The observer is null.
at android.database.Observable.unregisterObserver(Observable.java:64)
at android.widget.BaseAdapter.unregisterDataSetObserver(BaseAdapter.java:42)
at com.dudu.android.views.TwoWayView.setAdapter(TwoWayView.java:706)
What could be the reason for this?
I need this is very important to be implemented two be able to port the code from the default ListView
change line 1395 to check if adapter is null using this
} else if (mMotionPosition >= 0 && mAdapter!=null && mAdapter.isEnabled(mMotionPosition)) {
otherwise this view detects touch events and crashes if the adapter was not set yet
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.