文章目录
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四种启动模式
四种启动模式:
- standard 标准模式:默认
先进后出
- singleTop 顶部复用
- singleTask
- singleInstance
例如来电界面,只能有一个界面存在,在一个栈中。
使用:
在代码中使用:
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
3 Activity生命周期
- onCreate()
- onStart()
- onResume()
- onPause()
- onStop()
- onDestroy()
- 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 自定义对话框
-
设置布局,自定义对话框样式:dialog_layout.xml
-
设置Style资源,去标题栏 去背景,values–styles.xml:
-
自定义Dialog类继承于Dialog
-
实例化自定义对话框并显示,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”