1.Activity
1.什么是activity=就是一个界面
管理一个界面从创建到运行到结束的整个过程/生命周期
配置界面 onCreate 这个方法是系统调用的
启动界面 start
重新启动 restart
唤醒界面 resume
暂停界面 pause
销毁界面 destory
2.使用两种方式界面布局
1.sml配置
2.使用java代码创建
3.xml
默认一个Activity对应一个xml文件
命名特点 activity_界面功能.xml
xml文件就是一个容器:可以放甚多ui控件
xml界面布局
1.软件拖拽
2.代码配置
4.布局
布局:这么多控件该如何布局
1.约束布局:ConstraintLayout
2.线性布局 lineLayout 垂直水平
3.相对布局 RelativeLayout
4.帧布局 FrameLayout
5.表格布局 TableLayout Gridlayout
6.绝对布局 AbsoluteLayout
5.界面的相关操作
界面启动
onCreate
onStart
onResume
点击home键 回到主界面
onPause
通过后台 重新运行这个程序
onRestart
onStart
onResume
使用返回键 返回到主界面
onPause
onDestroy
2.控件
1.定义:
控件=一个视图=看到的都是视图
一个控件就是一个类的具体对象
2.学习目标:
1.学习系统自带的控件 熟悉
TextView EditText Button ImageView ListView
RecycleView ScrollView ViewPage ProgressBar
Switch
2.高级阶段:自定义
1.在已有的控件基础上加上自己的功能
2.自己画
3.控件尺寸
控件的尺寸
父视图:
子视图:
将一个控件添加到一个容器中 控件就是这个容器的子视图
容器就是这个父视图
1.match_parent 和父视图一样大
2.wrap_content 包裹内容 和控件的内容一样大
3.20dp 具体尺寸
3.其余知识点
1.主题
程序或者某个ui模块都可以有自己的样式 style
可以在value.styles.xml里面定义
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
2.
使用java代码来布局界面
public void code(){
//通过代码来布局界面
//1.找一个容器 xxLayout
FrameLayout container=new FrameLayout(this);
//2.设置当前这个界面的内容视图为这个容器
setContentView(container);
//3.创建一个子视图
//创建ImageView显示图片
ImageView bgImageview=new ImageView(this);
//设置属性
bgImageview.setBackgroundColor(Color.GREEN);
//添加到容器
container.addView(bgImageview,200,200);
}
通过标识id号可以唯一标识某一个控件 或者组件 (容器)
3.
xml:解耦 安卓推荐使用xml
什么时候需要用代码创建 什么时候使用xml配置
如果添加的控件是静态的(变化的东西 不多)使用xml配置
如果需要灵活操作这个控件 选择代码创建
4.撕衣服的demo
1.思路:
用透明色去替换原有图片的像素,再立即用替换之后的的图片,将图片显示在ImageView上
2.创建控件
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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"
android:id="@+id/fl_main"
tools:context=".MainActivity">
<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"/>
</FrameLayout>
3.MainActivity中配置界⾯面:
//配置界面
setContentView(R.layout.activity_main);
//找到容器里面的图片视图控件
//findViewByID
final ImageView forground = findViewById(R.id.iv_forground);
4.读取原图
//将需要操作的图片读取出来 Bitmap
//BitmapFactory 用于管理位图
//decodeResource 从工程的资源路径中去生成一张位图
//getResourcess() 获取工程的资源
//R.drawable.fr 访问资源路径下 drawable里面的一个文件名为fr的资源
final Bitmap orgBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.fr);
5.创建副本
//操作这张图片 用透明色去替换某个位置的颜色
//不能操作原图 只能copy一份
//创建一个和原始图片相同环境的空位图
final Bitmap copyBitmap=Bitmap.createBitmap(orgBitmap.getWidth(),orgBitmap.getHeight(),orgBitmap.getConfig());
6.图片操作
//创建一个Canvas画布—现实中的画板
final Canvas canvas=new Canvas(copyBitmap);
//创建一个画笔
final Paint paint =new Paint();
//创建一个矩阵
Matrix matrix=new Matrix();
//旋转图片
// matrix.setRotate(90,540,960;
//平移
//matrix.setTranslate(50,0);
//翻转 set之作用一次 post作用多次
matrix.setScale(-1f,1f);
matrix.postTranslate(orgBitmap.getWidth(),0);
//画一幅图
canvas.drawBitmap(orgBitmap,matrix,paint );
//显示图片
forground.setImageBitmap(copyBitmap);
**7.添加触摸事件
//给前景图片添加touch事件
//当有触摸事件发生 系统就会将这个事件接受并回调这个事件
forground.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
//获取当前事件
int action=event.getAction();
//判断状态
if (action==MotionEvent.ACTION_MOVE){
//获取触摸点的坐标
int x=(int) event.getX();
int y=(int)event.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);
}
}
forground.setImageBitmap(copyBitmap);
}
return true;
}
});
}
5.感悟:
今天的android学习尽管接触到的知识有点多,但还是比较容易理解得,最后的那个demo那是相当的有趣(一脸纯洁 QAQ),这样的学习就特别的有意思了,兴趣也起来了,接下来的学习得更加努力才行!!!