一、学习内容
1.Activity的生命周期
ndroid里面大部分的控件都会提供很多方法
这些方法只需要自己去重写 不需要自己主动调用
什么是Activity = 就是一个界面
管理一个界面从创建到运行到结束的整个过程 / 生命周期
配置界面 onCreate 这个方法是系统调用的
启动界面 start
重新启动 restart
唤醒界面 resume
暂停界面 pause
销毁界面 destory
2.对应接口的调用顺序
界面启动
onCreate
onStart
onResume点击home键 回到主页面
onPause通过后台 重新运行这个程序
onRestart
onStart
onResume使用返回键 返回到主界面
onPause
onDestory
3.xml界面布局
使用两种方式界面布局
- 1.xml配置
- 2.使用Java代码创建
默认一个Activity对应一个xml配置文件
命名特点:activity_界面功能.xml
xml文件就是一个容器:可以放很多UI控件
布局:这么多控件该如何布局
- 1.约束布局 ConstraintLayout
- 2.线性布局 LinearLayout 垂直 水平
- 3.相对布局 RelativeLayout
- 4.帧布局 FrameLayout
- 5.表格布局 TableLayout GridLayout
- 6.绝对布局 AbsoluteLayout
4.xml添加控件
控件的尺寸
父视图:
子视图:
将一个控件添加到一个容器中,控件就是这个容器的子视图
容器就是这个控件的父视图
- 1.match_parent 和父视图一样大
- 2.wrap_content 包裹内容 和控件的内容一样大
- 3.20dp 具体尺寸
二、技术具体实现
1.xml添加控件
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/bg" />
<ImageView
android:id="@+id/iv_forground"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/fr"/>
2.代码方式创建控件
public void code(){
//通过代码来布局界面
//1.找一个容器 xxlayout
FrameLayout container= new FrameLayout(this);
//3.创建一个子视图
//创建ImageView显示图片
ImageView bgImageView=new ImageView(this);
//设置属性
bgImageView.setBackgroundColor(Color.GREEN);
//添加到容器里面
container.addView(bgImageView,600,800);
//2.设置当前这个界面的内容视图为这个容器
setContentView(container);
}
3.配置界面
//配置界面
setContentView(R.layout.activity_main);
//找到容器里面的图片视图控件
//findViewById
forground=findViewById(R.id.iv_forground);
4.读取原图
//将需要操作的图片读取出来 Bitmap
//BitmapFactroy 用于管理位图
//decodeResource 从工程的资源路径中去生成一张位图
//getResources()获取工程的资源
//R.drawable.fr 访问资源路径下 drawable里面的一个
orgBitmap= BitmapFactory.decodeResource(getResources(),R.drawable.fr);
5.创建副本
//操作这张图片 用透明色去替换某个位置的颜色
//不能操作原图 只能copy一份
//创建一个和原始图片相同环境的空位图
copyBitmap=Bitmap.createBitmap(orgBitmap.getWidth(),orgBitmap.getHeight(),orgBitmap.getConfig());
6.图片操作
//创建一个Canvas 画布-现实中的画板
canvas=new Canvas(copyBitmap);
//创建一个画笔
paint=new Paint();
//创建一个矩阵
Matrix matrix=new Matrix();
//旋转图片
//matrix.setRotate(90,240,400);
//平移
//matrix.setTranslate(100,0);
//翻转 set只作用一次 post作用多次
//matrix.setScale(-1f,1f);
//matrix.postTranslate(orgBitmap.getWidth(),0);
//画一幅图
canvas.drawBitmap(orgBitmap,matrix,paint);
//显示图片
forground.setImageBitmap(copyBitmap);
7.添加触摸事件
forground.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
//获取当前事件
int action=motionEvent.getAction();
//判断状态
if (action==MotionEvent.ACTION_DOWN){
//获取触摸点的坐标
int x=(int) motionEvent.getX();
int y=(int)motionEvent.getY();
//替换x,y对应的像素
for (int i = -8; i <8; i++) {
for (int j = -8; j <8 ; j++) {
copyBitmap.setPixel(x+i,y+j,Color.TRANSPARENT);
}
}
//canvas.drawBitmap(orgBitmap,new Matrix(),paint);
forground.setImageBitmap(copyBitmap);
}
return true;
}
});