【android】安卓基础学习

来源:互联网 发布:mysql 字符串转时间 编辑:程序博客网 时间:2024/05/19 16:03

1.安卓的四大组件:Activity,Service,Broadcast Receiver Content Provider.

其中我们在应用中能查看到的东西,都是放在活动(activity)中的。

服务则默默在后台运行,即使用户退出应用也可以继续运行

广播接收器,可以允许你的应用,接受来自各处的广播消息,比如说电话,比如说短信等等,应用也可以发出信息。

内容提供器,则为程序之间共享数据,提供了可能,比如说你想要读取系统电话簿中的联系人,就可以通过内容提供器来实现。

安卓有丰富的系统控件,是我们可以很轻松写出漂亮的界面。

sqlite数据库,安卓系统自带了这种轻量级,运算速度极快的嵌入式关系型数据库。

地理位置定位。走到哪里定位在哪里。

强大的多媒体。

传感器,比如说加速度,方向感传感器,这算是移动设备非常有特色的方面。


2.项目文件内部目录的详情

刚创建的Android项目是一个基础的Hello World项目,包含一些默认文件,我们花一点时间看看最重要的部分:

app/src/main/res/layout/activity_my.xml

这是刚才用Android Studio创建项目时新建的Activity对应的xml布局文件,按照创建新项目的流程,Android Studio会同时展示这个文件的文本视图和图形化预览视图,该文件包含一些默认设置和一个显示内容为“Hello world!”的TextView元素。

app/src/main/java/com.mycompany.myfirstapp/MyActivity.java

用Android Studio创建新项目完成后,可在Android Studio看到该文件对应的选项卡,选中该选项卡,可以看到刚创建的Activity类的定义。编译并运行该项目后,Activity启动并加载布局文件activity_my.xml,显示一条文本:"Hello world!"

app/src/main/AndroidManifest.xml

manifest文件描述了项目的基本特征并列出了组成应用的各个组件,接下来的学习会更深入了解这个文件并添加更多组件到该文件中。

app/build.gradle      

gradle是groovy语言为基础,面对java应用为主。android studio使用gradle编译运行android工程,工程的灭个模块以及每个工程都有的一个build.gradle文件

drawable<density>/

存放各种densities图像的文件夹,mdpi,hdpi等,这里能够找到应用运行时的图标文件ic_launcher.png

layout/

存放用户界面文件,如前边提到的activity_my.xml,描述了MyActivity对应的用户界面。

menu/

存放应用里定义菜单项的文件。

values/

存放其他xml资源文件,如string,color定义。string.xml定义了运行应用时显示的文本"Hello world!"


3.android的xml

android的图形用户揭秘那由多个视图和视图组构建而成。view是通用的ui窗体小组件,如button,text field。而viewgroup则是用来定义子视图布局的不可见的容器。

如 grid vertical list。

android:ID 这是视图的唯一标识符,可以在程序代码中通过该标识符引用对象。例如对这个对象进行读和修改操作

在xml引用资源对象时,必须使用@符号。紧随@之后时自愿的类型(这里时id)然后是资源的名字,这里使用edit_message。

wrap_content 是保证视图只占据内容的大小。如果使用:match_parent 可能会布满屏幕,因为将适应父布局。

android:hint 在文本框为空的时候,会默认显示这个字符串,对于这个字符串的值引用的资源,应该定义在单独的文件里。

android:text="@string/button_send" @后面是类型,然后button_send是名字,然后这个东西需要在strings.xml中定义。
adnroid:id=@+id/edit_message  +只是在第一次定义以恶搞资源id的时候使用,它是告诉sdk这个资源id需要被创建。在程序被编译以后,sdk就可以直接使用这个id。
edit_message 则是这个标签或者组件的name。

3.响应send 发送 按钮

为button标签添加:android:onclick属性,“sendMessage”即为用户点击屏幕按钮时出发方法的名字。

可以在avtivity的java文件中添加这个方法。

publicvoidsendMessage(View view){// Do something in response to button}

这个方法的定义,必须满足以下条件:

是public函数。无返回值。参数唯一。

在eclipse项目目录:

src即source资源,gen这个目录里的内容都是自动生成的,主要有个R.java文件,在项目里生成的任何资源都会在其中生成一个相应的资源id

assets资产,主要存放一些随程序打包的文件,在你的程序运行时可以动态读取到这些文件。

bin这个目录不需要关注太多,住哟啊包括了一些在编译时产生的文件。其中会产生一个编译好的安装包,

libs如果你的项目中使用了第三方jar包,就需要把这些jar包放在libs目录下。

res这个目录所有的图片布局字符串都存放在这个目录下。这个目录有许多子目录,图片住哟啊放在drawble目录下。布局放在layout,字符串放在values。

AndroidManifest.xml这个时整个安卓文件的配置文件,你在程序中定义的所有四大组件都需要在这个文件里注册,另外还可以在这个文件给应用程序添加权限声明。

project.properties这个文件十分简单,指定了编译程序所用的sdk版本。

没有在AndroidManifest中注册的活动,是不能使用的。

在代码中R.string.hello_world可以获得字符串的引用

在xml中通过@string/hello_world可以获得字符串的引用

4.android的日志工具Log

Log.v(),verbose,最低级别 
Log.d(),debug,打印调试信息 
Log.i(),info,打印比较重要的信息,比debug高一级。 
Log.w(),warn,打印警告信息 
Log.e(),error,打印错误信息

例子:Log.d(tag【一般来说是当前的类名】,msg【即是要打印的内容】)


5.活动Activity

继承activit,在eclipse中可以通过ctrl shift s来添加source中的override的函数

setContentView(R.layout.main)在Android里面,这句话是什么意思?可能会报错,因为R文件是在package中所以需要: com.example.activity

R.layout.main是个布局文件即控件都是如何摆放如何显示的,setContentView就是设置一个Activity的显示界面
这句话就是设置这个这句话所再的Activity采用R.layout下的main布局文件进行布局
使用setContentView可以在Activity中动态切换显示的View,这样,不需要多个Activity就可以显示不同的界面
因此不再需要在Activity间传送数据,变量可以直接引用。
但是,在android SDK给我们建的默认的Hello World程序中,调用的是setContentView(int layoutResID)方法
如果使用该方法切换view,在切换后再切换回,无法显示切换前修改后的样子,
也就是说,相当于重新显示一个view,并非是把原来的view隐藏后再显示。
其实setContentView是个多态方法,我们可以先用LayoutInflater把布局xml文件引入成View对象,
再通过setContentView(View view)方法来切换视图。
因为所有对View的修改都保存在View对象里,所以,当切换回原来的view时,就可以直接显示原来修改后的样子。
在AndroidManifest来注册,并且通过一些属性的设置,让first_layout来成为程序的主页面。如果不注册这个也可以,但是没办法打开这个程序。

例如支付宝的快捷支付,需要别的程序调用才可以。

隐藏标题栏:

是通过requestWindowFeature(Window.FEATURE_NO_TITLE);这个命令需要加载setContent之前。


5.在活动中使用Toast

Toast是Android系统提供的一种非常好的提醒方式,在程序中可以使用它将一些短小的消息通知给用户,这些信息会在一段时间后自动消失。

首先需要定义一个弹出Toast的触发点,正好界面上有个按钮,那我们就让点击这个按钮的时候弹出一个Toast。

另外需要注意的是:OnClickListener()在放在View这个类中。如果要添加监听需要前面引用View

并且创建一个 menu  !!!(妈的 !!没看清楚,menu默认是不会显示的)

销毁活动可以用一个finish();进行销毁,和删除的方法一样。

protected void onCreate(Bundle saveInstanceState) {
super.onCreate(saveInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(com.example.activitytest.R.layout.first_layout);
Button button1=(Button)findViewById(com.example.activitytest.R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(FirstActivity.this, "you click this button", Toast.LENGTH_SHORT).show();
} //Toast.LENGTH_SHORT是指时长,toast显示的长短
});
}














原创粉丝点击