? ? ? ?今天是感恩节,首先感谢峰哥,强哥和曾哥,是你们给我入的安卓的门。
? ? ? ? 这是学习安卓两个星期的第一个感觉成型的小小软件,在自己的手机上运行感觉还是很好的,毕竟这是自己用代码敲出来的东西,下面和大家分享一下一个刚刚接触安卓的初学者对学习安卓的一些感想,也算是自己安卓路的一个开端,未来的路还很长,还需要付出很多努力。
? ? ? ? ?这个学期开始接触Java的学习,也有将近两个月了,一方面要在学校学习公共课的科目,大二的课程之多难以想象,所以花的时间也不多,但是在这两个月里还是有了很大的收获,对Java的基本语法规则和构建有了一定的认识,也对Java类库中常用的一些类有了一定的了解,在前面也做了一些小小的东西,在了解到安卓的开发语言是Java后决定尝试安卓学习,一方面可以加深对Java语言的理解,另一方面也可以开始安卓的学习,是一举两得的事情,同时想到可以在自己的手机上运行自己的软件也很兴奋,所以在学习Java的同时开始了安卓的学习,闲话不多说,下面说一下自己在这两个星期来的一些感悟和想法。
? ? ? ? ?万事开头难,但如果勇敢的迈出了第一步并坚持下去离成功也就不远了。
? ? ? ? ?在两个星期前我还是一个只会从手机助手下各种软件的清纯小少年,从没有想过这些软件是怎么实现的,他的运行机制是什么,他是靠什么监听到我们的手指的点击的,也没想过自己会去做一些在自己手机上用的东西,尽管自己是软件工程的学生,感谢曾哥半小时的入门辅导。让我第一次接触到了安卓软件的开发
,也对安卓开发产生了兴趣。
? ? ? ? ? ?在半小时的入门辅导后我开始在网上找各种各样的资料开始自己学习,21世纪的人应该懂得怎样利用网上的资源,不会就问百度,总会找到解决的方法。不要担心没老师给你上课,网上搜索一下安卓视频教程你这一辈子都学不完,下面推荐初学者一个网址http://wenku.baidu.com/course/study/858dfe00bed5b9f3f90f1c92,看完这几个小时的视频(从安卓平台的简介到安卓四大基本组件到布局管理器再到安卓的基本组件和高级控件)你对安卓开发的基本流程和语法规范也就有了简单的了解,这算是很好的入门吧,在看书看不懂的情况下就看视频,视频会用安卓的开发工具来现场演示一些组件的用法,布局的用法,看完一集视频自己就可以动手实践,加深对知识的理解,有一句话说的好“熟能生巧”对编程语言的学习更是如此,只有自己动手真正的做出来了才能说是自己对那个知识理解了,我开始时只看视频,接着一口气看完几集,中间也不做练习。到后面自己动手时才发现不知道从何处下手,我想这也是很多和我一样的初学者所困惑的,看视频的时候看懂了但是自己动手时却处处出错。所以看完一个知识点就马上上手,动手敲起来,这样对知识点的掌握就会加强很多。我自己亲生的感受是有时候单独的只看书发现书上有很多看不懂,但在我看完几集视频之后回头看书上的内容发现以前很多不懂的知识点都能看懂了,所以当我们看书感觉头昏脑涨的时候就把书放一边,看看网上的视频教程,换着来学习,这样的效率会高很多。
? ? ? ? ?上面说的是在网上学习,我觉得还是需要两本实体的书籍在自己的手边,一本是讲知识点的,一本是各种开发实例,我觉得书不要多,一本书介绍知识点,各种控件,布局等等,一本则是各种例子,我自己买的一本《安卓开发实例大全》觉得挺好的,书中全是开发的例子,学习知识点后再跟着例子自习敲是一种很好的搭配,对于像我们这样的初学者来说。
? ? ? ? ? 以上也就是我在这两个星期的安卓学习中结合自己的一些情况有的的一些想法和感悟,对于我这样一个初学者也说不出很多在安卓方面高深的知识,只希望对像我一样的初学者能在自学时有一定的帮助,不仅仅是安卓的学习是如此,其他的也一样,找到一个好的学习方法很重要。
? ? ? ? ? 下面和大家分享一下今天刚刚完成的一个小小的软件,实现方法不到一百行代码,很简单,自己可以用来玩,我决定用它来取代“切水果”成为我的清洁屏幕的利器,现在玩“切水果”的目的很单纯也就是为了想把屏幕上的污渍擦干净,快速滑动手指,擦掉所有的污渍。吱吱吱吱。。。。
? ? ? ? ? 我的软件实现的功能很简单,就是随着手指在屏幕上滑动手指下面会有一个颜色随时变化的圆球跟着自己的手指滑动,紧接着随着手指的滑动屏幕的背景颜色也会跟着发生变化,手指滑动越快,小球和屏幕的颜色也就会变化得越快。自己感觉还是挺好看的。下面是实现的代码,有注释:
项目的工程图如下:
?
class="xml" name="code"><?xml version="1.0" encoding="utf-8"?> <!-- 定义一个线性布局容器,是res下面的layout中的.mxl文件 --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:id="@+id/root" > </LinearLayout>
? ? 下面是在src下面的两个.java文件,第一个(DrawView.java)是自定义一个组件,也就是自己画一个圆
? ??
package com.example.tms004; import java.util.Random; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.view.View; public class DrawView extends View{ public float x = 40; public float y = 40; //添加构造方法 public DrawView(Context context) { super(context); // TODO Auto-generated constructor stub } //重写父类的方法 //Canvas相当于java中的Graphics public void onDraw(Canvas canvas) { Random r = new Random(); //int m = r.nextInt(); int red = r.nextInt(256); int blue = r.nextInt(256); int green = r.nextInt(256); //必须要写的super方法 super.onDraw(canvas); //创建画笔 Paint pen = new Paint(); //设置画壁的颜色 pen.setARGB(125, red, blue, green); //绘制小圆球 canvas.drawCircle(x, y,100,pen); } }
? ?第二个是(MainActivity.java)文件
package com.example.tms004; import java.util.Random; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.LinearLayout; public class MainActivity extends Activity { LinearLayout lineraLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取布局文件中的LineraLayout容器 lineraLayout = (LinearLayout)findViewById(R.id.root); //创建DrawView组件 final DrawView drawView = new DrawView(this); //设置自定义组件的最大高度和宽度 drawView.setMinimumHeight(300); drawView.setMinimumWidth(300); //为组件和容器绑定Touch事件 drawView.setOnTouchListener(new OnTouchListener() { int red = 255; int n = 1; int blue = 1; int green = 255; @Override //实现onTouch方法 public boolean onTouch(View arg0, MotionEvent arg1) { //给容器lineraLayout设置背景颜色,会随着手指的移动变换颜色 Random Ran = new Random(); int red1 = Ran.nextInt(256); blue+=2; if(blue>=255) blue = 1; green--; if(green==0) green=255; //rgb(int,int,int)是一种设置颜色的方法,和java中有点不同 lineraLayout.setBackgroundColor(Color.rgb(blue,red,green)); if(red == 255) n = -1; if(red == 0) n = 1; red += n; //修改x,y,的值 drawView.x = arg1.getX(); drawView.y = arg1.getY(); //drawView组件重绘,invalidate()是自带的方法 drawView.invalidate(); //返回true表明事件已经处理 return true; } } ); //容器中添加组件 lineraLayout.addView(drawView); } }
? ? 运行效果如下:
? ? ? ? ?我是用自己的手机当虚拟机来运行程序,这样就可以直接将软件装到自己的手机上了而且速度比开发工具的虚拟机快很多,你也可以用开发工具自带的虚拟机来运行程序,运行成功后如果想把软件装到自己的手机上只需要找到工程所放的文件位置打开bin目录找到那个apk文件复制到你的手机上点击安装就行。如下所示:
?
?下面是在自己手机上运行的一些图片不是动态的看不出绚丽的效果:
安装到手机上后的图标:
?运行的一些图片:
?
?
?
?
?
其实是有一个渐变的效果的不好演示,手指滑动的越快,球和背景的颜色就变化的越快。第一个成型的小软件,心里还是挺满足的,再接再厉,继续努力。
最后附上apk.可以装到你的手机上尽情的摩擦你的屏幕让它变得更加光亮,同时可以看到绚丽的图画
?
?