android 游戏开发是不是可以在网上android免费学习网站呢?

android 游戏开发好学吗?哪里有免费的学习教程?_百度知道
android 游戏开发好学吗?哪里有免费的学习教程?
但可能不全,在里面问问。学习教程的话网上搜索一般都有,不过要自己每天坚持练习,另外也可以在里面多向别人请教不懂的,多多理解就行,可以多加几个相关的QQ群,会有人说的学还是好学
Android|HTML5|iOS培训名师面授
主营:Android培训、HTML5培训、iOS培训
其他类似问题
为您推荐:
android的相关知识
其他1条回答
==我也学过这个课程
请问一下谁清楚
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁android开发视频教程是不是可以在网上免费学习呢?_百度知道
android开发视频教程是不是可以在网上免费学习呢?
提问者采纳
学两个月了,不错
详细说明一下
慕课网课程涵盖前端开发、PHP、Html5、Android、iOS、Swift等IT前沿技术语言,包括基础课程、实用案例、高级分享三大类型,适合不同阶段的学习人群。以纯干货、短视频的形式为平台特点,为在校学生、职场白领提供了一个迅速提升技能、共同分享进步的学习平台。
提问者评价
太给力了,你的回答完美地解决了我的问题,非常感谢!
其他类似问题
为您推荐:
android开发的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁您所在的位置: &
学习Android开发的二十套免费理想资源
学习Android开发的二十套免费理想资源
核子可乐译
大家需要付出的只是一颗热爱学习的心。今天的内容包含了我长久以来收集到的全部Android网络学习资源,相信能够帮助各位刚刚踏入移动开发领域的朋友在这条道路上披荆斩棘、勇猛精进。
我将这些资源进行了具体分类,包括教程、电子书、视频讲座与论坛资源,这样大家就能够根据需要进行有针对性地使用。
时至今日,Android已经成为全球范围内最具人气的移动开发环境,而且目前有超过66%智能手机开发人员专门面向Android平台实施开发工作。在如此庞大的市场份额以及谷歌公司频繁更新的推动之下,Android系统不仅是一套蕴藏着丰厚利润空间的移动平台,同时也充当着极具活力的生态系统。
作为智能手机与应用程序的双料用户,我个人对于Android简直是无比热爱、无比推崇。我当然也希望能有一款属于自己的应用程序运行在Android设备之上。在Android平台上学习应用开发是个充满乐趣的过程,同时也能为大家带来相当可观的经济回报。因此在今天的文章中,我们将共同了解那些不用花钱也能掌握Android开发诀窍的理想途径。
如果大家真的打算学习Android编程而且希望构建出属于自己的应用或者游戏软件,那么我建议大家认真整理好下面的这二十套免费资源。没错,它们最大的吸引力就在于不花一分钱即可享用,大家需要付出的只是一颗热爱学习的心。今天的内容包含了我长久以来收集到的全部Android网络学习资源,相信能够帮助各位刚刚踏入移动开发领域的朋友在这条道路上披荆斩棘、勇猛精进。
我将这些资源进行了具体分类,包括教程、电子书、视频讲座与论坛资源,这样大家就能够根据需要进行有针对性地使用。
免费教程与博客:
如果大家刚刚接触Android开发,那么相关教程及博客能够为各位提供具体的发展路线以及必要的编程知识,从而帮助我们顺利完成自己的首款Android应用开发项目。下面就一起来看我个人最中意的免费Android编程网站及博客。
1) Android官方网站
完全面向Android开发人员,其中包含各类官方教程、社区以及开源开发指南资源,内容之丰富堪称叹为观止。该站点还提供大量针对性教程,能够帮助大家从零开始编写自己的应用。我们也可以从中找到与Android开发所必需的API相关的各类说明文档及指南。如果您是一位经验丰富的开发人员,而且很清楚如何利用这些资源,那么官方网站足以帮您解决全部疑问。该站点同时提供原生Android开发所不可或缺的各类工具及SDK。
2) vogella
Vogella同样提供数量庞大的Android开发人员教程集合。大家可以在这里找到适用于新手的免费教程,以及各种面向高级程序员的出色工具&&这些工具都经过了明确分类。Vogella是目前人气最高的移动开发学习博客之一。
3) Java Code Geeks
本网站提供面向每一位新晋开发者的Android以及Java教程。Android部分具体分为两大章节,其一为Android核心教程,其二是Android游戏开发指南。因此,如果大家对开发Android游戏抱有兴趣,那么此网站足以为您提供理想的起步指导资源。
4) coreservlets
Coreservlets当中包含多套Android编程系列教程。大家也可以根据自己的学习节奏进行查阅,因为该站点中也提供大量练习试题与解决方案。虽然学习Android开发会对大家的Java知识提出一定要求,但各位完全没必要担心!在此网站中,我们也能轻松找到Java相关教程。
5) Eduonix
这是另一个非常出彩的站点,我们可以从其中找到优秀的教程资源以及深入浅出的Android解答指南及博文。与Coreserveltes一样,如果大家还不熟悉Java,也可以在这里先打好基础、而后再一鼓作气冲击Android学习目标。Eduonix博客中拥有多种不同编程资源门类,包括HTML 5、Java以及PhoneGap等等。
6) ANDROIDHIVE
这一Android教程博客由Ravi Tamada负责撰写。Ravi先生本身是一位Android开发人员,同时乐于在该网站上分享他自己的经验与专业知识。因此如果大家打算遵循他的步伐进行学习,完全可以直接在该博客中提交自己的疑问及难题。
免费电子书:
在网络上搜索电子书时,大家肯定能找到成百上千免费的Android编程教材,其中包含进行Android开发时需要了解的一切基础性概念&&且同时面向新手与经验丰富的编程老鸟。接下来列出的这些电子书皆为PDF格式,大家需要将其下载到自己的PC设备上,以待日后慢慢查看。
7) MacGrawHill的Android指南
这本极富盛名的MacGrawHill电子书将带大家深入探寻Android开发的奥秘。一旦大家掌握了这本书中的全部内容,就完全能够创建出自己的Android应用程序、利用模拟器运行并测试自己的应用成果,同时笑傲Eclipse与Android SDK的世界。
8) Android Tutorial
这本Android电子书将带大家掌握Android编程的基本要诀,外加工具、SDK、插件以及如何创建项目等常见概念。
9) andbook Android Programming
这些教程由Anddev社区友情提供。在这本电子书当中,大家将了解到Android概述、如何创建应用、Android资源讲解、&Hello World&应用示例、布局以及网格等重要知识。
10) Commonsware Tutorials
Commonsware教程由Mark Murphy撰写,属于一套系列教程合集,其内容足以引导大家贯穿整个Android应用程序开发流程&&从最简单的&Hello World!&到引入多种高级Android API的应用成品皆有涉及。
11) Android&s Framework
这本电子书将帮助大家了解与Android安全相关的各项议题&&具体包括如何定义安全策略、定义策略所需使用的接口、使用接口的具体实践以及保护应用程序时经常出现的陷阱等。备注:这本电子书并不能直接帮助大家学习Android应用构建。
免费视频教程:
视频教程往往是初学者们掌握知识的最佳途径。大家可以在网络上找到不少编程教学视频站点,但其中大部分要求我们付费观看。在这里,我为大家准备了一些适合用于学习Android编程基本概念的视频网站,而且内容完全免费。
12) LearnersTV
除了学习Android编程知识之外,Lerners TV还允许大家将其中的视频下载到自己的计算机当中。在全长五个小时的视频内容当中,我们将恣意畅游在Android的世界里&&而且无需付费,快哉快哉!
13) FreeVideoLectures
Freevideolectures当中包含五十节视频课程,允许大家以mp4以及3gp格式将其下载至本地设备中&&它无疑又是另一套免费学习Android的理想平台。
凭借着这全部22次讲座以及5套测验,已经有超过48000名新人用户通过Udemy的从零开始实现Android编程视频从Android开发当中获得了乐趣。除了按照自己的学习进度观看视频之外,大家还可以在课程完结之后获得认证资质。这是我个人心目中最出色的免费视频教程,请大家千万不要错过。
15) thenewboston
如果大家只是单纯想以视频形式观看教程内容,那么The New Boston网站上收集的200段Android应用开发视频教程绝对是各位不容错过的宝贵资源。通过观看这些免费视频教程,我们将能够掌握Android开发工作中所必需的各项技能。
免费网络论坛:
这些论坛将帮助大家加入到Android社区的大家庭当中,在这里各位不仅能够找到难题的解决办法、同时也可以与他人分享宝贵的知识及心得。不过千万别忘了认真阅读其中的规定条款。
16) stackoverflow
Stackoverflow可以说是所有程序员们梦寐以求的资源金矿。此外,Stackoverflow同样也是一个规模庞大的Android技术社区,成员们每天都在这里提出并解答不计其数的技术问题。无论是新手上路还是骨灰老鸟,这里都是各位徜徉的最佳环境&&这就是Stackoverflow,全世界技术人员共同的一站式解决方案平台。
17) androidcentral
这个网站当中包含大量面向Android开发人员的资源与解决方案。大家可以在这里找到关于手机、应用、软件以及其它众多热点对象的议题。当然,如果大家正在着手开发高级高级Android应用,这里也能提供众多值得认真查阅的意见与信息。
18) xda-developers
虽然最初单纯为Android开发人员设计,但目前该网站也为移动社区、操作系统与技术、Android与技术、应用与游戏开发等议题设置了独立的子频道。
19) ANDROIDPIT
AndroidPit以智能手机相关技术为关注核心且面向公众开放。该网站一直保持着出色的活跃度,同时在自己的论坛当中提供大量极具实用性的技巧、诀窍、信息以及建议。
20) ANDROIDFORUMS
Android Forum上总有数不胜数的帖子与交互活动。该网站整体面向Android开发人员打造,旨在帮助他们借此提出问题、澄清疑问并在开发道路上高歌猛进。该网站还拥有面向开发人员、应用发布、创意设计以及Alpha & Beta测试的专项子频道。刚刚接触Android的新人们可以在这里收集信息与教程,了解如何更有效地运用网站所提供的资源。
无论大家仅仅是将Android开发学习当成兴趣爱好、抑或是真正想为自己积累下一门技能储备,上述资源都能够帮助各位以良好的状态踏上移动编程之旅。我已经在这里把自己的多年积累全部贡献了出来,希望能切实帮助大家解决实际问题。
最后,当然也欢迎各位结合自身实践进一步补充这份清单,帮助更多朋友找到理想的Android开发起步平台。我个人的力量与经历显然微不足道,请各位群策群力、共同在技术的道路上飞奔向前!
【编辑推荐】【责任编辑: TEL:(010)】
关于&&&&的更多文章
《Android群英传》对具有一定Android开发基础的读者,以通俗易懂
既然强大的Android Studio来了,有什么理由不去用呢?
讲师: 2人学习过讲师: 6人学习过讲师: 6人学习过
日-6日,GMIC 北京 2014全球移动互联网大会
日-6日,GMIC 北京 2014全球移动互联网大会
日-6日,GMIC 北京 2014全球移动互联网大会
本书深入浅出地说明了如何利用.NET、Flash及XML来辅助Flash富媒体应用程序的开发。
本书首先介绍了Flash影片应用程序与.NET应用
Windows Phone专家
Android开发专家
51CTO旗下网站程序写累了,就来玩玩酷跑小游戏吧,嘿嘿。
雨松MOMO送你一首歌曲,嘿嘿。
Android研究院之游戏开发View与SurFaceView的区别(五)
Android研究院之游戏开发View与SurFaceView的区别(五)
围观7710次
编辑日期: 字体:
view在api中的结构
java.lang.Object
android.view.View
直接子类:
AnalogClock, ImageView, KeyboardView, ProgressBar, SurfaceView, TextVie, ViewGroup, ViewStub
间接子类:
AbsListView, AbsSeekBar, AbsSpinner, AbsoluteLayout, AdapterView&T extends Adapter&, AppWidgetHostView, AutoCompleteTextView, Button, CheckBox, CheckedTextView, Chronometer, CompoundButton, DatePicker, DialerFilter, DigitalClock,EditView, ExpandableListView, ExtractEditText, FrameLayout, GLSurfaceView, Gallery, GestureOverlayView, GridView, HorizontalScrollView, ImageButton, ImageSwitcher, LinearLayout, ListView, MediaController, MultiAutoCompleteTextView, QuickContactBadge, RadioButton, RadioGroup, RatingBar, RelativeLayout, ScrollView, SeekBar, SlidingDrawer, Spinner, TabHost, TabWidget, TableLayout, TableRow, TextSwitcher, TimePicker, ToggleButton, TwoLineListItem, VideoView, ViewAnimator, ViewFlipper, ViewSwitcher, WebView, ZoomButton, ZoomControls
由此可见View类属于Android开发绘制中的显示老大,任何与绘制有关系的控件都是它的子类。在这篇文章中我主要讲View 与SurFaceView 使用线程刷新屏幕绘制方面的知识。开发中如何去选择使用View还是SurFaceView。我相信读过我前几篇博客的朋友应该知道我在刷新屏幕的时候使用invalidate()方法来重绘,下面我详细的说明一下Andooid刷新屏幕的几种方法。
第一种: 在onDraw方法最后调用invalidate()方法,它会通知UI线程重绘 这样 View会重新调用onDraw方法,实现刷新屏幕。 这样写看起来代码非常简洁漂亮,但是它也同时存在一个很大的问题,它和游戏主线程是分开的 它违背了单线程模式,这样操作绘制的话是很不安全的,举个例子 比如程序先进在Activity1中 使用invalidate()方法来重绘, 然后我跳到了Activity2这时候Activity1已经finash()掉 可是Activity1中 的invalidate() 的线程还在程序中,Android的虚拟机不可能主动杀死正在运行中的线程所以这样操作是非常危险的。因为它是在UI线程中被动掉用的所以很不安全。
invalidate()
更新整个屏幕区域
invalidate(Rect rect) 更新Rect区域
invalidate(l, t, r, b) 更新指定矩形区域
&&&&public void onDraw(Canvas canvas){&&&&&&&&&&&&DosomeThing();&&&&&&&&&&&&invalidate();&&&&}
第二种:使用postInvalidate();方法来刷新屏幕 ,调用后它会用handler通知UI线程重绘屏幕,我们可以 new
Thread(this).start(); 开启一个游戏的主线程 然后在主线程中通过调用postInvalidate();方法来刷新屏幕。postInvalidate();方法 调用后 系统会帮我们调用onDraw方法 ,它是在我们自己的线程中调用 通过调用它可以通知UI线程刷新屏幕 。由此可见它是主动调用UI线程的。所以建议使用postInvalidate()方法通知UI线程来刷新整个屏幕。
postInvalidate(left, top, right, bottom) 方法 通过UI线程来刷新规定矩形区域。
123456789101112
@Override public void run() { &&&&while (mIsRunning) {
&&&&Thread.sleep(100);&&&&&&&&&&&&&&&&&&&&postInvalidate();
} catch (InterruptedException e) {
&&&&// TODO Auto-generated catch block
&&&&e.printStackTrace();
View中用到的双缓冲技术
重绘的原理是 程序根据时间来刷新屏幕 如果有一帧图形还没有完全绘制结束 程序就开始刷新屏幕这样就会造成瞬间屏幕闪烁 画面很不美观,所以双缓冲的技术就诞生了。它存在的目的就是解决屏幕闪烁的问题,下面我说说在自定义View中如何实现双缓冲。
首先我们需要创建一张屏幕大小的缓冲图片,我说一下第三个参数 ARGB 分别代表的是 透明度
Bitmap.Config
分别占四位
Bitmap.Config
分别占八位
Bitmap.Config
没有透明度(A)
一般情况下我们使用ARGB_8888 因为它的效果是最好了 当然它也是最占内存的。
&& mBufferBitmap = Bitmap.createBitmap(mScreenWidth,mScreenHeight,Config.ARGB_8888);
创建一个缓冲的画布,将内容绘制在缓冲区mBufferBitmap中
Canvas mCanvas = new Canvas(); mCanvas.setBitmap(mBufferBitmap);
最后一次性的把缓冲区mBufferBitmap绘制在屏幕上,怎么样 简单吧 呵呵。
12345678910111213141516171819202122232425
@Override protected void onDraw(Canvas canvas) { &&&&/**这里先把所有须要绘制的资源绘制到mBufferBitmap上**/ &&&&/**绘制地图**/ &&&&DrawMap(mCanvas,mPaint,mBitmap); &&&&/**绘制动画**/ &&&&RenderAnimation(mCanvas); &&&&/**更新动画**/ &&&&UpdateAnimation();& &&&&if(isBorderCollision) {
DrawCollision(mCanvas,"与边界发生碰撞"); &&&&}& &&&&if(isAcotrCollision) {
DrawCollision(mCanvas,"与实体层发生碰撞"); &&&&} &&&&if(isPersonCollision) {
DrawCollision(mCanvas,"与NPC发生碰撞"); &&&&}& &&&&/**最后通过canvas一次性的把mBufferBitmap绘制到屏幕上**/ &&&&canvas.drawBitmap(mBufferBitmap, 0,0, mPaint); &&&&super.onDraw(canvas); }
由此可见view属于被动刷新, 因为我们做的任何刷新的操作实际上都是通知UI线程去刷新。所以在做一些只有通过玩家操作以后才会刷新屏幕的游戏 并非自动刷新的游戏 可以使用view来操作。
2.SurfaceView
从API中可以看出SurfaceView属于View的子类 它是专门为制作游戏而产生的,它的功能非常强大,最重要的是它支持OpenGL ES库,2D和3D的效果都可以实现。创建SurfaceView的时候需要实现SurfaceHolder.Callback接口,它可以用来监听SurfaceView的状态,SurfaceView的改变 SurfaceView的创建 SurfaceView 销毁
我们可以在相应的方法中做一些比如初始化的操作 或者 清空的操作等等。
使用SurfaceView构建游戏框架它的绘制原理是绘制前先锁定画布 然后等都绘制结束以后 在对画布进行解锁 最后在把画布内容显示到屏幕上。
代码中是如何实现SurfaceView
首先需要实现 Callback 接口 与Runnable接口
public class AnimView extends SurfaceView implements Callback,Runnable
获取当前mSurfaceHolder 并且把它加到CallBack回调函数中
&&&&SurfaceHolder&&mSurfaceHolder = getHolder(); &&&&mSurfaceHolder.addCallback(this);
通过callBack接口监听SurfaceView的状态, 在它被创建的时候开启游戏的主线程,结束的时候销毁。这里说一下在View的构造函数中是拿不到view有关的任何信息的,因为它还没有构建好。 所以通过这个监听我们可以在surfaceCreated()中拿到当前view的属性 比如view的宽高 等等,所以callBack接口还是非常有用处的。
1234567891011121314151617181920
@Override public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2,
int arg3) { &&&&// surfaceView的大小发生改变的时候& }& @Override public void surfaceCreated(SurfaceHolder arg0) { &&&&/**启动游戏主线程**/ &&&&mIsRunning = true; &&&&mThread = new Thread(this); &&&&mThread.start(); }& @Override public void surfaceDestroyed(SurfaceHolder arg0) {
// surfaceView销毁的时候 &&&&mIsRunning = false; }
在游戏主线程循环中在绘制开始 先拿到画布canvas 并使用mSurfaceHolder.lockCanvas()锁定画布,等绘制结束以后 使用mSurfaceHolder.unlockCanvasAndPost(mCanvas)解锁画布,
解锁画布以后画布上的内容才会显示到屏幕上。
1234567891011121314151617181920
@Override public void run() { &&&&while (mIsRunning) {
&&&&Thread.sleep(100);
} catch (InterruptedException e) {
&&&&// TODO Auto-generated catch block
&&&&e.printStackTrace();
//在这里加上线程安全锁
synchronized (mSurfaceHolder) {
&&&&/**拿到当前画布 然后锁定**/
&&&&mCanvas =mSurfaceHolder.lockCanvas();
&&&&Draw();
&&&&/**绘制结束后解锁显示在屏幕上**/
&&&&mSurfaceHolder.unlockCanvasAndPost(mCanvas);
由此可见SurfaceView 属于主动刷新 ,重绘过程完全是在我们自己的线程中完成 , 由于游戏中肯定会执行各种绚丽的动画效果如果使用被动刷新的View就有可能就会阻塞UI线程,所以SurfaceView 更适合做游戏。
最近有朋友反映说运行起来有点卡 我解释一下,
卡的主要原因是我的地图文件太大了,当然还有模拟器不给力的原因。我每绘制一块地图就须要使用裁剪原图,频繁的切割如此大的图片肯定会造成卡顿的情况。同学们在制作的时候将没用的地图块去掉,保留只需要的地图块这样会流畅很多喔 。
优化游戏主线程循环
同学们先看看这段代码,Draw()方法绘制结束让线程等待100毫秒在进入下一次循环。其实这样更新游戏循环是很不科学的,原因是Draw()方法每一次更新所耗费的时间是不确定的。举个例子 比如第一次循环Draw() 耗费了1000毫秒 加上线程等待100毫秒 整个循环耗时1100毫秒,第二次循环Draw() 耗时2000毫秒 加上线程等待时间100毫秒 整个循环时间就是2100毫秒。很明显这样就会造成游戏运行刷新时间时快时慢,所以说它是很不科学的。
1234567891011121314151617
public void run() { &&&&while (mIsRunning) {
//在这里加上线程安全锁
synchronized (mSurfaceHolder) {
&&&&/**拿到当前画布 然后锁定**/
&&&&mCanvas =mSurfaceHolder.lockCanvas();
&&&&Draw();
&&&&/**绘制结束后解锁显示在屏幕上**/
&&&&mSurfaceHolder.unlockCanvasAndPost(mCanvas);
&&&&Thread.sleep(100);
} catch (InterruptedException e) {
&&&&e.printStackTrace();
在贴一段科学的控游戏制循环代码,每次循环游戏主线程 在Draw()方法前后计算出Draw()方法所消耗的时间,然后在判断是否达到我们规定的刷新屏幕时间,下例是以30帧刷新一次屏幕,如果满足则继续下次循环如果不满足使用Thread.yield(); 让游戏主线程去等待 并计算当前等待时间直到等待时间满足30帧为止在继续下一次循环刷新游戏屏幕。
这里说一下Thread.yield(): 与Thread.sleep(long millis):的区别,Thread.yield(): 是暂停当前正在执行的线程对象 ,并去执行其他线程。Thread.sleep(long millis):则是使当前线程暂停参数中所指定的毫秒数然后在继续执行线程。
123456789101112131415161718192021222324252627282930313233
&&&&&&&&/**每30帧刷新一次屏幕**/&&&&&&&&public static final int TIME_IN_FRAME = 30; @Override public void run() { &&&&while (mIsRunning) {&
/**取得更新游戏之前的时间**/
long startTime = System.currentTimeMillis();&
/**在这里加上线程安全锁**/
synchronized (mSurfaceHolder) {
&&&&/**拿到当前画布 然后锁定**/
&&&&mCanvas =mSurfaceHolder.lockCanvas();
&&&&Draw();
&&&&/**绘制结束后解锁显示在屏幕上**/
&&&&mSurfaceHolder.unlockCanvasAndPost(mCanvas);
/**取得更新游戏结束的时间**/
long endTime = System.currentTimeMillis();&
/**计算出游戏一次更新的毫秒数**/
int diffTime&&= (int)(endTime - startTime);&
/**确保每次更新时间为30帧**/
while(diffTime &=TIME_IN_FRAME) {
&&&&diffTime = (int)(System.currentTimeMillis() - startTime);
&&&&/**线程等待**/
&&&&Thread.yield();
}& &&&&} }
最后由于代码较多我就不贴在博客中了 , 下面给出Demo源码的下载地址欢迎大家下载阅读互相学习,互相研究,互相讨论 雨松MOMO希望可以和大家一起进步。
下载地址:
本文固定链接:
转载请注明:
MOMO与MO嫂提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。
您可能还会对这些文章感兴趣!android 开发框架是不是可以在网上免费学习呢?_百度知道
android 开发框架是不是可以在网上免费学习呢?
提问者采纳
有一些免费的讲的不错
请尽快告知
慕课网就非常不错,提供的教程中融入动画特效、流行词句,趣味性的内容和授课方式易于引起用户的学习兴趣,摆脱学习的枯燥感。我本来是不太喜欢学的,因为工作的关系不得不去学,朋友推荐后,感觉还是很轻松就学会了。
提问者评价
太给力了,你的回答完美地解决了我的问题,非常感谢!
其他类似问题
为您推荐:
android的相关知识
其他1条回答
网上搜索大部分都是 大同小异 根本就找到你想要的东西
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 学习android开发书籍 的文章

 

随机推荐