Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >安卓vs iOS上的D3.js bug

安卓vs iOS上的D3.js bug
EN

Stack Overflow用户
提问于 2015-06-23 18:34:45
回答 1查看 785关注 0票数 0

如果您尝试访问此动画贝塞尔曲线D3.js动画网站(https://www.jasondavies.com/animated-bezier/),则可以移动控制点以更改曲线的轨迹。如果你用iOS访问网站,但你不能在安卓上移动控制点,这是可行的。有人知道这是为什么吗?也许是安卓WebView的bug或实现上的缺陷?

我想弄清楚用Phonegap/Cordova编程是否值得,这样的事情让我觉得这项技术还不成熟……

EN

回答 1

Stack Overflow用户

发布于 2015-11-09 06:25:09

我发现这个问题的一个原因是拖动事件与触摸屏的兼容性,它在D3.js v3中得到了修复。这里显示了一个镜像网站的演示片段,唯一的变化是加载了更新版本的D3.js。

由于我使用的是模拟器,并且只更改了特定的一小部分,而没有检查网站的实际工作方式,因此这个答案可能不能完全涵盖您的问题。

代码语言:javascript
运行
AI代码解释
复制
var w = 250,
    h = 300,
    t = .5,
    delta = .01,
    padding = 10,
    points = [{x: 10, y: 250}, {x: 0, y: 0}, {x: 100, y: 0}, {x: 200, y: 250}, {x: 225, y: 125}],
    bezier = {},
    line = d3.svg.line().x(x).y(y),
    n = 4,
    stroke = d3.scale.category20b(),
    orders = d3.range(2, n + 2);

var vis = d3.select("#vis").selectAll("svg")
    .data(orders)
  .enter().append("svg")
    .attr("width", w + 2 * padding)
    .attr("height", h + 2 * padding)
  .append("g")
    .attr("transform", "translate(" + padding + "," + padding + ")");

update();

vis.selectAll("circle.control")
    .data(function(d) { return points.slice(0, d) })
  .enter().append("circle")
    .attr("class", "control")
    .attr("r", 7)
    .attr("cx", x)
    .attr("cy", y)
    .call(d3.behavior.drag()
      .on("dragstart", function(d) {
        this.__origin__ = [d.x, d.y];
      })
      .on("drag", function(d) {
        d.x = Math.min(w, Math.max(0, this.__origin__[0] += d3.event.dx));
        d.y = Math.min(h, Math.max(0, this.__origin__[1] += d3.event.dy));
        bezier = {};
        update();
        vis.selectAll("circle.control")
          .attr("cx", x)
          .attr("cy", y);
      })
      .on("dragend", function() {
        delete this.__origin__;
      }));

vis.append("text")
  .attr("class", "t")
  .attr("x", w / 2)
  .attr("y", h)
  .attr("text-anchor", "middle");

vis.selectAll("text.controltext")
    .data(function(d) { return points.slice(0, d); })
  .enter().append("text")
    .attr("class", "controltext")
    .attr("dx", "10px")
    .attr("dy", ".4em")
    .text(function(d, i) { return "P" + i });

var last = 0;
d3.timer(function(elapsed) {
  t = (t + (elapsed - last) / 5000) % 1;
  last = elapsed;
  update();
});

function update() {
  var interpolation = vis.selectAll("g")
      .data(function(d) { return getLevels(d, t); });
  interpolation.enter().append("g")
      .style("fill", colour)
      .style("stroke", colour);

  var circle = interpolation.selectAll("circle")
      .data(Object);
  circle.enter().append("circle")
      .attr("r", 4);
  circle
      .attr("cx", x)
      .attr("cy", y);

  var path = interpolation.selectAll("path")
      .data(function(d) { return [d]; });
  path.enter().append("path")
      .attr("class", "line")
      .attr("d", line);
  path.attr("d", line);

  var curve = vis.selectAll("path.curve")
      .data(getCurve);
  curve.enter().append("path")
      .attr("class", "curve");
  curve.attr("d", line);

  vis.selectAll("text.controltext")
      .attr("x", x)
      .attr("y", y);
  vis.selectAll("text.t")
      .text("t=" + t.toFixed(2));
}

function interpolate(d, p) {
  if (arguments.length < 2) p = t;
  var r = [];
  for (var i=1; i<d.length; i++) {
    var d0 = d[i-1], d1 = d[i];
    r.push({x: d0.x + (d1.x - d0.x) * p, y: d0.y + (d1.y - d0.y) * p});
  }
  return r;
}

function getLevels(d, t_) {
  if (arguments.length < 2) t_ = t;
  var x = [points.slice(0, d)];
  for (var i=1; i<d; i++) {
    x.push(interpolate(x[x.length-1], t_));
  }
  return x;
}

function getCurve(d) {
  var curve = bezier[d];
  if (!curve) {
    curve = bezier[d] = [];
    for (var t_=0; t_<=1; t_+=delta) {
      var x = getLevels(d, t_);
      curve.push(x[x.length-1][0]);
    }
  }
  return [curve.slice(0, t / delta + 1)];
}

function x(d) { return d.x; }
function y(d) { return d.y; }
function colour(d, i) {
  stroke(-i);
  return d.length > 1 ? stroke(i) : "red";
}
代码语言:javascript
运行
AI代码解释
复制
/*
* 提示:该行代码过长,系统自动注释不进行高亮。一键复制会移除系统注释 
* body{font-size:1em;font-weight:400;word-spacing:normal;letter-spacing:normal;text-transform:none;font-family:Verdana, Myriad Web, Syntax, sans-serif;font-size-adjust:.58;color:#000;background:#FFF;line-height:1.58em;border-top:0;border-left:0;border-bottom:0;border-right:0;width:auto;margin:1.58em 5% 1.58em 8%;padding:0}small{font-size:.92em}big{font-size:1.17em}pre{font-family:Monotype.com, Courier New, monospace;border-top:0;border-bottom:0;line-height:1.25em;border-left:0;border-right:0;margin:.75em 0;padding:0}ol li{list-style-type:decimal}ol ol li{list-style-type:lower-alpha}ol ol ol li{list-style-type:lower-roman}table,tbody,tr,td{font-size:1em;word-spacing:normal;letter-spacing:normal;text-transform:none;font-family:Verdana, Myriad Web, Syntax, sans-serif;font-size-adjust:.58}h1{font-family:Myriad Web, Arial, Helvetica, sans-serif;font-size-adjust:.48;font-size:2em;font-weight:700;font-style:normal;text-decoration:none;word-spacing:normal;letter-spacing:normal;text-transform:none;border-top:0;border-bottom:0;border-left:0;border-right:0;text-align:left;margin:1.33em 0 .33em;padding:0}h2{font-family:Myriad Web, Arial, Helvetica, sans-serif;font-size-adjust:.48;font-size:1.75em;font-weight:500;font-style:normal;text-decoration:none;word-spacing:normal;letter-spacing:normal;text-transform:none;border-top:0;border-bottom:0;border-left:0;border-right:0;text-align:left;margin:1.75em 0 .33em;padding:0}h3{font-family:Myriad Web, Arial, Helvetica, sans-serif;font-size-adjust:.48;font-size:1.58em;font-weight:500;font-style:normal;text-decoration:none;word-spacing:normal;letter-spacing:normal;text-transform:none;border-top:0;border-bottom:0;border-left:0;border-right:0;text-align:left;margin:1.58em 0 .33em;padding:0}h4{font-family:Myriad Web, Arial, Helvetica, sans-serif;font-size-adjust:.48;font-size:1.33em;font-weight:500;font-style:oblique;text-decoration:none;word-spacing:normal;letter-spacing:normal;text-transform:none;border-top:0;border-bottom:0;border-left:0;border-right:0;text-align:left;margin:1.33em 0 .33em;padding:0}h5,dt{font-family:Myriad Web, Arial, Helvetica, sans-serif;font-size-adjust:.48;font-size:1.17em;font-weight:500;font-style:normal;text-decoration:none;word-spacing:normal;letter-spacing:normal;text-transform:none}h6{font-family:Myriad Web, Arial, Helvetica, sans-serif;font-size-adjust:.48;font-size:1em;font-weight:500;font-style:normal;text-decoration:none;word-spacing:normal;letter-spacing:normal;text-transform:none;border-top:0;border-bottom:0;border-left:0;border-right:0;text-align:left;margin:1em 0 .33em;padding:0}tfoot,thead{font-size:1em;word-spacing:normal;letter-spacing:normal;text-transform:none;font-family:Myriad Web, Arial, Helvetica, sans-serif;font-size-adjust:.48}th{vertical-align:baseline;font-size:1em;font-weight:700;word-spacing:normal;letter-spacing:normal;text-transform:none;font-family:Myriad Web, Arial, Helvetica, sans-serif;font-size-adjust:.48;text-align:left}hr{visibility:visible;color:#000;border-top:0;border-bottom:0;height:1px;border-left:0;border-right:0;text-align:left;width:100%;margin:.75em 0;padding:0}a,address,blockquote,body,cite,code,dd,del,dfn,div,dl,dt,form,h1,h2,h3,h4,h5,h6,iframe,img,kbd,li,object,ol,p,q,samp,small,span,strong,ul,var,applet,big,center,dir,font,hr,menu,pre,abbr,acronym,bdo,button,fieldset,ins,label{word-spacing:normal;letter-spacing:normal;text-transform:none;text-decoration:none;border-color:#000;border-style:none}strong{font-style:italic;background:#FFF;font-weight:700;color:#000}em strong,strong em{text-transform:uppercase;font-style:normal;font-weight:bolder;background:#FFF;color:red}b{font-weight:700}.warning{text-transform:none;font-style:normal;font-weight:bolder;background:#FFF;color:red}del{text-decoration:line-through;background:#F66}ins{text-decoration:underline;background:#FF0}address{font-style:normal;letter-spacing:.1em;border-top:0;border-bottom:0;border-left:0;border-right:0;margin:1.58em 0;padding:0}acronym{font-variant:small-caps;letter-spacing:.1em}h1,h2,h3,h4,h5,h6,dt,th,thead,tfoot{color:#000;background:#FFF}#colophon{display:none}col,colgroup,table,tbody,td,tr{color:#000;text-decoration:none;background:#FFF;border-color:#000;border-style:none}a:link{text-decoration:none;font-weight:700;color:#C00;background:#ffc}a:visited{text-decoration:none;font-weight:700;color:#999;background:#ffc}a:active{text-decoration:none;font-weight:700;color:red;background:#FC0}a:hover{text-decoration:none;color:#C00;background:#FC0}a.offsite{text-decoration:none;font-weight:400;color:#C00;background:#ffc}a,address,blockquote,cite,code,dd,del,dfn,div,dl,dt,em,form,h1,h2,h3,h4,h5,h6,iframe,img,kbd,li,object,ol,p,q,samp,small,span,strong,ul,var,applet,b,big,center,dir,font,hr,i,menu,pre,s,strike,tt,u,abbr,acronym,bdo,button,fieldset,ins,label{border-top:0;border-bottom:0;vertical-align:baseline;border-left:0;border-right:0;text-align:left;float:none;clear:none;list-style-position:outside;margin:0;padding:0}h5{border-top:0;border-bottom:0;border-left:0;border-right:0;text-align:left;margin:1.17em 0 .33em;padding:0}p{border-top:0;border-bottom:0;border-left:0;border-right:0;text-indent:0;margin:.75em 0;padding:0}dd{border-top:0;border-bottom:0;border-left:0;border-right:0;margin:0 0 .75em 1.58em;padding:0}li{border-top:0;border-bottom:0;border-left:0;border-right:0;margin:0 0 0 3.16em;padding:0}div,center{margin-top:0;margin-bottom:0;padding-top:0;padding-bottom:0;border-top:0;border-bottom:0}.stb{margin-top:2.17em;margin-bottom:.75em;padding-top:2.17em;padding-bottom:0;border-top:0;border-bottom:0;border-style:solid}.mtb{margin-top:3.08em;margin-bottom:.75em;padding-top:3.08em;padding-bottom:0;border-top:.1em;border-bottom:0;border-style:solid}.ltb{margin-top:4.34em;margin-bottom:.75em;padding-top:4.34em;padding-bottom:0;border-top:.25em;border-bottom:0;border-style:solid}col,colgroup,table,tbody,td,tfoot,th,thead,tr{border-top:0;border-bottom:0;border-left:0;border-right:0;float:none;clear:none;margin:0;padding:0}address,blockquote,dl,fieldset,form,ol,p,ul,dir,hr,menu,pre{margin-left:0;margin-right:0;padding-left:0;padding-right:0;border-left:0;border-right:0}blockquote{margin-left:1.58em;margin-right:0;padding-left:0;padding-right:0;border-left:0;border-right:0}center{margin-left:0;margin-right:0;padding-left:0;padding-right:0;border-left:0;border-right:0;text-align:left}i,var,cite,dfn,.note{font-style:italic}div > p:first-child,body > p:first-child,td > p:first-child,h1 + p,h2 + p,h3 + p,h4 + p,h5 + p,h6 + p,div + p,p.initial{border-top:0;border-bottom:0;border-left:0;border-right:0;text-align:left;text-indent:0;margin:.75em 0;padding:0}h1,h2,h3,h4,h5,h6,td,th{line-height:1.33em}blockquote,fieldset,form,ul,ol,dl,dir,menu,.subhead{margin-top:.75em;margin-bottom:.75em;padding-top:0;padding-bottom:0;border-top:0;border-bottom:0}dt,ul ul,ol ol,li address,li dl,li ol,li p,li ul,li dir,li hr,li menu,li pre,li h1,li h2,li h3,li h4,li h5,li h6,dd address,dd dl,dd ol,dd p,dd ul,dd dir,dd hr,dd menu,dd pre,dd h1,dd h2,dd h3,dd h4,dd h5,dd h6{border-top:0;border-bottom:0;border-left:0;border-right:0;margin:0;padding:0}table,td,caption{text-align:left}
*/
#adsense {
  margin-top: 1em;
}
代码语言:javascript
运行
AI代码解释
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>Animated Bézier Curves - Jason Davies</title>
    <link rel="stylesheet" href="../media/style.css">
    <script src="../media/js/jquery.min.js"></script>
    <script src="../media/js/d3.v2.min.js"></script>
    <meta name="author" content="Jason Davies">
    <style>
      .curve, .line {
        fill: none;
        stroke-width: 1px;
      }
      .curve {
        stroke: red;
        stroke-width: 3px;
      }
      .control {
        fill: #ccc;
        stroke: #000;
        stroke-width: .5px;
      }
      .t, .controltext {
        font-size: .6em;
      }
    </style>
  </head>
  <body>
    <h1>Animated Bézier Curves</h1>
    <p>Play with the control points to modify the curves!</p>
    <div id="vis">
      <script src="animated-bezier.js"></script>
    </div>
    <p>
    These animations illustrate how a parametric <a href="http://en.wikipedia.org/wiki/Bezier_Curve">Bézier curve</a> is constructed.
    The parameter <em>t</em> ranges from 0 to 1.
    In the simplest case, a first-order Bézier curve, the curve is a straight line between the control points.
    </p>
    <p>
    For a second-order or quadratic Bézier curve, first we find two intermediate points that are <em>t</em> along the lines between the three control points.
    Then we perform the same interpolation step again and find another point that is <em>t</em> along the line between those two intermediate points.
    Plotting this last point yields a quadratic Bézier curve.
    The same steps can be repeated for higher orders.
    </p>
    <p>
    Written using the <a href="http://mbostock.github.com/d3/">D3 visualisation library</a>.
    Suggested by <a href="http://graphics.stanford.edu/~mbostock/">Mike Bostock</a> and inspired by a <a href="http://en.wikipedia.org/wiki/Bezier_Curve#Constructing_B.C3.A9zier_curves">similar animation on Wikipedia</a>.
    <p>Requires a SVG-capable browser e.g. <a
      href="http://www.mozilla.org/firefox/">Mozilla Firefox</a>, WebKit (<a
      href="http://www.google.com/chrome">Google Chrome</a>, <a
      href="http://www.apple.com/safari/">Safari</a> &amp;c.) or Internet Explorer 9+.
  </body>
</html>

<p class="copyright">&copy; <a href="http://www.jasondavies.com/">Jason Davies</a> | <a href="../privacy/">Privacy Policy</a>.

<p><ins class="adsbygoogle" style="display:inline-block;width:728px;height:90px" data-ad-client="ca-pub-2911491153890039" data-ad-slot="2029654015"></ins>

<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<script>
window.google_analytics_uacct = "UA-54563-3";
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-54563-3']);
_gaq.push(['_trackPageview']);
setTimeout(function() {
  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
  (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
}, 1);
(adsbygoogle = window.adsbygoogle || []).push({});
</script>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31010807

复制
相关文章
在安卓手机或Win电脑上同步iOS上的日历
说说我的需求:我平时都是我的iPad上添加我日常的日程,但是如果要到电脑或安卓手机上也有同样的日历就比较不方便。
可定
2020/04/21
4.5K0
在安卓手机或Win电脑上同步iOS上的日历
实战-如何获取安卓iOS上的微信聊天记录、通过Metasploit控制安卓
在这篇文章中我们将讨论如何获取安卓、苹果设备中的微信聊天记录,并演示如何利用后门通过Metasploit对安卓设备进行控制。文章比较基础、可动手性强,有设备的童鞋不妨边阅读文章边操作,希望能激发大家对移动终端的安全兴趣。 “如何获取Android、iPhone手机上的微信聊天记录? ” 0×00 条件: 安卓设备已获取root权限,安装SSHDroid(通过ssh、ftp连接手机) Apple设备越狱,安装OpenSSH插件 0×01 安卓: 很多安卓手机的用户都会遇到这么一个尴尬的问题:手机用久了就不知
用户1631416
2018/04/12
5.3K0
实战-如何获取安卓iOS上的微信聊天记录、通过Metasploit控制安卓
如何使用fiddler抓包安卓,IOS接口,并定位分析bug?
比如你在做web测试或者app测试的时候,页面突然弹出一个系统异常或者其它之类的错误,又或者你一直点击某个按钮没有反应。这个时候你应该怎么做呢?
测试小牛
2022/04/25
7340
如何使用fiddler抓包安卓,IOS接口,并定位分析bug?
使用VS调试安卓Unity应用
最近遇到了一个bug,需要在安卓手机上实机调试才行,所以这里记录一下怎么用VS调试安卓应用。我使用的VS是2017,但是更新的2019等版本应该也是差不多的(毕竟实际上依赖的是Visual Studio Tools for Unity插件)。Unity版本是2018.4(LTS版本),但是后面更新的版本应该也是一样的。因为我是直接用连接到电脑的测试机来调试的,所以这里主要的内容是关于调试连接到电脑的测试机上的安卓Unity应用。
太阳影的社区
2021/11/04
1.9K0
安卓和 ios滚动事件的差异
document.documentElement.scroll 仅在 ios 有效,
蓓蕾心晴
2022/11/21
1K0
appinventor安卓壁纸设置(上)
初步功能需求 打开安卓app,然后会看到一张内置好的图片,点击下方的设置壁纸,实现让这个图片成为壁纸的功能,实现方法调用安卓系统内置的壁纸设置工具。
泽泽社长
2023/04/17
9720
appinventor安卓壁纸设置(上)
安卓app上架流程
上传APP的时候,遇到了问题,一直卡在Authenticating with the iTunes store提示这里,
爱学iOS的小麦子
2023/01/04
5790
浅谈安卓系统上的DSU loader
什么是DSU loader? dsu loader即 动态系统更新可以在使用动态分区的安卓设备上,不影响原来系统的同时安装一个副系统,用于体验最新的原生安卓系统(AOSP)(博主评:相比传统刷机模式,
Tianli
2023/03/03
13.2K0
逐渐安卓化会是ios的归宿吗
近日的苹果发布会虽然没等到iphone12,但ios14还是如期而至了。似乎是预示着这个版本的重大变革,ios14对新系统的定义就是“重塑iphone体验”。
TestOps
2022/04/07
1.4K0
逐渐安卓化会是ios的归宿吗
看书必备!安卓+iOS 看小说神器!!
你用手机看小说吗?网络小说。 听说过唐家三少吗?天蚕土豆?我吃西红柿? 如果你的回答是“是”,那你一定需要一款可以调背景,字体,滑动方式的好用免费的小说客户端。 比如,看书神器?可以更换追书源的那种
课代表
2018/06/29
2.2K0
物联网系统时代:iOS、安卓拜拜?
随着智能汽车、智能家居、智慧交通等智慧场景的应用落地,智慧化生活场景正在成为现实。在技术应用层面,这些智慧场景的实现,都需要操作系统的支持。这种情况下,以物联网技术为核心的IoT操作系统地位愈加凸显。
刘旷
2020/12/03
1.4K0
物联网系统时代:iOS、安卓拜拜?
看书必备!安卓+iOS 看小说神器!!
看网络小说的小伙伴们应该都知道笔趣阁这三个字,最早的笔趣阁是哪一个,什么时候被ban已经不可考,但这个三个字已经成为小说界的一个大IP,百度出来一大串,什么笔趣阁阅读,新笔趣阁,没有什么真的假的,就看
课代表
2018/06/29
2.2K0
看书必备!安卓+iOS 看小说神器!!
iOS端的看书APP下架了一个又一个,真是不容易,安卓端也是良莠不齐,名气最大的追书神器也转向正版,当然,破解版除外。
课代表
2018/09/27
3.9K0
看书必备!安卓+iOS 看小说神器!!
和安卓和ios的webview的数据交互
第一步是必写的 function setupWebViewJavascriptBridge(callback) { if (window.WebViewJavascriptBridge) { return callback(WebViewJavascriptBridge); } if (window.WVJBCallbacks) {
河湾欢儿
2019/07/24
1.2K0
Appium安卓和iOS开发环境安装
Appium是移动端的自动化测试工具,类似于Selenium,利用它可以驱动Android,iOS等设备完成自动化测试,比如模拟点击,滑动,输入等操作....
py3study
2020/01/19
3.6K0
uniapp安卓-IOS打开pdf文件组件
做的比较简陋,将就用哈,自己优化也许 调用: this.$refs.openPdf.preview(item.url) 使用: <!-- pdf预览start --> <previewPdf ref="openPdf"></previewPdf> <!-- pdf预览end --> 引用: import previewPdf from '@/components/preview-pdf/preview-pdf.vue' //pdf预览 <template> <view> </view
〆 千寻、
2020/03/16
3.7K4
uniapp安卓-IOS打开pdf文件组件
安卓和ios之间文件互传_安卓转移到iphone12
如果之前是安卓用户,在购买 iphone 12 新款手机之后,如何从安卓转移数据到 ios?可以通过苹果官方提供的“转移到 ios”应用,将安卓手机中的内容进行转移,感兴趣的朋友快来看看吧!
全栈程序员站长
2022/11/04
1.8K0
【Rust日报】2021-04-12 谷歌安卓团队拥抱 安卓上的 Rust 开发
过去 18 个月中,安卓团队开始将 Rust 引入到安卓开源项目中, 很快, 一些早期的适配项目就会面世.
MikeLoveRust
2021/04/22
1.1K0
安卓设备数据转移到ios设备
1、首先在安卓设备上在https://support.apple.com/zh-cn/HT205042下载“转移到 iOS”应用,然后安装并轻点“继续”。阅读显示的条款和条件。轻点“同意”以继续,然后轻点“查找代码”屏幕右上角的“下一步”。
全栈程序员站长
2022/10/02
1.4K0
支持安卓和ios,手机app+1
今天分享个扫描神器布丁扫描 ,支持安卓和ios,免费无广,在公众号后台回复 扫描 获取下载地址。
苏生不惑
2023/02/06
6690

相似问题

街景:安卓vs iOS

12

在MapBox安卓vs iOS上显示GeoJSON

233

PhoneGap vs安卓和iOS

32

安卓vs iOS选择哪个

71

安卓getRelativeTimeSpanString() bug?

40
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档