Android学习第一天
一、一些Android的知识
-
Android的系统架构:Linux内核层、系统运行库层、应用框架层、应用层。
-
Android四大组件:活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)、内容提供器(Content Provider)
-
Android提供了:四大组件、系统控件、SQLite数据库、多媒体服务、地理位置定位
-
Android学习入门:https://blog.csdn.net/myosotis5/article/details/79208707
-

-

-
Android程序的设计讲究逻辑和视图分离
-
res目录下:drawable(图片)、layout(布局)、values(字符串)
-
res目录:以drawable开头的文件放图片,以mipmap开头的文件放应用图标(兼容各种设备),以values开头的文件夹用来放字符串、样式、颜色等配置,layout文件夹放布局文件。
-
Android中的工具类日志Log(android.util.Log),提供了5个打印日志的方法。
-
日志:Log.v() Log.d() Log.i() Log.w() Log.e()
二、Hello World分析
1.Android-Mainfest.xml文件
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
表示对MainActivity这个活动进行注册,没有在Android-Mainfest.xml中注册的活动是不能使用的。
其中,intent-filte里的两行代码表示MainActivity是项目的主活动(点击应用图标,首先启动的活动)。
2.MainActivity.java文件
public class MainActivity extends AppCompatActivity { //继承自AppCompatActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);//活动被创建时必须要执行的方法
setContentView(R.layout.activity_main);//为当前活动引入一个activity_main布局
}
}
AppCompatActivity
3.layout内的activity_main.xml(activity_main的布局文件)
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
TextView是Android系统提供的一个控件,用来在布局中显示文字
4.values内的string.xml
<resources>
<string name="app_name">Hello World</string>
</resources>
引用方式:①代码中:R.string.app_name ②XML:@string/app_name
引用应用图标时:@mipmap/... 引用图片:@drawable/... 引用布局文件:@layout/...
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
android:icon:指定项目的应用图标
android:label:指定应用名称
三、活动
1.手动创建活动
Java里包中创建活动(Java文件)—— res文件中创建layout文件夹,layout里创建布局文件(xml文件)—— 完善布局文件 —— 在Java文件中调用方法加载布局文件,如setContentView()——在AndroidMainfest.xml文件中注册,设置主活动
在创建活动时,Launcher Activity表示将其设置成为当前的主活动;Generate Layout File自动生成布局文件;
2.Toast
public class FirstActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_layout);
//获取在布局文件中定义的元素,返回View对象,向下转型成Button对象
Button button1 = (Button) findViewById(R.id.button_1);
//为按钮注册一个监听器,点击则执行onClick()方法
button1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
//静态方法创建出一个Toast对象,show()方法显示出来
Toast.makeText(FirstActivity.this, "有眼光",
Toast.LENGTH_SHORT).show();
}
});
}
}
3.在活动中使用Menu
在res文件夹下创建名为menu的文件夹——menu里创建Menu resource file——添加item标签(用来创建具体的菜单项, id给菜单项指定唯一标识符,title给菜单项指定一个名称)
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/add_item"
android:title="Add"/>
<item
android:id="@+id/remove_item"
android:title="Remove"/>
</menu>
在Java文件中重写方法onCreateOptionsMenu()方法
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//getMenuInflater()方法能够得到MenuInflater对象,再调用inflate()方法给当前活动创建菜单
//inflate()第一个参数指定通过那个资源文件创建菜单,第二个参数指定将菜单项添加到哪一个Menu对象中
getMenuInflater().inflate(R.menu.main, menu);
//返回true:允许创建的菜单显示出来;返回false:无法显示创建的菜单
return true;
}
定义菜单响应事件,重写onOptionsItemSelected()
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
//调用item.getItemId()来判断点击的哪一个菜单选项
switch (item.getItemId()) {
case R.id.add_item:
Toast.makeText(this, "You clicked Add", Toast.LENGTH_SHORT).show();
break;
case R.id.remove_item:
Toast.makeText(this, "You clicked remove", Toast.LENGTH_SHORT).show();
break;
default:break;
}
return true;
}
4.销毁一个活动
①使用BACK键 ②使用Activity类中提供的finish()方法
5.使用Intent
Intent是Android程序中各组件之间交互的一种重要方式,可以指明当前组件项执行的动作,可以在不同组件之间传递数据。
1)使用显示Intent
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_layout);
Button button1 = (Button) findViewById(R.id.button_1);
button1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
//第一个参数Context要求提供一个启动活动的上下文,第二个参数Class指定想要启动的目标活动
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
//Activity类提供的startActivity()方法,接受Intent参数,启动活动
startActivity(intent);
}
});
}
2)使用隐式Intent
在AndroidMainfest.xml文件中指定当前活动的action和category
<activity android:name=".SecondActivity">
<intent-filter>
<action android:name="com.example.activitytest.ACTION_START"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
修改FirstActivity.java中的点击事件
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_layout);
Button button1 = (Button) findViewById(R.id.button_1);
button1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Intent intent = new Intent("com.example.activitytest.ACTION_START");
startActivity(intent);
}
});
}
3)其他隐式Intent
-
Intent可以启动自己的活动,也可以启动其他程序的活动。
button1.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { //指定Intent的活动是Intent.ACTION_VIEW(Android内置活动,常量值为android.intent.action.VIEW) Intent intent = new Intent(Intent.ACTION_VIEW); //setDate()接收一个Uri对象,指定当前Intent正在操作的数据 //数据以字符串的形式传入Uri.parse()进行解析 intent.setData(Uri.parse("http://www.baidu.com")); startActivity(intent); } });
打开网页界面、拨打电话界面
button1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_DIAL);
//data部分指定的协议是tel,号码是10086
intent.setData(Uri.parse("tel:10086"));
startActivity(intent);
}
});
4)向下一个活动传递数据
在FirstActivity.java中使用putExtra()将数据暂存在Intent中
button1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
String data = "Hello SecondActivity";
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("extra_data", data);
startActivity(intent);
}
});
在SecondeActivity.java中得到数据
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
//得到用于启动SecondActivity的Intent
Intent intent = getIntent();
//获得要传递的数据,如果是int型则用getIntExtra()方法;如果是bool型则用getBooleanExtra();
String data = intent.getStringExtra("extra_data");
Log.d("SecondActivity", data);
}
5)给上一个活动返回数据
6.活动的生命周期
1)返回栈
Android活动是可以层叠的。
Android是使用任务(Task)来管理活动的。一个任务就是一组存放在栈里的活动的集合。
2)活动状态
运行状态、暂停状态、停止状态、销毁状态

浙公网安备 33010602011771号