【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
drawable<density>/
存放各种densities图像的文件夹,mdpi,hdpi等,这里能够找到应用运行时的图标文件ic_launcher.png
layout/
存放用户界面文件,如前边提到的activity_my.xml,描述了MyActivity对应的用户界面。
menu/
存放应用里定义菜单项的文件。
values/
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 在文本框为空的时候,会默认显示这个字符串,对于这个字符串的值引用的资源,应该定义在单独的文件里。
为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显示的长短
});
}
- 【android】安卓基础学习
- 安卓基础学习_ Android数据存储与IO
- 学习安卓基础之android 拖动和拖动原理
- 【Android】安卓学习笔记之操作SQLite数据库基础
- 安卓基础学习之一
- 安卓基础学习1
- 安卓基础学习2
- 安卓基础学习3
- 安卓基础学习4
- 安卓基础学习5
- 安卓开发基础学习
- 安卓应用基础学习
- 第一章 学习安卓基础
- 安卓基础学习之二
- 安卓基础学习_Android事件处理
- 安卓基础学习_Activity与Fragment
- 安卓基础学习_Intent和IntentFilter
- 安卓基础学习_ Service
- leetCode-Two Sum
- 算术表达式转成后缀表达式
- 用ant自动compile|run|package spark程序
- 硬件时序图
- 小白使用React---走过的一些坑
- 【android】安卓基础学习
- 史上最全的机器学习资料(下)
- 这次我真的懂AsyncTask了
- 校招总结~
- Android视图的截图
- 一个简单的例子说明TPS和事务响应时间的关系
- Android开发之Eclipse碰到Android Studio的Bug修复
- Java基础学习总结(119)——Java8 JVM与Java7 JVM比较
- 机器学习-xgboost