Android复习
Android复习
一.日志工具(Log)
Log.v():用于打印那些最为琐碎的,意义最小的日志信息。对应级别:verbose
Log.d() :打印调试信息。对应级别:debug
Log.i():打印比较重要的信息。对应级别:info
Log.w():打印警告信息。对应级别:warn
Log.e():打印程序中的错误信息。对应级别:error
String TAG=“test”;
Log.d(TAG,"打印调试信息");
二.活动(Activity)
1.使用Toast提醒消息:
Toast.makeText(MainActivity.this,"通知消息",Toast.LENTH_SHORT).show();
2.使用Intent在活动之间穿梭(实现页面跳转)
//显式Intent
Intent intent=new Intent(FirstActivity.this,SecondActivity.this);
startActivity(intent);
//隐式Intent
//在注册文件manifest.xml中声明需要跳转的界面的action和category
//每个Intent只能指定一个action,能指定多个category
<activity android:name=".SeconActivity">
<intent-filter>
<action android:name="com.example.activitytest.ACTION_ATART">
<category android:name="android.intent.category.DEFAULT">
<category android:name="com.example.activitytest.MY_CATEGORY">
</intent-filter>
</activity>
//在主界面有:
Intent intent=new Intent("com.example.activitytest.ACTION_ATART");
intent.addCategory("com.example.activitytest.MY_CATEGORY");//使用代码添加category时,必须在mannifest里面注册
startActivity(intent);
//使用Intent打开网页
Intent intent=new Intent(Intent.ACTION_VIEW);//Intent.ACTION_VIEW是android内置的一个动作
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
//使用Intent拨打电话
//必须加tel:
//geo显示地理协议
Intent intent=new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:10086"));
startActivity(intent);
//使用Intent发短信
Uri uri=Uri.parse("smsto:10086");
Intent intent new Intent(intent.ACTION_SENDTO,uri);
intent.putExtra("sms_body","Hello");
startActivity(intent);
3.使用Intent传递数据
从FirstActivity传值到SecondActivity
//传递数据使用putExtra()方法
Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
intent.putExtra("extra_data","data");//第一个参数是键名,第二个参数是键值(真正传递的数据)
startActivity(intent);
//接收数据
Intent intent=getIntent();//通过getIntent()方法获取用于启动SecondActivity的Intent
String data=intent.getStringExtra("extra_data");//传递的整形则是getIntExtra(),布尔型则是getBooleanExtra()
从SecondActivity回传数据到FirstActivity
//在FirstActivity中有:
Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
startActivityForResult(intent,1);//第二个参数是请求码,必须唯一
//在SecondActivity中有:
Intent intent=new Intent();
intent.putExtra("data_return","hello FirstActivity");
setResult(RESULT_OK,intent);//第一个参数是回调码
finish();//销毁当前活动
//在FirstActivity中书写获取回调码的后续逻辑
//直接输入onActivityResult
@Override
protected void onActivityResult(int requstCode,int resultCode,Intent data){
switch(requstCode){
case 1:
if(resultCode==RESULT_OK){
String returnData=data.getStringExtra("data_return");
}
break;
default:
}
}
4.使用Bundle和序列化类传递数据
使用Bundle传递数据
//在FirstActivity中有
Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
Bundle bundle=new Bundle();
bundle.putExtra("userNo","001");
bundle.putExtra("userName","CSL");
intent.putExtra(bundle);
startActivity(intent);
//在SecondActivity获取数据
Bundle bundle=this.getIntent().getExtras();
String userNo=bundle.getString("userNo");
序列化类传递数据
//
public class UserInfo implements Serializable{
private String userNo;
private String userName;
public String getUserNo(){return userNo;}
public String setUserNo(String userNo){this.userNo=userNo;}
public String getUserName(){return userName;}
public String setUserName(String userName){this.userName=userName;}
}
//在FirstActicity录入数据
UserInfo user=new UserInfo();
user.setUserno("001");
user.setUserName("CSL");
intent.putExtra("user",user);
startActivity(intent);
//在SecondActivity获取数据
UserInfo user=(UserInfo)this.getIntent().getSerializableExtra("user")
5.活动的生命周期
Android是使用任务(Task)来管理活动的,一个任务就是一组存放在栈里的活动的集合,这个栈也被称为返回栈(Back
Stack)。在默认情况下,每当启动一个新的活动,它会在Back
Stack中入栈,并处于栈顶的位置。当按下Back键或者调用finish()方法时,处于栈顶的活动会出栈,使得前一个入栈的活动处于栈顶。系统总是会显示处于栈顶的活动。
4.1活动状态:
每个活动在其生命周期最多可能有4种状态
-
01.运行状态
当一个活动处于Back Stack的栈顶时,该活动就处于运行状态。
-
02.暂停状态
当一个活动不再处于栈顶位置,但仍然可见时,这时活动就进入了暂停状态。在内存低的情况下,不能系统killed(杀死)
-
03.停止状态
当一个活动不再处于栈顶位置,并且完全不可见的时候,就进入了停止状态。在内存低的情况下,能系统killed(杀死)
-
04.销毁状态
当一个活动从返回栈中移除后就变成了销毁状态。
4.2活动的生存期:
7个回调方法
- onCreate()
- onStart()
- onResume()
- onPause()
- onStop()
- onDestroy()
- onRestart()
4.3Android的四种启动模式
指定启动模式:在注册文件中在标签中通过android:launchMode属性选择启动模式
-
standard模式:Activity的默认启动方式,每启动一个Activity就会在栈顶创建一个新的实例
-
singleTop模式:判断要启动的Activity实例是否位于栈顶,如果位于栈顶则直接复用,否则创建新的实例
-
singleTask模式:系统首先检查栈中是否存在当前Activity实例,如果存在则直接使用,并把当前Activity之上的所有实例全部出栈
-
singleInstance模式:启动一个新的任务战来管理Activity实例,无论从哪个任务战中启动该Activity,该实例在整个系统中只有一个
三.UI布局及控件
1.五种常见布局
- 线性布局:以水平或者垂直方向排列
- 相对布局:通过相对定位排列
- 帧布局:开辟空白区域,帧里的控件(层)叠加,帧布局的大小由内部最大控件决定
- 表格布局:表格形式排列。配合TableRow使用
- 网格布局:与表格类似以行列排列
- 绝对布局:通过x,y坐标排列
2.常用单位
- px:像素
- pt:磅数
- dp:基于屏幕密度的抽象单位
- sp:可伸缩像素,推荐设置文字大小时使用
3.控件
控件太多,属性等详情查找资料即可
3.1创建自定义控件
3.2ListView
4.常见对话框
//普通对话框
//声明对象并创建对话框
final AlertDialog alertDialog=new AlertDialog.Builder(MainActivity.this).create();
//设置相关信息
alertDialog.setTitle("对话框");
alertDialog.setMessage("是否确定退出?");
alertDialog.setIcon(R.mipmap.ic_launcher);
//显示对话框
alertDialog.show();
//单选对话框
new AlertDialog.Builder(MainActivity.this)
.setTitle("请选择性别")//设置选项内容,0标识默认选中第一项
.setSingleChoiceItems(new String[]{"男", "女"}, 0,
new DialogInterface.OnClickListener() {
@Override//建立监听,允许被点击
public void onClick(DialogInterface dialog, int which) {
}
}).setPositiveButton("确定",null)
.show();
//多选对话框
new AlertDialog.Builder(MainActivity.this)
.setMultiChoiceItems(new String[]{"旅游","美食","汽车","宠物"},null,null)
.setPositiveButton("确定",null)
.show();
//进度条对话框
final ProgressDialog progressDialog;
progressDialog=new ProgressDialog(MainActivity.this);
progressDialog.setTitle("进度条对话框");
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.show();
四.碎片(Fragment)
1.例子
以新闻布局为例
2.碎片的生命周期
五.广播(Broadcast Receiver)
六.持久化技术(SQLite和SharedPreference)
七.内容提供器(Content Provider)
八.多媒体(Notification,Camera,Album,MediaPlayer)
九.服务(Service)
本文地址:https://blog.csdn.net/weixin_43408201/article/details/109616789