Git Product home page Git Product logo

rollviewpager's Issues

网络图片部分加载不出来

使用LoopPagerAdapter的时候,会有部分网络图片加载不出来,不入有加载了5张网络图片,可能就会有三张网络图片加载不出来,然后重新刷新又会出来

关于HintView、PointHintView、TextHintView的再抽象

PointHintView其实可以抽象出一个基类,方便继承实现N多种指示器。如:

public abstract class ShapeHintView extends LinearLayout implements HintView {
    private Drawable focusDrawable, normalDrawable;

    protected abstract Drawable makeFocusDrawable();

    protected abstract Drawable makeNormalDrawable();

 @Override
    public void makeView(int length, int gravity) {
        ...
        normalDrawable = makeNormalDrawable();
        focusDrawable = makeFocusDrawable();
        ...
    }
public class CircleHintView extends ShapeHintView {
    @Override
    protected Drawable makeFocusDrawable() {
        GradientDrawable dot_focus = new GradientDrawable();
        dot_focus.setColor(Color.parseColor("#E3AC42"));
        dot_focus.setCornerRadius(Util.dip2px(getContext(), 4));
        dot_focus .setSize(Util.dip2px(getContext(), 8), Util.dip2px(getContext(), 8));
        return dot_focus ;
    }

    @Override
    protected Drawable makeNormalDrawable() {
        GradientDrawable dot_normal = new GradientDrawable();
        dot_normal.setColor(Color.WHITE);
        dot_normal.setAlpha(125);
        dot_normal.setCornerRadius(Util.dip2px(getContext(), 4));
        dot_normal.setSize(Util.dip2px(getContext(), 8), Util.dip2px(getContext(), 8));
        return dot_normal;
    }
public class IconHintView extends ShapeHintView {

    protected Drawable makeFocusDrawable() {
        return context.getDrawable(android.R.drawable.button_onoff_indicator_on);;
    }

    protected Drawable makeNormalDrawable() {
        return context.getDrawable(android.R.drawable.button_onoff_indicator_off);;
    }

}

getItemPosition返回值疑问

default
如图:
返回POSITION_UNCHANGED不是可以减少调用instantiateItem去创建ChildView;
而返回POSITION_NONE则要求每次notify的时候,(清理缓存)clear viewList,从新调用instantiateItem去创建一系列(默认3个)ChildView,加入到viewList;

请问:使用POSITION_NONE的原因,没有弄清楚真正的用意,很困惑,求解

Android 4.4 不兼容?

在5.0以上运行没有问题,但是在4.4以下却是空白,什么都不显示。

是不是不兼容5.0以下版本?

以下是我的代码:

在RecyclerView Holder中嵌入RollPagerView

public class ViewBannerHolder extends RecyclerView.ViewHolder{

        @BindView(R.id.news_banner)
        RollPagerView mNewsBanner;

        ViewBannerHolder(View v, List<News> topNewses) {
            super(v);
            ButterKnife.bind(this, v);

            this.mNewsBanner.setHintView(new ColorPointHintView(v.getContext(), Color.YELLOW, Color.WHITE));
            this.mNewsBanner.setAdapter(new TopNewsLoopAdapter(mNewsBanner, topNewses));
        }
    }

在RecyclerView.Adapter的onCreateViewHolder()方法中构建ViewBannerHolder:

if(position == 0 && null != mTopNewses){
    View view = this.mLayoutInflater.inflate(R.layout.news_adapter_banner, parent, false);;
    return new ViewBannerHolder(view, mTopNewses);
}

RollViewPaper Adapter:

public class TopNewsLoopAdapter extends LoopPagerAdapter {

    private List<News> mTopNews;

    public TopNewsLoopAdapter(RollPagerView viewPager) {
        super(viewPager);
    }

    public TopNewsLoopAdapter(RollPagerView viewPager, List<News> topNews){
        super(viewPager);
        this.mTopNews = topNews;
    }

    @Override
    public View getView(ViewGroup container, int position) {
        View view = LayoutInflater.from(container.getContext()).inflate(R.layout.news_adapter_banner_view, container, false);

        final News news = this.mTopNews.get(position);
        ImageView imageView = (ImageView)view.findViewById(R.id.news_banner_image);
        ImageUtil.displayImage(container.getContext(), imageView, news.getImage());

        TextView textView = (TextView)view.findViewById(R.id.news_banner_title);
        textView.setText(news.getTitle());

        view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(v.getContext(), NewsDetailActivity.class);
                intent.putExtra("newsId", news.getId());
                v.getContext().startActivities(new Intent[]{intent});
            }
        });
        return view;
    }

    @Override
    protected int getRealCount() {
        return null==this.mTopNews ? 0 : this.mTopNews.size();
    }
}

TimerTask匿名内部类 内存泄露

作者你好,很感谢分享你的项目,我在实际应用中发现,RollPagerView中startPlay()用到timer.schedule(new TimerTask() {}这里有个匿名TimerTask内部类会导致内存泄露
e3036440-e263-48ac-803d-7c5b0ac2fbb5
希望作者可以修改一下,小小建议,再次感谢

能往一个方向轮播么?

能往一个方向轮播么?比如往左都只往左无限轮播,现在是第一张左划不到最后一张,最后一张右滑不到第一张

为啥我用颜色还是iconHintView圆点有很模糊有马赛克效果呢..

而且不管传入什么大小图片,圆点大小都不变.

<com.jude.rollviewpager.RollPagerView
android:layout_width="match_parent"
android:layout_height="@dimen/base168dp"
android:id="@+id/tabhome_autovp"
app:rollviewpager_play_delay="3000"
app:rollviewpager_hint_paddingBottom="@dimen/base8dp"
></com.jude.rollviewpager.RollPagerView>

tabhomeAutovp.setHintView(new IconHintView(getActivity(), R.drawable.point_white, R.drawable.point_white80));
tabhomeAutovp.setAdapter(new LoopAdapter(tabhomeAutovp, vpPics));

IllegalStateException错误

使用1.4.5版本
适配器:RollPagerAdapter
加载环境:网络加载图片 使用Fresco
页面中是RollPagerView下面放listView或者recycleView
启动页面时会出现IllegalStateException异常
所有数据改变位置都添加了Adapter.notifyDataSetChanged(); 依然报错
_20170105110249

setAdapter()在runOnUiThread中调用时ANR

我在Activity的onCreate()中调用setAdapter()没有任何问题。但是,出于一种需求,我开启一个线程去获取新的图片,在图片获取结束后在runOnUiThread中调用setAdapter()更换成新的图片时,出现ANR,界面卡死,UI线程CPU满占用,十几秒后才恢复。即使我在getView()中返回new ImageView(container.getContext()),也是一样卡死,说明不是我在getView()中做耗时操作造成的这个ANR。望修复这个bug

==补充:broadcastreceiver的onReceive()事件中进行setAdapter()也不行

滑动一半时取消,会调错页

比如手指左滑 : 在第三页拖到第四页, 拖动到一半(或多或少都会) 然后取消滑动。
正常是回到第三页的。
但是有时会直接退回到第二页去。(换个方向也会)

超过一条数据出现ANR 结合CoordinatorLayout,AppBarLayout,CollapsingToolbarLayout

以下是布局

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/coordinatorLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.design.widget.AppBarLayout
    android:id="@+id/appBarLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.AppBarOverlay">

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/collapsingToolbarLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:contentScrim="@color/_ffffff_bg"
        app:expandedTitleMarginEnd="64dp"
        app:expandedTitleMarginStart="23dp"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">

        <!--<fragment-->
        <!--android:id="@+id/cycleViewPager"-->
        <!--android:name="goujiawang.gjw.views.helpers.CycleViewPager"-->
        <!--android:layout_width="match_parent"-->
        <!--android:layout_height="@dimen/px450"-->
        <!--android:background="@drawable/cache_normal_new"-->
        <!--app:layout_collapseMode="parallax"-->
        <!--app:layout_collapseParallaxMultiplier="0.5" />-->

        <com.jude.rollviewpager.RollPagerView
            android:id="@+id/rollPagerView"
            android:layout_width="match_parent"
            android:layout_height="@dimen/px450"
            app:layout_collapseMode="parallax"
            app:layout_collapseParallaxMultiplier="0.5" />

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolBar"
            style="@style/ClubToolbar"
            android:layout_width="match_parent"
            android:layout_height="@dimen/px88"
            app:layout_collapseMode="pin"
            app:popupTheme="@style/AppTheme.PopupOverlay">

            <RelativeLayout
                android:id="@+id/layout_topBar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/bg_gray_alpha_gradient">

                <TextView
                    android:id="@+id/textView_left"
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:layout_centerVertical="true"
                    android:background="@drawable/selector_bg_click_color_alpha"
                    android:drawableRight="@mipmap/ic_arrow_down_white"
                    android:gravity="center"
                    android:paddingLeft="@dimen/contentPaddingLeft"
                    android:text="定位"
                    android:textColor="@color/_ffffff_word"
                    android:textSize="@dimen/sp32" />

                <TextView
                    android:id="@+id/tv_title"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerHorizontal="true"
                    android:layout_centerVertical="true"
                    android:text="@string/gj"
                    android:textSize="@dimen/sp36" />

                <ImageView
                    android:id="@+id/imageView_right"
                    android:layout_width="@dimen/statusBarHeight"
                    android:layout_height="match_parent"
                    android:layout_alignParentEnd="true"
                    android:layout_alignParentRight="true"
                    android:layout_centerVertical="true"
                    android:background="@drawable/selector_bg_click_color_alpha"
                    android:contentDescription="@null"
                    android:padding="@dimen/px15"
                    android:src="@mipmap/ic_service_white" />
            </RelativeLayout>
        </android.support.v7.widget.Toolbar>
    </android.support.design.widget.CollapsingToolbarLayout>

    <android.support.design.widget.TabLayout
        android:id="@+id/tabLayout"
        android:layout_width="match_parent"
        android:layout_height="@dimen/px80"
        android:background="@color/_ffffff_bg"
        app:tabIndicatorColor="@color/_ff5722"
        app:tabIndicatorHeight="@dimen/px4"
        app:tabMode="fixed"
        app:tabPaddingStart="@dimen/px20"
        app:tabSelectedTextColor="@color/_ff5722"
        app:tabTextColor="@color/_000000_word" />
</android.support.design.widget.AppBarLayout>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    app:layout_behavior="@string/appbar_scrolling_view_behavior">

    <android.support.v4.view.ViewPager
        android:id="@+id/viewPager_home"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <ImageView
        android:id="@+id/iv_empty"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="96dp"
        android:background="@mipmap/bg_empty"
        android:contentDescription="@null"
        android:visibility="gone" />
</RelativeLayout>

</android.support.design.widget.CoordinatorLayout>

代码
rollPagerView.setPlayDelay(1000);
rollPagerView.setAnimationDurtion(500);
rollPagerView.setAdapter(new TestLoopAdapter(rollPagerView));
private class TestLoopAdapter extends LoopPagerAdapter {
private List homes;
private int[] imgs = {
R.drawable.cache_normal_new,
R.drawable.cache_normal_new,
R.drawable.cache_normal_new,
R.drawable.cache_normal_new,
};

    public TestLoopAdapter(RollPagerView viewPager) {
        super(viewPager);
    }

    @Override
    public View getView(ViewGroup container, int position) {
        ImageView view = new ImageView(container.getContext());
        view.setScaleType(ImageView.ScaleType.CENTER_CROP);
        view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
        view.setImageResource(imgs[position]);
        return view;
    }

    @Override
    public int getRealCount() {
        return imgs.length;
    }
}

----------------------------------------------ANR traces 文件中的一部分------
suspend all histogram: Sum: 28.329ms 99% C.I. 4us-8345.600us Avg: 191.412us Max: 10203us
DALVIK THREADS (31):
"main" prio=5 tid=1 Runnable
| group="main" sCount=0 dsCount=0 obj=0x7479a3c0 self=0xb4d36500
| sysTid=20874 nice=-1 cgrp=default sched=0/0 handle=0xb6fb8b34
| state=R schedstat=( 38664505309 1819560990 7246 ) utm=3783 stm=83 core=3 HZ=100
| stack=0xbe0f6000-0xbe0f8000 stackSize=8MB
| held mutexes= "mutator lock"(shared held)
at android.support.v4.view.PagerAdapter.getPageWidth(PagerAdapter.java:330)
at android.support.v4.view.ViewPager.calculatePageOffsets(ViewPager.java:1292)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1165)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1025)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1545)
at android.view.View.measure(View.java:18811)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:716)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:462)
at android.view.View.measure(View.java:18811)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.support.design.widget.CollapsingToolbarLayout.onMeasure(CollapsingToolbarLayout.java:373)
at android.view.View.measure(View.java:18811)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)
at android.support.design.widget.AppBarLayout.onMeasure(AppBarLayout.java:199)
at android.view.View.measure(View.java:18811)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952)
at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:664)
at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:731)
at android.view.View.measure(View.java:18811)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1560)
at android.view.View.measure(View.java:18811)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:716)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:462)
at android.view.View.measure(View.java:18811)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135)
at android.view.View.measure(View.java:18811)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)
at android.view.View.measure(View.java:18811)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:18811)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)
at android.view.View.measure(View.java:18811)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2643)
at android.view.View.measure(View.java:18811)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2120)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1236)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1472)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1127)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6038)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:860)
at android.view.Choreographer.doCallbacks(Choreographer.java:672)
at android.view.Choreographer.doFrame(Choreographer.java:608)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:846)
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:5438)
at java.lang.reflect.Method.invoke!(Native method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)

直接gradle引用会提示Manifest merger failed with multiple errors, see logs

Error:Execution failed for task ':XXXX:processDebugManifest'.
Manifest merger failed with multiple errors, see logs
在主要的 Moudle 中的 AndroidMenifest.xml 如果已有屬性

< application
android:theme="@android:style/Theme.XXX>
< /application>
則在引用的 Library Moudle 中的 AndroidMenifest.xml 也設有相同的屬性設置
android:theme="@android:style/Theme.XXX
則會報出上述錯誤,將 Library Moudle 中的該屬性消除即可。

LoopPagerAdapter的notifydatasetchange问题

不好意思又来了。。我用了LoopPagerAdapter的notifydatasetchange方法,但是使用后似乎向左滑动会出现问题,在第一张图时会无法向左滑动。。。

循环播放时卡顿

轮播图循环时,要等很久才能加载出图片是什么原因呢,求解答
补充:是在请求网络之后再加载要等很久才能加载,尽管轮播图没有用到任何网络数据,setAdapter也执行完了,图片还是没有出来,用PagerView也有这种情况

与Glide结合使用时比例失真bug

与Glide图片加载框架结合使用时,加载进来的图片有时会比例失真,有时又是比例正常的。请解决比例失真的bug

代码:
LoopPagerAdapter loopPagerAdapter=new LoopPagerAdapter(rollPagerView) {
@OverRide
public View getView(ViewGroup container, int position) {
ImageView imageView = new ImageView(container.getContext());

            Glide
                    .with(MainFragment.this)
                    .load(xxxxxxxUrl)
                    .centerCrop()
                    //.placeholder(R.color.windowBackground)
                    //.diskCacheStrategy(DiskCacheStrategy.SOURCE)
                    .crossFade()
                    .into(imageView);


            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setLayoutParams(new                            ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
            return imageView;
        }

        @Override
        public int getRealCount() {
            return rollPicList==null?1:rollPicList.size();
        }

    };

    rollPagerView.setAdapter(loopPagerAdapter);
    rollPagerView.setPlayDelay(4000);
}

indicator question

照片由多变少的时候(大于一变为小于等于一) 底部indicator没有被初始化
需要把RollPagerView中的initHint改为public 然后再适配器的getview中作判断
if (_urls.size() < 2) {
_viewPager.setHintView(null);
} else {
_viewPager.initHint(
new ColorPointHintView(_viewPager.getContext(), Color.parseColor("#394482"),
Color.parseColor("#88ffffff")));
}
我这里大于1张才显示indicator。
大神可以考虑把它加到LoopPagerAdapter中

添加文字

请问可以为轮播页添加文字随图片一起滚动播放吗

IllegalStateException

java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

notifyDataSetChanged会崩

比如说,刚开始的广告有4页,刷新后只有1页时.只要上次的广告停留的不是第一页,刷新后不仅图片没有刷新,而且必崩。提示信息如下

java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged! Expected adapter item count: 4, found: 1 Pager id: com.zhipu.salehelper.referee:id/viewpager_inner Pager class: class android.support.v4.view.ViewPager Problematic adapter: class com.zhipu.salehelper.referee.adapter.HomeLooperAdapter
                                                                                  at android.support.v4.view.ViewPager.populate(ViewPager.java:1000)
                                                                                  at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:552)
                                                                                  at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:514)
                                                                                  at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:495)
                                                                                  at com.zhipu.salehelper.referee.widget.rollviewpager.RollPagerView$TimeTaskHandler.handleMessage(RollPagerView.java:133)
                                                                                  at android.os.Handler.dispatchMessage(Handler.java:111)
                                                                                  at android.os.Looper.loop(Looper.java:194)
                                                                                  at android.app.ActivityThread.main(ActivityThread.java:5549)
                                                                                  at java.lang.reflect.Method.invoke(Native Method)
                                                                                  at java.lang.reflect.Method.invoke(Method.java:372)
                                                                                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:964)
                                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:759)

可以看出at com.zhipu.salehelper.referee.widget.rollviewpager.RollPagerView$TimeTaskHandler.handleMessage(RollPagerView.java:133)这一行崩的。
刷新代码如下

bannerList.clear();
bannerList.addAll(list);
mLooperAdapter.notifyDataSetChanged();

只有两张图片时,初始化有问题。

如果只有两张图片的话,初始化默认会显示第二张图片,但指示器默认会显示的是第一个。也就是指示器和图片不匹配。只在初始化的时候有这个问题,轮播开始之后就正常了。

滑动不好使

滑动不好使,在右侧向左滑的时候很难滑动到下一页

如果使用LoopPagerAdapter,会有一些小问题

如果使用LoopPagerAdapter,在配合上Picasso轮播网络图片时,如果网络图片稍大,会导致页面挂起,等待Picasso图片加载完毕后才会恢复,而使用staticPagerAdapter时没有这个问题。

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.