Android(3)——Activity,Menu,对话框

Android

安卓开发者指南:https://developer.android.google.cn/guide

1 Activity基础

1.1 Activity是什么?

四大组件(Activity, service, content provider, broadcast receiver)之一;为应用程序提供一个可视化页面;一个应用程序组件;可与应用程序进行交互;

1.2 Activity创建

继承AppCompatActivity类;
AndroidManifest.xml声明、注册组件(模仿MainActivity书写),intent-filter就是应用的主入口。

1.3 Activity与Layout,View之间的关系
public class TestActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // activity和layout进行关联
        setContentView(R.layout.activity_test);//activity_test.xml静态布局文件
        // 通过findViewById将layout中的控件找出来,并转化成View
        final TextView textView = findViewById(R.id.titleTextView);
        // 打到button这个View
        Button button = findViewById(R.id.button);
		// 设置点击事件
		button.setOnClickListener(new View.OnClickListListener() {
			@Override
			public void onClick(View v) {
				// 为textView动态设置文本
				textView.setText(getString(R.string.app_name));
				// 跳转到新的Activity
				Intent intent = new Intent(TestActivity.this,NewActivity.class);
				startActivity(intent);
			}
		});
    }
}
1.4 Activity之间的跳转

Intent intent = new Intent(TestActivity.this,NewActivity.class);
startActivity(intent);
注意:新的Activity要在AndroidManifest.xml中声明

1.5 Activity之间的数据传递

MainActivity传数据给SecondActivity:putString,Extra基础类型; put bundle; put序列化
MainActivity:
在这里插入图片描述
在这里插入图片描述
SecondActivity:
在这里插入图片描述
如果想把SecondActivity数据再传回给MainActivity:
1.MainActivity加上startActivityForResult(intent,999);
在这里插入图片描述
2.SecondActivity要setResult
在这里插入图片描述
3.MainActivity要去接收
在这里插入图片描述
1.其它组件也有生命周期:fragment等
2.生命周期内要处理好应用的数据及状态

2 Activity四种启动模式

四种启动模式:

  1. standard 标准模式:默认
    先进后出
  2. singleTop 顶部复用
  1. singleTask
  1. singleInstance

例如来电界面,只能有一个界面存在,在一个栈中。

使用:

在代码中使用:
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

3 Activity生命周期

  1. onCreate()
  2. onStart()
  3. onResume()
  4. onPause()
  5. onStop()
  6. onDestroy()
  7. onRestart()
    在这里插入图片描述
    利用log学习生命周期:private static final String TAG=“MainActivity”;Log.d(TAG, “message:”);
    打开一个activity:右边的大圈
    打开一个dialog activity:右边的小圈
    dialog不走生命周期
    在这里插入图片描述

4 Menu

在Android3.0,当用户按“菜单”按钮时,选项菜单的内容会出现在屏幕底部,可包含多达6个菜单项,超出部分则以"更多”来显示。
在Android3.0及更高版本的系统中,选项菜单中的项目将出现在操作栏中,用户通过操作栏右侧的操作或者点击设备菜单按钮来溢出菜单图标。

4.1 选项菜单(OptionMenu)

是一个应用的主菜单项,用于放置对应用产生全局影响的操作。
res–new–Android resource directory–选择resource type:menu
右键new–Menu resource file

showAsAction属性值
always:直接在标题栏显示
never:不显示
withText:控制图标和文本一起显示
ifRoom:有空间就显示

4.2 上下文菜单(ContextMenu)

长按某个view不放,就会在屏幕中间弹出ContextMenu。

为按钮设置上下文操作模式
1.实现ActionMode.CallBack

2.在view的长按事件中去启动上下文操作模式

覆盖在原来的顶部操作栏

4.3 弹出菜单(PopupMenu)

一个模态形式展示的弹出风格的菜单,绑在某个View上,一般出现在被绑定的View的下方(下方如果有空间的话)。

创建方式

通过XML定义;
通过java定义
一级菜单

二级菜单

经验分享(一)
xmI定义Menu的优势
➢清晰的菜单结构
➢将菜单内容与应用的逻辑代码分离
➢资源适配更容易,后期维护简单
经验分享(二)
xmI定义的Menu不显示
➢onCreateOptionsMenu()方法必须返回true
➢onOptionsItemSelected方法返回true
➢调用父类的默认实现

5 对话框

5.1 普通对话框

消息提示机制,常用于向用户传递信息、提示或警告用户的行为。

普通对话框的创建:
利用AlertDialog中的构建器(Builder)来完成。

这种方法没有上一种好用:

◆AlertDialog
1.实例化Builder
2.利用Builder设置对话框样式
3.调用Builder的show()方法显示对话框

通用的方法有:
◆setTitle 设置标题
◆setMessage 提示语句
◆show 展示
◆create

普通对话框设置按钮:
◆setPositiveButton
◆setNegativeButton
◆setNeutralButton

5.2 自定义对话框
  1. 设置布局,自定义对话框样式:dialog_layout.xml

  2. 设置Style资源,去标题栏 去背景,values–styles.xml:

  3. 自定义Dialog类继承于Dialog

  4. 实例化自定义对话框并显示,show()
    将第一步的布局应用到当前自定义对话框
    实例化对话框(参数1:环境上下文,参数2:第二步创建的style->R.style.mydialog)

5.3 PopupWindow弹窗

PopupWindow使用步骤:
1.创建PopupWindow对象实例
2.设置背景、 注册事件监听器和添加动画
3.显示PopupWindow


PopupWindow的出场方式:
在这里插入图片描述


5.4 ArrayAdapter

数组适配器,只能用来显示单一的文本。
构造方法:ArrayAdapter(Context context,int resource,List< T> objects)
参数1:环境
参数2:布局资源,指的是每一项数据所呈现的样式android.R.layout.xxx
参数3:数据源

构造方法:ArrayAdapter(Context context,int resource,int textviewId,List< T> objects)
eg: ArrayAdapter adapter = new ArrayAdapter(this, R.layout.array_item_layout, R.id.item_txt, items);
参数3:int textviewId 指定文本需要放在布局中对应id文本控制的位置

6 DialogActivity

Activity伪装成Dialog弹出框,既显示了界面又可以在Acitivity写控制代码。默认情况下,一个activity占据整个屏幕。然而,可以为一个activity设置一个“对话框”主题,这样,它就能像一个浮动的对话框显示出来了。举个例子,你可能想要把你的activity定义成一个弹出的“对话框”,通知用户进行一些操作。在这种情况下,显示一个“对话框”样式的activity是一个引起用户注意的好方法。
首先,问题的关键在AndroidMenifest.xml中下面这句:
android:theme= “@android:style/Theme.Dialog”
这就是Actity的Dialog风格。

具体步骤:
1.继承Activity
2.设置 dialog 提示框的大小
3. AndroidMenifest.xml 清单文件中注册该DialogActivity,并设置其风格为:android:theme= “@android:style/Theme.Dialog”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值