Giter Site home page Giter Site logo

rudeness's Introduction

方案分析见一种粗暴快速的Android全屏幕适配方案


本项目包括:

  • rudeness-sdk。根据上述方案实现的一个非常简单的库。
  • rudeness-demo。这是demo。

使用姿势:

  • 核心。使用冷门的pt作为长度单位,按照上述想法将其重定义为与屏幕大小相关的相对单位,不会对dp等常用单位的使用造成影响。

  • 绘制。编写xml时完全对照设计稿上的尺寸来编写,只不过单位换为pt。假如设计图宽度为200,一个控件在设计图上标注的长度为3,只需要在初始化时定义宽度为200,绘制该控件时长度写为3pt,那么在任何大小的屏幕上该控件所表现的长度都为屏幕宽度的3/200。如果需要在代码中动态转换成px的话,使用TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PT, value, metrics)

  • 预览。实时预览时绘制页面是很重要的一个环节。以1334x750的设计图为例,为了实现于正常绘制时一样的预览功能,创建一个长为1334磅,宽为750磅的设备作为预览,经换算约为21.5英寸((sqrt(1334^2+750^2))/72)。预览时选择这个设备即可。 图三.png 图四.png

  • 代码处理。(代码比较简单,所以你也可以不使用本依赖自己处理) 在build.gradle中加入依赖:

    compile 'com.bulong.rudeness:rudeness:latest.release@aar'

    在Application的onCreate中引用:

    //设计图标注的宽度
    int designWidth = 750;
    new RudenessScreenHelper(this, designWidth).activate();

这样绘制出来的页面就跟设计图几乎完全一样,无论大小屏上看起来就只是将设计图缩放之后的结果。


SDK API Refrences:

public class RudenessScreenHelper {

    /**
     * 转换dp为px
     * @param context context
     * @param value 需要转换的dp值
     * @return px值
     */
    public static float dp2px(Context context, float value);

    /**
     * 转换pt为px
     * @param context context
     * @param value 需要转换的pt值,若context.resources.displayMetrics经过resetDensity()的修改则得到修正的相对长度,否则得到原生的磅
     * @return px值
     */
    public static float pt2px(Context context, float value);

    /**
     * 构造方法
     * @param application application
     * @param width 设计稿宽度
     */
    public RudenessScreenHelper(Application application, float width);

    /**
     * 激活本方案
     */
    public void activate();

    /**
     * 恢复系统原生方案
     */
    public void inactivate();
}

FAQ

若存在webview导致适配失效的问题

可以先继承WebView并重写setOverScrollMode(int mode)方法,在方法中调用super之后调用一遍RudenessScreenHelper.resetDensity(getContext(), designWidth)规避

若存在dialog中适配失效的问题

可以在dialog的oncreate中调用一遍RudenessScreenHelper.resetDensity(getContext(), designWidth)规避

旋转屏幕之后适配失效

可以在onConfigurationChanged中调用RudenessScreenHelper.resetDensity(getContext(), designWidth)规避

特定国产机型ROM中偶先fragment失效

可以在fragment的onCreateView中调用RudenessScreenHelper.resetDensity(getContext(), designWidth)规避


关于demo:

  • 正常编写的页面 是按照dp来编写的页面
  • 粗暴适配的页面 是按照本方案编写的页面

在多种不同屏幕大小的真机与虚拟机下运行项目,可见粗暴适配的页面表现几乎一致,而正常编写的页面在大屏与小屏之间看起来差异较大。

正常编写的页面 左图API19 400x800, 右图API24 1440x2560): 图五.png

粗暴适配的页面(左图API19 400x800, 右图API24 1440x2560): 图六.png

rudeness's People

Contributors

firedamp 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

rudeness's Issues

旋转屏幕之后的问题

旋转屏幕后,如果配置android:configChanges="orientation|screenSize",重新设置新的设计尺寸没有效果,会沿用之前旧的设计尺寸,在有滑动控件的布局中滑动的时候视图会变得很大(沿用旧的设计尺寸)

我设置了marginTop值没效果

我在你的Demo中直接修改的 把MainActivity布局换成我的布局 然后根据设计图的尺寸来标注, 但是效果不正确了,偏出很多, 如下图
1521862663 1

有个数学问题

(sqrt(1334^2+750^2))/72 这个公式返回的值怎么试21.25啊,我运行以后怎么得到的是0.6192638002668877,,,,

api26上的问题

我把动态设置单位的方法放在 baseActivity 了,大部分界面在 8.0 上没问题,但是有两三个界面(fragment) 一直是尺寸很大, 项目用的 fragmentation 实现的 单 activity + 多 fragment。

然后都是 recyclerview 里边的 item 的布局尺寸不对,用的 mutitype 适配的。但是有的 mutitype适配的也没问题,不知道问题到底出在哪。

关于页面存在webview的失效问题

项目中我反复修改了 还是会出现问题
然后我用你的demo试了下也是会
场景如下:demo中的适配页面中随便添加一个WebView

当APP第一次进入该页面的时候就会出现除了webview之外的控件适配失效,返回再次进入就可以了,请问下这个怎么解决...有点儿急...麻烦大神看一看~

使用过程中的问题

先附上我使用该库时,对不同手机分辨率的截图:

img_20180523_155842
5.5寸 1080p

img_20180523_155818
6寸 2k

img_20180523_155808
4.7寸/5寸 720p

screenshot_demo_20180523-160233

5.5寸, 1080p截图

我所使用的布局文件代码:

<!--<include layout="@layout/title_common_lay"/>-->

<!--<Button-->
    <!--android:id="@+id/btn_add_score"-->
    <!--android:layout_width="match_parent"-->
    <!--android:layout_height="wrap_content"-->
    <!--android:text="ADD"-->
    <!--/>-->

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="352px"
    android:layout_marginLeft="26px"
    android:layout_marginRight="26px"
    android:layout_marginTop="500px"
    android:background="@drawable/bg_sign_box">
    <!--android:layout_height="@dimen/y130"-->
    <!--android:layout_marginTop="@dimen/y145"-->

    <LinearLayout
        android:id="@+id/top_lin"
        android:layout_width="match_parent"
        android:layout_height="146px"
        android:gravity="center"
        android:orientation="horizontal"
        android:paddingLeft="8dp"
        android:paddingRight="8dp">
        <!--android:padding="@dimen/x8"-->
        <!--android:layout_height="@dimen/y50"-->
        <!--android:background="@drawable/box_qiandao"-->

        <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_marginLeft="40px"
            android:layout_marginStart="40px"
            android:layout_weight="1">

            <ImageView
                android:id="@+id/oneredpage_img"
                android:layout_width="30px"
                android:layout_height="30px"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="34px"
                android:layout_marginBottom="16px"
                android:src="@drawable/pic_hongbao_s" />

            <TextView
                android:id="@+id/text_one"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/oneredpage_img"
                android:layout_centerHorizontal="true"
                android:gravity="center_horizontal"
                android:textSize="28px"
                android:text="周一" />

            <ImageView
                android:id="@+id/sign_one"
                android:layout_width="35dp"
                android:layout_height="wrap_content"
                android:layout_below="@+id/oneredpage_img"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="5dp"
                android:src="@drawable/btn_buqian"
                android:visibility="gone" />
        </RelativeLayout>

        <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1">

            <ImageView
                android:id="@+id/tworedpage_img"
                android:layout_width="30px"
                android:layout_height="30px"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="34px"
                android:layout_marginBottom="16px"
                android:src="@drawable/pic_hongbao_s" />

            <TextView
                android:id="@+id/text_two"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/tworedpage_img"
                android:layout_centerHorizontal="true"
                android:gravity="center_horizontal"
                android:textSize="28px"
                android:text="周二" />

            <ImageView
                android:id="@+id/sign_two"
                android:layout_width="35dp"
                android:layout_height="wrap_content"
                android:layout_below="@+id/tworedpage_img"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="5dp"
                android:src="@drawable/btn_buqian"
                android:visibility="gone" />
        </RelativeLayout>

        <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1">

            <ImageView
                android:id="@+id/threeredpage_img"
                android:layout_width="30px"
                android:layout_height="30px"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="34px"
                android:layout_marginBottom="16px"
                android:src="@drawable/pic_hongbao_s" />

            <TextView
                android:id="@+id/text_three"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/threeredpage_img"
                android:layout_centerHorizontal="true"
                android:gravity="center_horizontal"
                android:textSize="28px"
                android:text="周三" />

            <ImageView
                android:id="@+id/sign_three"
                android:layout_width="35dp"
                android:layout_height="wrap_content"
                android:layout_below="@+id/threeredpage_img"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="5dp"
                android:src="@drawable/btn_buqian"
                android:visibility="gone" />
        </RelativeLayout>

        <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1">

            <ImageView
                android:id="@+id/fourredpage_img"
                android:layout_width="30px"
                android:layout_height="30px"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="34px"
                android:layout_marginBottom="16px"
                android:src="@drawable/pic_hongbao_s" />

            <TextView
                android:id="@+id/text_four"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/fourredpage_img"
                android:layout_centerHorizontal="true"
                android:gravity="center_horizontal"
                android:textSize="28px"
                android:text="周四" />

            <ImageView
                android:id="@+id/sign_four"
                android:layout_width="35dp"
                android:layout_height="wrap_content"
                android:layout_below="@+id/fourredpage_img"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="5dp"
                android:src="@drawable/btn_buqian"
                android:visibility="gone" />
        </RelativeLayout>

        <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1">

            <ImageView
                android:id="@+id/fiveredpage_img"
                android:layout_width="30px"
                android:layout_height="30px"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="34px"
                android:layout_marginBottom="16px"
                android:src="@drawable/pic_hongbao_s" />

            <TextView
                android:id="@+id/text_five"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/fiveredpage_img"
                android:layout_centerHorizontal="true"
                android:gravity="center_horizontal"
                android:textSize="28px"
                android:text="周五" />

            <ImageView
                android:id="@+id/sign_five"
                android:layout_width="35dp"
                android:layout_height="wrap_content"
                android:layout_below="@+id/fiveredpage_img"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="5dp"
                android:src="@drawable/btn_buqian"
                android:visibility="gone" />
        </RelativeLayout>

        <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1">

            <ImageView
                android:id="@+id/sixredpage_img"
                android:layout_width="30px"
                android:layout_height="30px"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="34px"
                android:layout_marginBottom="16px"
                android:src="@drawable/pic_hongbao_s" />

            <TextView
                android:id="@+id/text_six"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/sixredpage_img"
                android:layout_centerHorizontal="true"
                android:textSize="28px"
                android:gravity="center_horizontal"
                android:text="周六" />

            <ImageView
                android:id="@+id/sign_six"
                android:layout_width="35dp"
                android:layout_height="wrap_content"
                android:layout_below="@+id/sixredpage_img"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="5dp"
                android:src="@drawable/btn_buqian"
                android:visibility="gone" />
        </RelativeLayout>

        <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_marginRight="40px"
            android:layout_marginEnd="40px"
            android:layout_weight="1">

            <ImageView
                android:id="@+id/sevenredpage_img"
                android:layout_width="30px"
                android:layout_height="30px"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="34px"
                android:layout_marginBottom="16px"
                android:src="@drawable/pic_hongbao_s" />

            <TextView
                android:id="@+id/text_seven"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/sevenredpage_img"
                android:layout_centerHorizontal="true"
                android:textSize="28px"
                android:gravity="center_horizontal"
                android:text="周日" />

            <ImageView
                android:id="@+id/sign_seven"
                android:layout_width="35dp"
                android:layout_height="wrap_content"
                android:layout_below="@+id/sevenredpage_img"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="5dp"
                android:src="@drawable/btn_buqian"
                android:visibility="gone" />
        </RelativeLayout>


    </LinearLayout>

    <ImageButton
        android:id="@+id/sign_btn"
        android:layout_width="300px"
        android:layout_height="98px"
        android:layout_below="@+id/top_lin"
        android:layout_centerHorizontal="true"
        android:background="@android:color/white"
        android:scaleType="fitCenter"
        android:src="@drawable/pic_btn_sign" />
    <!--android:layout_height="@dimen/y37"-->

    <View
        android:id="@+id/view2"
        android:layout_width="match_parent"
        android:layout_height="4px"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/sign_btn"
        android:layout_marginLeft="14px"
        android:layout_marginRight="14px"
        android:background="@drawable/shape_dash_line"
        android:layerType="software" />

    <!--android:layout_marginRight="@dimen/x6"-->


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="80px"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/view2"
        android:layout_marginEnd="12px"
        android:layout_marginLeft="12px"
        android:layout_marginRight="12px"
        android:layout_marginStart="12px"
        android:orientation="horizontal">
        <!--android:paddingLeft="@dimen/x8"-->
        <!--android:paddingRight="@dimen/x8"-->

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1">

            <ImageView
                android:id="@+id/imageView"
                android:layout_width="35px"
                android:layout_height="35px"
                android:layout_marginLeft="28px"
                android:layout_marginStart="28px"
                android:layout_marginTop="28px"
                android:scaleType="centerCrop"
                android:src="@drawable/pic_sign_jifen" />

            <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBottom="@+id/imageView"
                android:layout_alignTop="@+id/imageView"
                android:layout_marginLeft="16px"
                android:layout_marginStart="16px"
                android:layout_toEndOf="@+id/imageView"
                android:layout_toRightOf="@+id/imageView"
                android:gravity="center_vertical"
                android:text="积分"
                android:textSize="30px" />

            <!--android:layout_marginLeft="@dimen/x5"-->
            <!--android:layout_marginStart="@dimen/x5"-->

            <TextView
                android:id="@+id/integrals_text"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_alignBottom="@+id/textView2"
                android:layout_alignTop="@+id/textView2"
                android:layout_marginLeft="20px"
                android:layout_marginStart="20px"
                android:layout_toEndOf="@+id/textView2"
                android:layout_toRightOf="@+id/textView2"
                android:gravity="center"
                android:text="9999"
                android:textSize="30px" />

            <TextView
                android:id="@+id/textView3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBaseline="@+id/integrals_text"
                android:layout_alignBottom="@+id/integrals_text"
                android:layout_marginLeft="12px"
                android:layout_marginStart="12px"
                android:layout_toEndOf="@+id/integrals_text"
                android:gravity="center"
                android:text="+1"
                android:textSize="33px" />

        </RelativeLayout>

        <View
            android:layout_width="1dp"
            android:layout_height="match_parent"
            android:layout_marginTop="9px"
            android:background="#BABABA" />

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1">

            <ImageView
                android:id="@+id/imageView2"
                android:layout_width="35px"
                android:layout_height="35px"
                android:layout_marginLeft="24px"
                android:layout_marginStart="24px"
                android:layout_marginTop="28px"
                android:scaleType="centerCrop"
                android:src="@drawable/pic_sign_grass" />

            <TextView
                android:id="@+id/textView4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBottom="@+id/imageView2"
                android:layout_alignTop="@+id/imageView2"
                android:layout_marginLeft="10px"
                android:layout_marginStart="10px"
                android:layout_toEndOf="@+id/imageView2"
                android:gravity="center"
                android:text="连续签到"
                android:textSize="30px" />

            <!--android:layout_marginLeft="@dimen/x5"-->
            <!--android:layout_marginStart="@dimen/x5"-->

            <TextView
                android:id="@+id/sign_continuity_text"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_alignTop="@+id/textView4"
                android:layout_toEndOf="@+id/textView4"
                android:paddingLeft="2dp"
                android:paddingRight="2dp"
                android:text="999"
                android:textSize="30px" />

            <TextView
                android:id="@+id/textView5"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"

                android:layout_alignBottom="@+id/textView4"
                android:layout_alignTop="@+id/sign_continuity_text"
                android:layout_toEndOf="@+id/sign_continuity_text"
                android:gravity="center"
                android:paddingEnd="2px"
                android:paddingLeft="2px"
                android:paddingRight="2px"
                android:paddingStart="2px"
                android:text="天"
                android:textSize="30px" />

        </RelativeLayout>

    </LinearLayout>

</RelativeLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="26px"
    android:layout_marginRight="26px"
    android:layout_marginTop="28px"
    android:layout_marginBottom="28px"
    android:gravity="bottom"
    android:orientation="vertical"
    android:paddingLeft="8dp"
    android:paddingRight="8dp">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="80px"
        android:layout_weight="1"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/qi_img"
            android:layout_width="304px"
            android:layout_height="135px"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:scaleType="centerCrop"
            android:src="@drawable/pic_7_1" />

        <ImageView
            android:id="@+id/shisi_img"
            android:layout_width="304px"
            android:layout_height="135px"
            android:layout_alignParentEnd="true"
            android:layout_alignParentTop="true"
            android:scaleType="centerCrop"
            android:src="@drawable/pic_14_1" />
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="80px"
        android:layout_marginTop="1dp"
        android:layout_weight="1"
        android:gravity="center_horizontal"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/ershiyi_img"
            android:layout_width="304px"
            android:layout_height="135px"
            android:layout_alignParentTop="true"
            android:scaleType="centerCrop"
            android:src="@drawable/pic_21_1" />

        <ImageView
            android:id="@+id/ershiba_img"
            android:layout_width="304px"
            android:layout_height="135px"
            android:layout_alignParentEnd="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:scaleType="centerCrop"
            android:src="@drawable/pic_28_1" />
    </RelativeLayout>
</LinearLayout>

在Application中,

new RudenessScreenHelper(this, 720).activate();

我以美工给的720p的图为基础做的,但是效果差距过大,想请教一下如何进行调整?

如果需要的话,我会把我写的内容传到github上,留下链接!

请问字体尺寸设置能用PT吗?

首先非常方便的控件!唯一问题是,字体也得用PT做单位适配,是否会在不同机器变模糊?

手头机器少,没有全试过。请有经验的朋友确认下?

谢谢。

内存问题讨论

之前的我的app 内存占用一直在13兆左右 使用了适配方案后内存后内存现在110多 这个问题怎么解决呢?

关于字体的设置

请问大家 字体都是使用的什么单位。之前我没有用这适配方案,字体是用的sp,现在打算用pt,但是发现字体比以前偏小了?

Dialog在屏幕旋转完后适配失效问题

场景:点击弹出Dialog , 正常适配
旋转屏幕 再回来竖屏 再点击Dialog 适配失效
再次点击又可以了...我在dialog的生命周期里调用了那个resetDensity方法 还是不行..这个是要怎么解决呀~

ImageView显示非常小的问题

我两个项目都是用的这个适配,挺不错的。目前第一次在大屏(商米T1, 14寸,横屏,安卓6.0,分辨率19201080)开发,发现ImageView在上面显示非常非常小,宽高均是wrap_content,在同分辨率手机上运行是正常的。UI设计稿是19201080,切图xhdpi,xxhdpi ,是切的图片不对?
这个问题可能与此库无关,但是希望有知道原因的告诉一下,非常感谢啦。

有webview的activity出现的问题

第一次进入有 webview 的页面后,返回再进入其他页面,适配就失效了,再次进入webview的页面一次,后边再进其他页面,适配就又好了

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.