初始Android
16lz
2021-01-23
暑假的通信项目是一个Android的联网小游戏,其实我在今年年初的时候就装了SDK,想着新学期伊始,要学点新东西,做个简单的小应用回家孝敬老爹,结果一直拖到通信的项目需要Android了,才开始学,不过,幸好我在见老爹之前可以用Android作出个小东西,否则真是没脸问老爹要大三的生活费。这个经历让我想起了胡某人常说的一句话,我把它美化一下:我们是为了做而学。
Android是基于Java的,我暂且就这样认为,因为在eclipse中装一个插件,就开始了Android之旅。
我们原来写JAVA的代码的时候,都将布局,对象的声明,方法等写到一起的,但是Android中,有一些不一样。
(1)Android的布局有:
FrameLayout (框架布局),
LinearLayout (线性布局)
AbsoluteLayout(绝对布局)
RelativeLayout(相对布局)
TableLayout(表格布局)
布局的代码使用xml语言单独写出来,作为资源,放在res目录的layout文件夹下。xml语言是可扩展的标记语言,标签是成对的~
举个栗子~~~一个有按钮盒图片的界面的布局:
再举一个栗子~~
其中,我用到的是@+id/imageButtom1表示给这个imageButton对象一个id---imageButtom1,可以唯一标示这个对象,而@drawable/a则表示可以引用了a文件。
大致是这样吧,我是这样理解的,可能存在错误。。。。。呵呵
再再举一个栗子~~
其中:@string/loginpwd表示:使用了名字为loginpwd的字符串,这样就要求之前在String.xml文件中,对名字为loginpwd的字符串进行声明,如:
这样的话:
这两行代码是等价的。
By the way~~ 布局以及空间可以拖拽生成,然后再.xml文件中修改属性
(2)在Android的工程目录下面会发现有一个gen目录,下面有一个和src中同名的包,包里面有一个R.java文件,这个R文件是可读文件,里面是资源的索引,我们在使用布局上的控件时,都要通过R.id.XX来实现,所以说在上一步,给每个控件一个唯一的标示符id是很重要的。
(3)每一个Android都有很多个Activity,Activity就相当于一个界面,但只有一个主Activity,它的确定是在AndroidManifest.xml文件下,在创建其他Activity时,也要在里面声明。它要继承Activity类,然后我们的逻辑代码就在里面写,语法基本和java没区别。
①v.getId()得到的是R文件中每一个id对应的十六进制数,并由此进行判断
②Intent类是Android中的一个信使,其实就是起到一个链接的作用,把各个控件连在一起。。。暂时我只能理解到这里。。。。呵呵呵呵
以上就是一个简单的Android但是包含了界面,监听,跳转的我的第一个Android程序的一些小总结,同时我也在测试时也遇到下面这几个错误,我想初学者都应该会遇到吧:
1.代码的版本高于虚拟机:
代码的版本一定要低于虚拟机,你想4.0.1版本的Android可以安装2.3.3的应用,但是2.3.3的手机却不能安装4.0.1的应用就是这个道理
2.Fatal exception:main 空指针异常 果真是对我不离不弃的错误,开始还翻译成了“主函数里犯了致命的错误”,都吓死我了。。。
创建的是ImageButton对象,但是在使用时用了Button对象
3.error opening trace file: No such file or directory (2)
AVD和代码版本不一致导致的
4.当AVD无缘无故的,也不报错,也不反映,也不跑程序,要么就是电脑累了反应慢了,要么就是AVD太傲娇了,所以把它删了,新建一个就好了。当然,这是没有找到根本原因的下策解决方法,用我们数据库杨老师的话就是,这是一种逃避问题的表现,so,如果你恰好看到这篇有点小弱的博客,有恰好不行的有了一个傲娇的AVD,欢迎交流~~~
Android是基于Java的,我暂且就这样认为,因为在eclipse中装一个插件,就开始了Android之旅。
我们原来写JAVA的代码的时候,都将布局,对象的声明,方法等写到一起的,但是Android中,有一些不一样。
(1)Android的布局有:
FrameLayout (框架布局),
LinearLayout (线性布局)
AbsoluteLayout(绝对布局)
RelativeLayout(相对布局)
TableLayout(表格布局)
布局的代码使用xml语言单独写出来,作为资源,放在res目录的layout文件夹下。xml语言是可扩展的标记语言,标签是成对的~
举个栗子~~~一个有按钮盒图片的界面的布局:
<!--相对布局--><!---线性布局可以嵌套-><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="bottom" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".FristActivity" android:background="@drawable/back"></RelativeLayout><!--线性布局 vertical为垂直,horizontal为水平--><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" ></LinearLayout>
再举一个栗子~~
<!--图片按钮控件--><ImageButton android:id="@+id/imageButton1" android:layout_width="350dp" android:layout_height="50dp" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginBottom="20dp" android:src="@drawable/a" />
其中,我用到的是@+id/imageButtom1表示给这个imageButton对象一个id---imageButtom1,可以唯一标示这个对象,而@drawable/a则表示可以引用了a文件。
大致是这样吧,我是这样理解的,可能存在错误。。。。。呵呵
再再举一个栗子~~
<!--文本显示框控件--><TextView android:id="@+id/loginpwd" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/editText1" android:layout_alignBottom="@+id/editText1" android:layout_alignLeft="@+id/loginname" android:text="@string/loginpwd" android:textSize="25sp" />
其中:@string/loginpwd表示:使用了名字为loginpwd的字符串,这样就要求之前在String.xml文件中,对名字为loginpwd的字符串进行声明,如:
<string name="loginpwd">密 码:</string>
这样的话:
android:text="@string/loginpwd"android:text="密 码:"
这两行代码是等价的。
By the way~~ 布局以及空间可以拖拽生成,然后再.xml文件中修改属性
(2)在Android的工程目录下面会发现有一个gen目录,下面有一个和src中同名的包,包里面有一个R.java文件,这个R文件是可读文件,里面是资源的索引,我们在使用布局上的控件时,都要通过R.id.XX来实现,所以说在上一步,给每个控件一个唯一的标示符id是很重要的。
(3)每一个Android都有很多个Activity,Activity就相当于一个界面,但只有一个主Activity,它的确定是在AndroidManifest.xml文件下,在创建其他Activity时,也要在里面声明。它要继承Activity类,然后我们的逻辑代码就在里面写,语法基本和java没区别。
public class FristActivity extends Activity {/** * Activity的入口 */ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_frist); ImageButton bu_play = (ImageButton)findViewById(R.id.imageButton1); ButtonOnCL bl = new ButtonOnCL(); bu_play.setOnClickListener(bl); } //按钮监听类 class ButtonOnCL implements OnClickListener{ //View 所有控件的父类 有两个包,引入是的时候注意不要引错了public void onClick(View v) {//v.getId()是得到控件的id编号int a = v.getId();if(a==0x7f080000){//信使~~~Intent intent = new Intent();//当前界面,跳转界面intent.setClass(FristActivity.this, SecondActivity.class);//实现跳转startActivity(intent);//跳转后关闭当前界面finish();}} }}其中:
①v.getId()得到的是R文件中每一个id对应的十六进制数,并由此进行判断
②Intent类是Android中的一个信使,其实就是起到一个链接的作用,把各个控件连在一起。。。暂时我只能理解到这里。。。。呵呵呵呵
以上就是一个简单的Android但是包含了界面,监听,跳转的我的第一个Android程序的一些小总结,同时我也在测试时也遇到下面这几个错误,我想初学者都应该会遇到吧:
1.代码的版本高于虚拟机:
代码的版本一定要低于虚拟机,你想4.0.1版本的Android可以安装2.3.3的应用,但是2.3.3的手机却不能安装4.0.1的应用就是这个道理
2.Fatal exception:main 空指针异常 果真是对我不离不弃的错误,开始还翻译成了“主函数里犯了致命的错误”,都吓死我了。。。
创建的是ImageButton对象,但是在使用时用了Button对象
3.error opening trace file: No such file or directory (2)
AVD和代码版本不一致导致的
4.当AVD无缘无故的,也不报错,也不反映,也不跑程序,要么就是电脑累了反应慢了,要么就是AVD太傲娇了,所以把它删了,新建一个就好了。当然,这是没有找到根本原因的下策解决方法,用我们数据库杨老师的话就是,这是一种逃避问题的表现,so,如果你恰好看到这篇有点小弱的博客,有恰好不行的有了一个傲娇的AVD,欢迎交流~~~
更多相关文章
- Android shap 控件美化
- 13、从头学Android之RelativeLayout相对布局
- Android第十八课 VS源码文件导入Android工程 中文乱码
- [Android] ListView (普通列表控件) 的基本使用方法
- Android 主题之安装的APK主题文件
- android中图片的三级cache策略(内存、文件、网络)之三:文件缓存策略
- 自定义控件及效果