我目前正在通过Sams出版的"24小时自学Android应用程序开发"一书.我对Java,Android或其他方面比较陌生.我在ActionScript 3中有一个非常扎实的背景,它与Java有足够的相似之处,语言本身并不难理解,但我仍然对本书中某些代码示例背后的基本原理有一些疑问.例如,这是第9小时的示例代码附带的函数:
private void processScores(final TableLayout scoreTable,
XmlResourceParser scores) throws IOException, XmlPullParserException{
Run Code Online (Sandbox Code Playgroud)
在此函数签名中,作者已将scoreTable参数声明为final.我有点不解为什么他们这样做了.即使尝试为函数参数scoreTable分配一个新值,也不会让我想到这一点(在ActionScript中它被认为是一种不好的做法).此外,我还没有看到任何人在我检查或移植到AS3中的任何真实Java中都这样做.
有没有关于Android开发的具体内容,有时需要将某些函数参数声明为final?
为什么TableLayout对象声明为final,而不是XmlResourceParser?
我的游戏在7英寸平板电脑上感觉最好,在10英寸平板电脑和5英寸三星Note尺寸设备上感觉非常好.对于像Nexus 4手机或S3这样大小的东西,它甚至可以玩得很开心.玩任何小东西都没有任何乐趣.在这种情况下,如何编写Manifest,以便它可以安装在从4.7英寸设备到10英寸平板电脑的任何设备上,同时受到小型手机的限制?
编辑
回过头来看,这个问题的原因是因为我发现Android开发者网站上的文档令人难以置信地混淆和冲突.让我们举一些例子来说明混乱的来源:
我们以几个不同的设备为例.
机器人3
查看支持屏幕的文档,我们可以推断......
但是,这个设备比我想要支持的设备要小得多......但是文档看起来像3个计数中的2个,这个设备有一个"大"屏幕.对这个术语没有明确的定义是一个4英寸的屏幕"大".现在,让我们走得更远......
Nexus 4
查看支持屏幕的文档,我们可以推断......
再一次,没有理智的定义是一个4.7英寸的屏幕"xlarge"...屏幕的大小可能只是足够大,使游戏愉快,但它是一个"中等"屏幕?一个"大"的屏幕?你怎么可能知道?
这两款手机都是"中型"吗?当Nexus"大"时,Droid会"中等"吗?为什么或者为什么不?如果Nexus是"大",那么这与7英寸平板电脑有什么不同,这也应该是"大?"
然后事实是文档声称支持屏幕/大小从3.2开始被弃用
但是,如果想要支持旧手机(假设适当的物理屏幕尺寸,以英寸为单位)和新平板电脑,或者如果它在树林中隐藏得很好,那么就没有明确指导如何使用它.有人可以清楚地说明 cretieria真正重要的是什么,为什么给定的设备适合给定的过滤器或失败?
我创建了一个html文件,内容如下 index.html
<html>
<head>
<script type="text/javascript" src="./pdf.js"></script>
<script type="text/javascript" src="./hello.js"></script>
</head>
<body>
<canvas id="the-canvas" style="border:1px solid black;"/>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
hello.js的内容
PDFJS.disableWorker = true;
var pf = PDFJS.getDocument('./helloworld.pdf')
pf.then(function(pdf) {
pdf.getPage(1).then(function(page) {
var scale = 1.5;
var viewport = page.getViewport(scale);
//
// Prepare canvas using PDF page dimensions
//
var canvas = document.getElementById('the-canvas');
var context = canvas.getContext('2d');
canvas.height = viewport.height;
canvas.width = viewport.width;
//
// Render PDF page into canvas context
//
var renderContext = {
canvasContext: context,
viewport: viewport …
Run Code Online (Sandbox Code Playgroud) 我正在使用由IntelliJ和Gradle驱动的Android Studio,它给了我一些问题.这是我得到的错误,我真的需要帮助.我不知道我的路径是否正确,但似乎无法解决问题.任何帮助将不胜感激.
这是我给它的位置后得到的,所以我有点困惑.位置是正确的.我承认我不知道问题是什么.提前致谢.
我是iOS开发的新手,并继续阅读"学习Cocos2d,使用Cocos2d,Box2d和Chipmunk构建iOS游戏的动手指南"一书.
我注意到我在第2章中呈现的UI按钮和viking characher与本书不匹配...明显的原因是本书指示您使用UI_USER_INTERFACE_IDIOM()宏来确定您是在运行iPad还是iPhone,但似乎无论我是否在xcode中设置使用iPad 4.3或iPhone 4.3的方案,宏总是报告我在手机上运行,而不是打击垫.
这个宏有什么问题吗?这是因为我只在模拟器上运行吗?我没有一个实际的设备可以测试任何这个.当这个宏像这样失败时我该怎么办?
在组合一个简单的"时钟"应用程序时,我发现Android要求你使用生活在线程A中的android.os.Handler来更新线程A中的View对象,其中包含来自线程B的数据结果.
我还是比较新的Java,这是我以前第一次明确处理Threads,但我知道如果两个不同的线程想要访问相同的数据,通常会将方法和/或操作声明为synchronized .但是看起来android.os.Handler是一种特定于Android的线程之间同步数据的方式,这样你就可以避免我刚刚链接到的Oracle文档中详述的经典 并发错误.这是真的吗?
如果我发现自己的情况是Android操作系统要求我使用android.os.Handler将数据从一个线程传送到另一个线程,这是否意味着我不必声明用于派生该方法的方法数据同步?
我仍然是Java和Android开发的新手,所以我仍然不熟悉可用的大量库,特别是动画.我来自(Flash世界),我们可以访问几个第三方补间引擎,当我们想要以编程方式在舞台上移动东西而不依赖于(极其低劣的)内置Adobe时,我们的生活非常轻松补间API.其中最受欢迎的是Greensock的TweenMax
看看Android处理本地补间的方式,与我习惯的相比,它看起来非常麻烦.我很好奇是否有适用于Android的TweenMax等效库,这使得动画排序在代码中同样易于编写,具有智能智能感知的优点,而不必将其全部写入外部animation.xml文件中res文件夹.
android ×5
java ×4
animation ×1
final ×1
flash ×1
google-play ×1
gradle ×1
handler ×1
html ×1
html5 ×1
ios ×1
javascript ×1
objective-c ×1
pdf.js ×1
screen-size ×1
synchronized ×1