暑假的通信项目是一个Android的联网小游戏,其实我在今年年初的时候就装了SDK,想着新学期伊始,要学点新东西,做个简单的小应用回家孝敬老爹,结果一直拖到通信的项目需要Android了,才开始学,不过,幸好我在见老爹之前可以用Android作出个小东西,否则真是没脸问老爹要大三的生活费。这个经历让我想起了胡某人常说的一句话,我把它美化一下:我们是为了做而学。
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项目中初始化高德地图Demo,以帮助开发者快速理解和实现相关功能。 首先,我们需要在项目中引入高德地图的SDK。这通常通过在`build.gradle`文件中添加依赖完成。在`dependencies`块中,...
在Android开发领域,应用的初始化过程是至关重要的,它直接影响着应用的启动速度、性能以及用户体验。"Android应用初始化工具"就是专为优化这一过程而设计的。这个工具旨在帮助开发者更有效地管理应用的启动阶段,...
Android初始化流程是操作系统启动后进行的一系列核心服务与系统组件的加载和设置过程,这个流程对系统的稳定性和功能完整性至关重要。下面将详细阐述Android初始化的关键步骤、涉及的服务以及相关组件的作用。 1. *...
在Android开发中,动画效果是提升用户体验的重要手段之一,尤其是对于初始欢迎界面,一个优雅的淡入淡出动画可以给用户留下深刻的印象。本篇将详细介绍如何在Android中实现这样的动画效果。 首先,我们需要理解...
总之,Android的SharedPreferences是开发者方便快捷地保存应用内小量数据的工具,对于设置和管理用户密码,特别是应用的初始密码,提供了简单而有效的解决方案。在实际开发中,结合适当的加密策略,可以确保用户数据...
在Android开发过程中,有时会遇到集成OpenCV库时出现初始化报错的问题,导致"OpenCV error: Cannot load info library for OpenCV"。这个问题通常与OpenCV库的安装、配置、依赖或版本不兼容有关。以下是一些详细的...
在讨论Android蓝牙初始化代码详解时,我们首先需要了解Android蓝牙的整体架构及其初始化和开启关闭的流程。以下是详细的知识点: 一、蓝牙整体架构 Android系统中的蓝牙架构主要分为三个层次: 1. 应用层:这一层...
在Android开发中,传统的UI组件初始化方式是通过`findViewById`方法来查找并绑定视图,但这往往会使得Activity或Fragment的代码变得冗长且不易维护。为了解决这一问题,开发者开始采用注解的方式进行View的初始化,...
在Android游戏开发中,环境初始化是开发者迈出的第一步,它为后续的游戏逻辑编写和功能实现奠定了基础。"Android游戏开发-02初始化环境.WMV"这个视频教程很可能详细讲解了如何配置一个完整的Android游戏开发环境。...
AudioPolicy&AudioFlinger初始化总体框架初始化步骤简介初始化步骤详细流程分析1、loadConfig()2、initialize()2.1、初始音频路由引擎2.2、加载so 并且打开设备节点2.3、打开输出流 总体框架 AudioFlinger和Audio...
在Android中,通常我们会用findViewById()方法来初始化界面中的控件,但这会导致代码中充斥着大量的查找和设置值的代码,使得代码变得冗长且不易维护。为了解决这个问题,我们可以创建一个自定义注释处理器,它会在...
### Android 2.3 初始化过程详解 #### 一、初始化概述 Android 2.3的启动过程是一个复杂而有序的序列,它确保了系统能够稳定地运行,并为用户提供丰富的功能和服务。这一过程从硬件初始化开始,经过软件环境的搭建...
Android 启动页面引导页面登陆注册主页通用框架 1:启动页面 一个动画 然后进入app 2:第一次打开的引导页面 3:登陆界面(当然这块ui会有不同需求,但是改吧改吧就行了) 4:注册界面(同登陆界面) 5:主界面 6:...
Android 的初始化语言脚本 init.rc 解析 Android 的初始化语言脚本 init.rc 是 Android 操作系统中的一种初始化语言,用于描述 Android 系统的启动过程和初始化操作。init.rc 语言由四大类声明组成:行为类...
其锚点提供 "勾住" 依赖的功能,能灵活解决初始化过程中复杂的同步问题。参考 alpha 并改进其部分细节, 更贴合 Android 启动的场景, 同时支持优化依赖初始化流程, 自动选择较优的路径进行初始化。
### Android 初始化语言脚本详解 #### 一、概述 Android 初始化语言是一种特殊的脚本语言,主要用于定义设备启动过程中的各种初始化任务。它被用来管理系统的启动和服务,确保Android设备能够按照预设的方式启动并...
"之前一些好用的Android架包自动初始化ID,以及GsonFormat等等"这个标题提及的,是关于旧版Android库的集合,尽管它们可能已经不再是最新的,但仍然可以用于一些项目中。 1. **Android架包自动初始化ID**:这通常指...
在Android应用开发中,有效地管理各个模块的初始化过程是至关重要的。`Android-AppInitializer`是一个专门为了解决这个问题而设计的库,它允许开发者在`Application`启动时按需执行不同子模块的初始化代码,避免了在...
### Android平台中Wifi的初始化详解 #### 一、引言 在现代移动设备中,WiFi功能的稳定性与性能直接影响用户体验。Android系统中的WiFi模块初始化是一个复杂的过程,涉及到多个层次的交互,包括Java层、Native层...