iPhone上的默认微调器看起来比Android上好.看起来至少有一个Android应用程序(UrbanSpoon)能够复制这个控件,它很棒:http://www.urbanspoon.com/android
任何人对如何创建这个有任何想法?代码会有所帮助.
如果您不需要对轨迹球的支持,那么它将需要的是WebView以及一些现有JavaScript的一些小调整,这些JavaScript模仿Apple的UIPickerView来创建这样的应用程序.
Fancy Spinner Image http://i47.tinypic.com/aymyjc.jpg
大部分的努力工作都是由Matteo Spinelli完成的,所以首先下载他的代码,然后将这些更改应用到spinningwheel.js
.他的代码想要通过取消和完成按钮从屏幕底部弹出选择器,所以我们需要修改几行来消除这种行为.
--- spinningwheel.js.orig 2010-05-26 00:17:00.411954051 -0700 +++ spinningwheel.js 2010-05-26 00:16:32.319010720 -0700 @@ -67,12 +67,10 @@ onOrientationChange: function (e) { window.scrollTo(0, 0); - this.swWrapper.style.top = window.innerHeight + window.pageYOffset + 'px'; this.calculateSlotsWidth(); }, onScroll: function (e) { - this.swWrapper.style.top = window.innerHeight + window.pageYOffset + 'px'; }, lockScreen: function (e) { @@ -113,9 +111,9 @@ // Create the Spinning Wheel main wrapper div = document.createElement('div'); div.id = 'sw-wrapper'; - div.style.top = window.innerHeight + window.pageYOffset + 'px'; // Place the SW down the actual viewing screen + div.style.top = 0; div.style.webkitTransitionProperty = '-webkit-transform'; - div.innerHTML = 'Cancel' + 'div>Done' + 'div>' + 'div>' + 'div>' + 'div>' + 'div>'; + div.innerHTML = '' + 'div>' + 'div>' + 'div>'; document.body.appendChild(div); @@ -164,8 +162,6 @@ window.addEventListener('scroll', this, true); // Reposition SW on page scroll // Cancel/Done buttons events - document.getElementById('sw-cancel').addEventListener('touchstart', this, false); - document.getElementById('sw-done').addEventListener('touchstart', this, false); // Add scrolling to the slots this.swFrame.addEventListener('touchstart', this, false); @@ -174,9 +170,6 @@ open: function () { this.create(); - this.swWrapper.style.webkitTransitionTimingFunction = 'ease-out'; - this.swWrapper.style.webkitTransitionDuration = '400ms'; - this.swWrapper.style.webkitTransform = 'translate3d(0, -260px, 0)'; }, @@ -191,8 +184,6 @@ this.swFrame.removeEventListener('touchstart', this, false); - document.getElementById('sw-cancel').removeEventListener('touchstart', this, false); - document.getElementById('sw-done').removeEventListener('touchstart', this, false); document.removeEventListener('touchstart', this, false); document.removeEventListener('touchmove', this, false);另外,
index.html
他提供的并不是你想要的,所以用这个替换它然后将html,css,js和png文件复制到项目的assets目录中.创建一个在WebView中启用JavaScript的Activity,并为其返回选择的回调.
public class FancySpinner extends Activity { private WebView webView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ((Button) findViewById(R.id.GetSelectedTimeButton)) .setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { webView.loadUrl("javascript:getData()"); } }); webView = (WebView) findViewById(R.id.WebView01); webView.getSettings().setJavaScriptEnabled(true); webView.addJavascriptInterface(new AndroidBridge(), "android"); webView.setVerticalScrollBarEnabled(false); webView.loadUrl("file:///android_asset/index.html"); } private class AndroidBridge { public void sendResults(final String arg) { Toast.makeText(FancySpinner.this, arg, Toast.LENGTH_SHORT).show(); } public void readyForJavascript(final String arg) { webView.loadUrl("javascript:SpinningWheel.addSlot({ " + "1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6," + "7: 7, 8: 8, 9: 9, 10: 10, 11: 11, 12: 12 });"); webView.loadUrl("javascript:SpinningWheel.addSlot({ " + "1: 'AM', 2: 'PM'});"); webView.loadUrl("javascript:SpinningWheel.open();"); } } }最后,修改您的布局,使WebView的高度设置得恰当.
推荐阅读
如何解决《Oracle是否仍在开发JavaFXSceneBuilder?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《xlsxwriter中的自定义数据标签》经验,为你挑选了0个好方法。 ... [详细] 如何解决《使用React-Native运行自定义Babel变换》经验,为你挑选了1个好方法。 ... [详细] 如何解决《将指针作为C++类中的成员字段是愚蠢的吗?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《如何使用JSoup获得隐藏的输入值?》经验,为你挑选了0个好方法。 ... [详细] 如何解决《最小比较时间.持续时间?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《正则表达式提取字符串后的第二个"."字符串末尾的点字符》经验,为你挑选了1个好方法。 ... [详细] 如何解决《Safari自动"display:none!important"不会加载图片》经验,为你挑选了1个好方法。 ... [详细] 如何解决《理解BeautifulSoup中的Find()函数》经验,为你挑选了1个好方法。 ... [详细] 如何解决《为什么`getNumPartitions()`没有给我"repartition"指定的正确数量的分区?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《如何在页面刷新时保留ChromeDOM断点?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《WebAudioAPI中AudioWorkerNode的状态》经验,为你挑选了1个好方法。 ... [详细] 如何解决《Loop没有捕获重复项并在Android(Java)中删除它们》经验,为你挑选了0个好方法。 ... [详细] 如何解决《我应该为我写的每一个javascript函数'使用严格'吗?》经验,为你挑选了3个好方法。 ... [详细] 如何解决《在facebooksdk服务文件上启用压缩以优化网站》经验,为你挑选了1个好方法。 ... [详细] 如何解决《如何为eclipse安装最新版本的ADT插件》经验,为你挑选了2个好方法。 ... [详细] 如何解决《在Swift(iOS应用程序)中,何时需要使用其他整数类型?》经验,为你挑选了0个好方法。 ... [详细] 如何解决《如何使用node.js将查询字符串参数传递给SmartsheetAPI?》经验,为你挑选了1个好方法。 ... [详细] 吐了个 "CAO" !Tags | 热门标签RankList | 热门文章
- 1如何使用WebServiceTemplate发送SOAP请求?
- 2即使在设置launchMode ="singleTop"后仍在重新创建活动
- 3Python cron作业:/ usr / local / bin:错误的解释器:权限被拒绝
- 4在elixir sigil中逃脱闭括号
- 5Laravel - 使用@section动态设置元标记
- 6有人可以解释Pebble C Watchface教程中的部分代码吗?
- 7使用Espresso进行测试时,<package>中未找到任何测试
- 8如何在Swift中对两种类型进行协议扩展约束
- 9是否可以在Firebird数据库中将varchar(32)的字段转换为BLOB
- 10执行pandas.DataFrame.groupby()。sum()时保留非数字列
- 11尝试使用其他命令管道时,为什么cd命令不起作用?
- 12数据绑定Android - 类型参数T具有不兼容的上限:ViewDataBinding和MainActivity
- 13如何为具有泛型方法的功能接口创建lambda表达式
- 14RealmObject的Kotlin数据类
- 15数组对象是否显式包含索引?
- 16如何获得完全黑暗的kibana?
- 17让我们在modulus.io上加密证书
- 18AVR-GCC:错误:行尾的垃圾
- 19自定义Google登录按钮 - iOS
- 20使用noncopyable成员聚合类的初始化
DevBox开发工具箱 | 专业的在线开发工具网站 京公网安备 11010802040832号 | 京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有