dmitry-zaitsev / androidsidemenu Goto Github PK
View Code? Open in Web Editor NEWSide menu for android applications
Side menu for android applications
Are you able to set this up to work from the right side or bottom, instead of the left side only?
I am able to toggle(open) the sidebar on first button click but not able to close the side bar on clicking again. As per my knowledge after the sidebar opens, the parent view of the button is getting disabled because its not able to recognize my click event. Please can you look into this issue so that I can toggle the sidebar back to its initial position on button click.
i am using rtl layout and when i put this line on my main activity the app crash
public class MainActivity extends SherlockActivity {
private SlideHolder mSlideHolder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSlideHolder.setDirection(SlideHolder.DIRECTION_LEFT);
mSlideHolder = (SlideHolder) findViewById(R.id.slideHolder);
View toggleView = findViewById(R.id.textView);
toggleView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mSlideHolder.toggle();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
com.actionbarsherlock.view.MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.main, (com.actionbarsherlock.view.Menu) menu);
return super.onCreateOptionsMenu(menu);
}
}
Hello,
I downloaded and put in the code sample. Everything works as it should. But when I open several slide menu application crashes. Here is my log cat:
11-03 14:19:47.556: I/dalvikvm-heap(16278): Grow heap (frag case) to 16.168MB for 3542416-byte allocation
11-03 14:19:47.581: D/dalvikvm(16278): GC_CONCURRENT freed <1K, 7% free 15656K/16775K, paused 13ms+1ms, total 26ms
11-03 14:19:47.581: D/dalvikvm(16278): WAIT_FOR_CONCURRENT_GC blocked 12ms
11-03 14:20:08.241: E/InputEventReceiver(16278): Exception dispatching input event.
11-03 14:20:08.241: D/AndroidRuntime(16278): Shutting down VM
11-03 14:20:08.241: W/dalvikvm(16278): threadid=1: thread exiting with uncaught exception (group=0x4137e2a0)
11-03 14:20:08.256: E/AndroidRuntime(16278): FATAL EXCEPTION: main
11-03 14:20:08.256: E/AndroidRuntime(16278): java.lang.IllegalArgumentException: pointerIndex out of range
11-03 14:20:08.256: E/AndroidRuntime(16278): at android.view.MotionEvent.nativeGetAxisValue(Native Method)
11-03 14:20:08.256: E/AndroidRuntime(16278): at android.view.MotionEvent.getY(MotionEvent.java:2090)
11-03 14:20:08.256: E/AndroidRuntime(16278): at android.widget.ScrollView.onTouchEvent(ScrollView.java:839)
11-03 14:20:08.256: E/AndroidRuntime(16278): at android.view.View.dispatchTouchEvent(View.java:7337)
11-03 14:20:08.256: E/AndroidRuntime(16278): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2410)
11-03 14:20:08.256: E/AndroidRuntime(16278): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2145)
11-03 14:20:08.256: E/AndroidRuntime(16278): at com.agimind.widget.SlideHolder.dispatchTouchEvent(SlideHolder.java:486)
11-03 14:20:08.256: E/AndroidRuntime(16278): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2416)
11-03 14:20:08.256: E/AndroidRuntime(16278): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2159)
11-03 14:20:08.256: E/AndroidRuntime(16278): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2416)
11-03 14:20:08.256: E/AndroidRuntime(16278): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2159)
11-03 14:20:08.256: E/AndroidRuntime(16278): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2416)
11-03 14:20:08.256: E/AndroidRuntime(16278): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2159)
11-03 14:20:08.256: E/AndroidRuntime(16278): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2115)
11-03 14:20:08.256: E/AndroidRuntime(16278): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1468)
11-03 14:20:08.256: E/AndroidRuntime(16278): at android.app.Activity.dispatchTouchEvent(Activity.java:2487)
11-03 14:20:08.256: E/AndroidRuntime(16278): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2063)
11-03 14:20:08.256: E/AndroidRuntime(16278): at android.view.View.dispatchPointerEvent(View.java:7520)
11-03 14:20:08.256: E/AndroidRuntime(16278): at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3376)
11-03 14:20:08.256: E/AndroidRuntime(16278): at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3308)
11-03 14:20:08.256: E/AndroidRuntime(16278): at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4402)
11-03 14:20:08.256: E/AndroidRuntime(16278): at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4380)
11-03 14:20:08.256: E/AndroidRuntime(16278): at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4484)
11-03 14:20:08.256: E/AndroidRuntime(16278): at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:171)
11-03 14:20:08.256: E/AndroidRuntime(16278): at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method)
11-03 14:20:08.256: E/AndroidRuntime(16278): at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:163)
11-03 14:20:08.256: E/AndroidRuntime(16278): at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:4452)
11-03 14:20:08.256: E/AndroidRuntime(16278): at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:4503)
11-03 14:20:08.256: E/AndroidRuntime(16278): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
11-03 14:20:08.256: E/AndroidRuntime(16278): at android.view.Choreographer.doCallbacks(Choreographer.java:555)
11-03 14:20:08.256: E/AndroidRuntime(16278): at android.view.Choreographer.doFrame(Choreographer.java:523)
11-03 14:20:08.256: E/AndroidRuntime(16278): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
11-03 14:20:08.256: E/AndroidRuntime(16278): at android.os.Handler.handleCallback(Handler.java:615)
11-03 14:20:08.256: E/AndroidRuntime(16278): at android.os.Handler.dispatchMessage(Handler.java:92)
11-03 14:20:08.256: E/AndroidRuntime(16278): at android.os.Looper.loop(Looper.java:137)
11-03 14:20:08.256: E/AndroidRuntime(16278): at android.app.ActivityThread.main(ActivityThread.java:4898)
11-03 14:20:08.256: E/AndroidRuntime(16278): at java.lang.reflect.Method.invokeNative(Native Method)
11-03 14:20:08.256: E/AndroidRuntime(16278): at java.lang.reflect.Method.invoke(Method.java:511)
11-03 14:20:08.256: E/AndroidRuntime(16278): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
11-03 14:20:08.256: E/AndroidRuntime(16278): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
11-03 14:20:08.256: E/AndroidRuntime(16278): at dalvik.system.NativeStart.main(Native Method)
First of all, thank you for sharing your work, who's awesome.
I have a listview with many elements, and i implemented your SideMenu.
I would like to open the side menu only when the user scroll horizontally (not diagonal move) the view. Actually the scrolling of listview is disrupting by the SideMenu who start open when the user do a vertical scroll...
I hope you can help me.
Thanx
It was a nice implement thank you ; But I have an issue because I am using google map on the right side and expandable list in the left and I toggle button to toggle the side menu , the Issue is when I am swiping the map to navigate threw it the side menu shows , So I want to disable the sliding and keep the event on Toggle button only. Is that Possible of any other advice ?
I am add phonegap support sencha touch application using the command
sencha phonegap init
but i am getting the following error
Please suggest
[INF] [shellscript] [phonegap] missing library phonegap/www/3.2.0
[INF] [shellscript] [phonegap] downloading https://github.com/phonegap/phonegap-app-hello-world/archive/3.2.0.tar.gz...
[INF] [shellscript] [error] CERT_UNTRUSTED
[INF] [echo] Adding PhoneGap config.xml to App
[ERR] The following error occurred while executing this line:
C:\Users\jkishore\bin\Sencha\Cmd\4.0.0.203\extensions\cmd-phonegap-packager\cmd-phonegap-packager.plugin.xml:133: Warning: Could not find file C:\Users\jkishore\Desktop\del\phonegap\www\config.xml to copy.
at org.apache.tools.ant.ProjectHelper.addLocationToBuildException(ProjectHelper.java:551)
at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:444)
at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:105)
at com.sencha.ant.CallTask.execute(CallTask.java:108)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
11-14 18:02:44.588: E/InputEventReceiver(4948): Exception dispatching input event.
11-14 18:02:44.628: E/AndroidRuntime(4948): FATAL EXCEPTION: main
11-14 18:02:44.628: E/AndroidRuntime(4948): java.lang.IllegalArgumentException: pointerIndex out of range
11-14 18:02:44.628: E/AndroidRuntime(4948): at android.view.MotionEvent.nativeGetAxisValue(Native Method)
11-14 18:02:44.628: E/AndroidRuntime(4948): at android.view.MotionEvent.getY(MotionEvent.java:1996)
11-14 18:02:44.628: E/AndroidRuntime(4948): at android.widget.ScrollView.onTouchEvent(ScrollView.java:588)
11-14 18:02:44.628: E/AndroidRuntime(4948): at android.view.View.dispatchTouchEvent(View.java:7216)
11-14 18:02:44.628: E/AndroidRuntime(4948): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2277)
11-14 18:02:44.628: E/AndroidRuntime(4948): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2012)
11-14 18:02:44.628: E/AndroidRuntime(4948): at com.agimind.widget.SlideHolder.dispatchTouchEvent(SlideHolder.java:486)
11-14 18:02:44.628: E/AndroidRuntime(4948): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2283)
11-14 18:02:44.628: E/AndroidRuntime(4948): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2026)
11-14 18:02:44.628: E/AndroidRuntime(4948): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2283)
11-14 18:02:44.628: E/AndroidRuntime(4948): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2026)
11-14 18:02:44.628: E/AndroidRuntime(4948): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2283)
11-14 18:02:44.628: E/AndroidRuntime(4948): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2026)
11-14 18:02:44.628: E/AndroidRuntime(4948): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2011)
11-14 18:02:44.628: E/AndroidRuntime(4948): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1461)
11-14 18:02:44.628: E/AndroidRuntime(4948): at android.app.Activity.dispatchTouchEvent(Activity.java:2452)
11-14 18:02:44.628: E/AndroidRuntime(4948): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1959)
11-14 18:02:44.628: E/AndroidRuntime(4948): at android.view.View.dispatchPointerEvent(View.java:7396)
11-14 18:02:44.628: E/AndroidRuntime(4948): at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3235)
11-14 18:02:44.628: E/AndroidRuntime(4948): at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3180)
11-14 18:02:44.628: E/AndroidRuntime(4948): at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4216)
11-14 18:02:44.628: E/AndroidRuntime(4948): at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4195)
11-14 18:02:44.628: E/AndroidRuntime(4948): at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4287)
11-14 18:02:44.628: E/AndroidRuntime(4948): at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:171)
11-14 18:02:44.628: E/AndroidRuntime(4948): at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method)
11-14 18:02:44.628: E/AndroidRuntime(4948): at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:163)
11-14 18:02:44.628: E/AndroidRuntime(4948): at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:4266)
11-14 18:02:44.628: E/AndroidRuntime(4948): at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:4306)
11-14 18:02:44.628: E/AndroidRuntime(4948): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
11-14 18:02:44.628: E/AndroidRuntime(4948): at android.view.Choreographer.doCallbacks(Choreographer.java:555)
11-14 18:02:44.628: E/AndroidRuntime(4948): at android.view.Choreographer.doFrame(Choreographer.java:523)
11-14 18:02:44.628: E/AndroidRuntime(4948): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
11-14 18:02:44.628: E/AndroidRuntime(4948): at android.os.Handler.handleCallback(Handler.java:615)
11-14 18:02:44.628: E/AndroidRuntime(4948): at android.os.Handler.dispatchMessage(Handler.java:92)
11-14 18:02:44.628: E/AndroidRuntime(4948): at android.os.Looper.loop(Looper.java:137)
11-14 18:02:44.628: E/AndroidRuntime(4948): at android.app.ActivityThread.main(ActivityThread.java:4797)
11-14 18:02:44.628: E/AndroidRuntime(4948): at java.lang.reflect.Method.invokeNative(Native Method)
11-14 18:02:44.628: E/AndroidRuntime(4948): at java.lang.reflect.Method.invoke(Method.java:511)
11-14 18:02:44.628: E/AndroidRuntime(4948): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:804)
11-14 18:02:44.628: E/AndroidRuntime(4948): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:571)
11-14 18:02:44.628: E/AndroidRuntime(4948): at dalvik.system.NativeStart.main(Native Method)
Hi,
I'm pretty new to android platform. So, just forgive me for my dumbness. As I have seen, the left menu and the main view is located just in a layout. I just wanna ask, should I put the whole my new views to that layout and hide/show them on left menu taps? (I guess that's not the way) Or there is another way that I do not know? I want to split all my views in a different layout xml and different activity. What should I do?
Thanks in advance.
I've got two SherlockFragment
and one SherlockFragmentActivity
and a ViwPager
.
Actually these two fragments are shown as two Tabs in main layout.
I want to use this SlideHolder
at the right edge of my right fragment.
I've tried but it doesn't work well.
Can you help me please ?
I'm a newbie in Android, and I'm working on an Android project with my teacher. In this project, I use a ViewPager with 2 pages, and the problem is, when I have done as in your ReadMe, my pages can't be swiped from left to right anymore. Instead, it displays your SlideHolder. I came out with a solution that I created a button to open/close the SlideHolder, but I can't figure out how to disable the swiping action that opens it. Can you please tell me how to fix this? If you're busy, just tell me some functions to solve this.
By the way, I really appreciate your work. Thank you for everything :D
I modified the sample with the following code :
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSlideHolder = (SlideHolder) findViewById(R.id.slideHolder);
mSlideHolder.open();
}
If I want the menu to be opened when the screens shows up, I call the open() method from the onCreate, but I get an exception :
04-04 14:54:50.018: E/AndroidRuntime(20351): Caused by: java.lang.IllegalArgumentException: width and height must be > 0
04-04 14:54:50.018: E/AndroidRuntime(20351): at android.graphics.Bitmap.createBitmap(Bitmap.java:638)
04-04 14:54:50.018: E/AndroidRuntime(20351): at android.graphics.Bitmap.createBitmap(Bitmap.java:620)
04-04 14:54:50.018: E/AndroidRuntime(20351): at com.agimind.widget.SlideHolder.initSlideMode(SlideHolder.java:436)
04-04 14:54:50.018: E/AndroidRuntime(20351): at com.agimind.widget.SlideHolder.open(SlideHolder.java:153)
04-04 14:54:50.018: E/AndroidRuntime(20351): at com.agimind.sidemenuexample.MainActivity.onCreate(MainActivity.java:19)
Maybe the exception thrown should be more explicit, or there should not be any exception at all, and the menu would just open.
This should work if calling open() from the Activity's onResume(), but It would be great to work as well from onCreate.
Is that in another repository ?
Im using android no title bar theme, when menu setAlwaysOpened, its look white at top of a tiitle bar
First I thank for this helpful library. I'm already using it and it saved my time.
I think it's common that when the menu pane is visible, pressing the back button should close it, instead of closing the Activity itself (the default behavior). I checked and didn't see this. Does AndroidSlideMenu support it and we have to enable it somehow, or not?
Crashes in the dispatchTouchEvent method when trying to dispatch touch event to the menu. Works fine when only dragging ont he main view or the menu, but the problem starts when the touched view changes in the dragging process. Found a solution by surrounding the menu.dispatchTouchEvent(ev); on line 486 in a try-catch block.
P.S experiencing this only on Galaxy Nexus
I would like the main part to remain clickable when the menu is opened. This may be an option, changeable with a setter.
I have 2 views, 0th view for menu; 1st view for dynamic content according what user has clicked(ExpandableListView.handleItemClick) in the menu:
protected void open(View view) {
mRoot.removeViewAt(1);
mRoot.addView(view);
mRoot.close();
}
It throws an exception:
06-26 21:18:05.454: E/AndroidRuntime(11351): java.lang.IllegalArgumentException: width and height must be > 0
06-26 21:18:05.454: E/AndroidRuntime(11351): at android.graphics.Bitmap.createBitmap(Bitmap.java:603)
06-26 21:18:05.454: E/AndroidRuntime(11351): at android.graphics.Bitmap.createBitmap(Bitmap.java:585)
06-26 21:18:05.454: E/AndroidRuntime(11351): at com.agimind.widget.SlideHolder.initSlideMode(SlideHolder.java:565)
06-26 21:18:05.454: E/AndroidRuntime(11351): at com.agimind.widget.SlideHolder.close(SlideHolder.java:258)
06-26 21:18:05.454: E/AndroidRuntime(11351): at com.xuehuar.newtech.ui.DesktopActivity.open(DesktopActivity.java:76)
06-26 21:18:05.454: E/AndroidRuntime(11351): at com.xuehuar.newtech.ui.DesktopActivity$1.onChangeView(DesktopActivity.java:63)
06-26 21:18:05.454: E/AndroidRuntime(11351): at com.xuehuar.newtech.desktop.Desktop$2.onChildClick(Desktop.java:125)
06-26 21:18:05.454: E/AndroidRuntime(11351): at android.widget.ExpandableListView.handleItemClick(ExpandableListView.java:582)
06-26 21:18:05.454: E/AndroidRuntime(11351): at android.widget.ExpandableListView.performItemClick(ExpandableListView.java:521)
06-26 21:18:05.454: E/AndroidRuntime(11351): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2514)
06-26 21:18:05.454: E/AndroidRuntime(11351): at android.widget.AbsListView$1.run(AbsListView.java:3168)
06-26 21:18:05.454: E/AndroidRuntime(11351): at android.os.Handler.handleCallback(Handler.java:605)
06-26 21:18:05.454: E/AndroidRuntime(11351): at android.os.Handler.dispatchMessage(Handler.java:92)
06-26 21:18:05.454: E/AndroidRuntime(11351): at android.os.Looper.loop(Looper.java:137)
06-26 21:18:05.454: E/AndroidRuntime(11351): at android.app.ActivityThread.main(ActivityThread.java:4424)
06-26 21:18:05.454: E/AndroidRuntime(11351): at java.lang.reflect.Method.invokeNative(Native Method)
06-26 21:18:05.454: E/AndroidRuntime(11351): at java.lang.reflect.Method.invoke(Method.java:511)
06-26 21:18:05.454: E/AndroidRuntime(11351): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-26 21:18:05.454: E/AndroidRuntime(11351): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-26 21:18:05.454: E/AndroidRuntime(11351): at dalvik.system.NativeStart.main(Native Method)
When I start sliding, the cache is constructed with the final size it will have when the sliding is done. It produces a strange effect. Would it be possible to update the cache while sliding, so that the menu part grows, and the main part goes smaller and smaller ?
Is it possible to have the menu "slide on top" of the main layout instead of "pushing" the main layout out of the way?
My implementation would be sliding a layout on top of the previous layout so that the previous layout is still visible on the edge.
Also is there a way to listen for when the open or close animation if finished?
Here is a layout example:
http://pastebin.com/cKcFDLij
Cheers,
your projects are a life saver!
Hello ,I am a student from china . I very appreciate your work. It help me long. But,I found a problem in your word. I wirting a code "holder.setAllowInterceptTouch(false)" in your example .But, it does't work.I still can slide it out.Is it I use a wrong way?
or there is another way to do one menu for all activities?
Let me state this, the functionality is spot on, working as we expect.
However, when we open or close the side menu, during the course of transition, the user will be able to see all the previous drawing made on the right panel, as shown in the snap shot below.
Using jar file which was authored 21 days ago (around 8th April 2013).
Please guide
Each time that I touch a button in the menu (in the example app) some noise appears over all the buttons. The noise disappears when you touch elsewhere, and it also decreases over time if you don't do anything.
This problem appears when testing the application on an S2 with ICS. I tested it on an older phone running Gingerbread and the menu works fine, without any noise.
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.