概述
活动顾名思义,就是指的点击APP时,有所反应。在Android中活动包含的内容很多,本文主要结合笔者今天所学进行总结。基于Android Studio 进行探索。
活动的创建
当我们创建一个空的安卓工程时,目录如下:
其实主活动函数及一些常用的主活动配置都已经在代码中写好了,主活动在以下的位置
相应的配置在 AndroidManifest.xml中
布局文件
所谓布局文件指的是Android页面的布局,包括按键等一些其他的组建布局,主要相关的文件是 res/layout 下的一些设置,这个其实在后来主要用来设置页面的美观程度。每个组件如果想让他执行一些功能,其实是需要 id 等一些字段来指明组件,用来操作。这个在后来在一步步展开。
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<!-- 初始化时包含的 -->
<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" />
<!-- 自己添加的部分 -->
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="button1"
tools:layout_editor_absoluteX="168dp"
tools:layout_editor_absoluteY="384dp" />
</androidx.constraintlayout.widget.ConstraintLayout>
页面效果:这个在后来可以自己调节
AndroidManifest.xml
AndroidManifest官方解释是应用清单(manifest意思是货单),其实就是整个应用的配置文件,用来配置APP的一些设置。(目前只有这些浅显的理解,其实他能完成的功能其实挺多)以下内容源自一条博文中的总结:
1 为应用的 Java 软件包命名。软件包名称充当应用的唯一标识符。
2 描述应用的各个组件,包括构成应用的 Activity、服务、广播接收器和内容提供程序。它还为实现每个组件的类命名并发布其功能,例如它们可以处理的 Intent 消息。这些声明向 Android 系统告知有关组件以及可以启动这些组件的条件的信息。
3 确定托管应用组件的进程。
4 声明应用必须具备哪些权限才能访问 API 中受保护的部分并与其他应用交互。
还声明其他应用与该应用组件交互所需具备的权限
5 列出 Instrumentation类,这些类可在应用运行时提供分析和其他信息。这些声明只会在应用处于开发阶段时出现在清单中,在应用发布之前将移除。
6 声明应用所需的最低 Android API 级别
7 列出应用必须链接到的库=
但这些目前我还没有很深的理解。
Toast的使用
这个功能类似于JS 中的 alert 函数,用来弹出一些提示,具体用法,以MainActivity 为例,我们在activity_main.xml 布局中已经添加了 按钮 组件,没有添加的话,需要先添加:
public class MainActivity extends AppCompatActivity {
//声明组件名称
private Button button1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init_view();
}
/**
* 初始化视图
*/
public void init_view(){
//根据id加载按钮对象
button1=findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
//点击按钮触发弹出文字操作,参数分别为主函数 文本 和显示时间(有多种显示时间)
Toast.makeText(MainActivity.this, "Hello Activity", Toast.LENGTH_SHORT).show();
}
}
活动中的 menu
即菜单栏的设置
1 在 res 文件夹下创建 menu 文件夹,这个 menu 是固定的的单词,不能改名或者大小写
2 menu 文件夹下创建 Menu Resource File 文件
系统会自动生成以下的代码:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
</menu>
在空代码中添加 item 组件
<?xml version="1.0" encoding="utf-8"?>
<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>
最终的效果如图
触发菜单:
/**
* 选中菜单
*/
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch(item.getItemId()){
case R.id.add_item:
Toast.makeText(this,"add_op",Toast.LENGTH_SHORT).show();
break;
case R.id.remove_item:
Toast.makeText(this,"remove_op",Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}
Intent (意图)
简单理解,意图一般是在两个页面间的交互,对APP施加操作后,页面需要怎么改变
在安卓里,有显式和隐式意图两种
在意图之前,需要先创建一个新的 Activity 文件,这里我们命名为 SecondActivity
1 显式意图
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init_view();
}
public void init_view(){
//根据id加载按钮对象
button1=findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
//显式意图
// 声明意图
Intent intent=new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent);//执行意图活动
}
2 隐式意图,这个需要修改 AndroidManifest.xml 中的配置
把 SecondActivity 这个活动 进行初步的配置
<activity android:name=".SecondActivity">
<intent-filter>
<!-- 隐式意图-->
<action android:name="com.example.test.START_ACTION"/>
<!-- <action android:name="START_ACTION"/> -->
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
//隐式意图 需要调整 AndroidManifest.xml中SecondActivity部分
Intent intent=new Intent("com.example.test.START_ACTION");
startActivity(intent);
3 手动指明 Intent
//手动赋予 intent 权限
Intent intent =new Intent();
intent.setAction(Intent.ACTION_CALL);
//intent.setAction(Intent.ACTION_DIAL);
//intent.setAction("android.settings.SETTINGS");
intent.setData(Uri.parse("tel:15686016961"));
startActivity(intent);
两个Activity 间 传递参数
MainActivity 发送数据到 SecondActivity
1 MainActivity.java
/**
* 初始化视图
*/
public void init_view(){
//根据id加载按钮对象
button1=findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
//两个 action 之间传递数据
Intent intent=new Intent(MainActivity.this,SecondActivity.class);
intent.putExtra("Data","Hello SecondActivity");
startActivity(intent);
}
});
}
2 SecondActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
//接收数据
Intent intent=getIntent();
String msg=intent.getStringExtra("Data");
Log.d("logg File",msg);//在控制台打印信息
}
MainActivity 接收来自 SecondActivity的数据
MainActivity
/**
* 初始化视图
*/
public void init_view(){
//根据id加载按钮对象
button1=findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
//接收来自其他页面的返回值
Intent intent=new Intent(MainActivity.this,SecondActivity.class);
startActivityForResult(intent,1);//约定请求码
}
});
}
/**
*
* @param requestCode:请求码
* @param resultCode 结果码
* @param data 返回的 intent 对象
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
switch(requestCode){
case 1:
if(resultCode==-1){
String msg=data.getStringExtra("return_data");
Log.d("MainActivity",msg);
}
break;
case 2:
break;
}
super.onActivityResult(requestCode, resultCode, data);
}
SecondActivity
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
initView();
}
public void initView(){
button2=findViewById(R.id.button2);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent();
intent.putExtra("return_data","hahh");
setResult(RESULT_OK,intent);
finish();//关闭窗口
}
});
}
以上今天所学的总结,不是很详细,欢迎指正!
最后
以上就是大力心锁为你收集整理的【安卓学习_2】活动的基本用法的全部内容,希望文章能够帮你解决【安卓学习_2】活动的基本用法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复