内容:
-
程序的目录介绍
草图.png Activity的⽣生命周期
Android界面大部分的控件都会提供很多方法
这些方法只需要自己去重写 不需要自己主动调用
什么是Activity 就是一个界面
管理一个界面从创建到运行到结束的整个过程/生命周期
配置界面 onCreate 重写的这个方法是系统调用的
启动界面 start
重新启动 restart
唤醒界面 resume
暂停界面 pause
销毁界面 destory-
实现的顺序
界面启动
OnCreate
OnStart
OnResume点击home键 回到主界面
onPause通过后台 重新运行这个程序
onRestart
onStart
onResume使用返回键 返回到主界面
onPause
onDestory -
xml的布局
1.png -
xml配置界面
2.png
3.png 控件的添加
a. 控件=一个视图=看得到的都是视图
1.基础阶段 学习系统自带的控件 熟悉
TextView EditText Button ImageView ListView RecycleView
ScrollView ViewPager ProgressBar Switch
2.高级阶段 :自定义
1.在已有的控件基础上加上自己的功能 继承
2.自己画
b. 一个控件就是一个类的具体对象
ImageView :
属性:
方法:
c.使用Java代码来实现布局界面
通过添加id号可以唯一标识一个控件 或者组件(容器)
android:id="@+id/fl_main
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/bg"
/>
-
更改主题样式
程序或者某个UI模块可以有己的样式styles
可以在values.styles.xml里面自定义
不需要ActionBar
style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
4.png - 代码创建控件(不建议使用)
public void code(){
//通过代码来布局界面
//1.找一个容器 xxlayout
FrameLayout container=new FrameLayout(this);
//2.创建一个子视图
//创建imageView显示图片
ImageView backgroundImageView=new ImageView(this);
//设置属性
backgroundImageView.setBackgroundColor(Color.GREEN);
//添加到容器里面
container.addView(backgroundImageView,1400,1400);
///3.设置当前界面的内容视图为这个容器
setContentView(container);
}
具体实现
-
创建控件
5.png - MainActivity中配置界⾯面
//配置界面
setContentView(R.layout.activity_main);
//找到容器里面的图片视图控件
//findViewById
forground=findViewById(R.id.iv_forground);
- 读取原始图片
//将需要操作的图片读取出来 Bitmap
//BitmapFactory 用于管理位图
//decodeResource 从工程的资源路径中生成一张位图
//getResource 获取工程的资源
//R.drawable.fr 访问资源路径下 drawable里面的一个文件
orgBitmap= BitmapFactory.decodeResource(getResources(),R.drawable.fr);
- 创建一个副本
//操作这张图片 用透明色去替换某一个位置的颜色
//不能操作原图 只能cope一份
//创建一个和原始图片相同环境的空位图
copyBitmap=Bitmap.createBitmap(orgBitmap.getWidth(),orgBitmap.getHeight(),orgBitmap.getConfig());
- 进行图片的操作
//创建一个Canvas 画布=现实中的画板
canvas=new Canvas(copyBitmap);
//创建一个画笔
paint=new Paint();
//创建一个矩阵
Matrix matrix=new Matrix();
//旋转图片
//matrix.setRotate(90,240,400);
//平移
//matrix.setTranslate(50,0);
//翻转 set只作用一次 post作用多次
//matrix.setScale(-1f,1f);
//matrix.postTranslate(orgBitmap.getWidth(),0);
//画一幅图
canvas.drawBitmap(orgBitmap,matrix,paint);
//显示图片
forground.setImageBitmap(copyBitmap);
- 添加触摸的事件
//给前景图片添加touch事件
//当有触摸事件发生 系统就会将这个事件接收并回调这个事件
forground.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
//获取当前事件
int action= motionEvent.getAction();
//判断状态
if (action==MotionEvent.ACTION_MOVE){
//获取触摸点的坐标
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);
}
}
forground.setImageBitmap(copyBitmap);
}
return true;
}
});
总结:
在听得过程中跟着写了一遍然后自己下来稍微看了一下代码在之前的部分听着还是不算太难但是在进行后面的添加touch事件创建副本和进行图片操作那里还是有点困难主要是在自己来想的时候自己根本想不到还可以用一个副本来进行图片的那些操作。





