总说
总的来说,今天的学习是比较轻松的,毕竟接触了真正的开发手段。真正的使用Android Studio设计开发一个应用程序的感觉还挺不错的。今天的项目是开发一个撕衣服软件,手指滑动 衣服消失。在学习项目的同时说明界面开发的方法以及如何使用。开始今天的笔记
首先开始今天笔记
/**
- Activity——— 一个界面
- 管理一个界面从创建到运行的过程
- 1.创建界面 Create
- 2.启动界面 Start
- 3.重启界面
- 4.暂停界面 Pause
- 5.销毁界面 Destroy
- 界面祈祷那个
onCreate
onStart
onResume
- 点击home键 返回主界面
onPause
铜鼓后台重新运行主程序
onRestart
onStart
onResume
- 使用返回键返回主页面
onPause、
onStart
onResume
使用俩种方式界面布局
xml配置
使用Java代码创建
- 默认一个Activity对应的配置文件
- 命名特点 activity_界面功能.xml
- xml空文件据说一个容器 可以放很多控件
- 布局 这么多控件该怎么布局
- 1.约束布局 ConstraintLayout
- 2.线性布局 LineratLayout 垂直 水平
- 3.相对布局
- 4.帧布局
*5.表格布局 - 6绝对布局
*/
/**
- 1.学习自带控件 熟悉
- TestView EditTest Button ImageView ListView
- RecycleView ScrollView ViewPager ProgressBar
- Switch
- 2.高级阶段 自定义
- 1.在已有的控件的基础上加上自己的功能 继承
- 2.自己做
*/
/**
- 控件的尺寸
- 父视图
- 子视图
- 将一个控件放到一个容器中 控件就是容器的子视图
- 容器是空间的父视图
- 1.match_parent 和父视图一样大
- 2.warp_content 包括内容 和控件的内容一样大
- 20dp 具体尺寸
*/
- 20dp 具体尺寸
/**
- 一个控件就是一个类的具体对象
- ImageView
- 属性
- 方法
- 程序或者某个Ui板块都可以有自己的样式板块Style
- 可以在styles.xml文件里面定义
- 不需要ActionBar 可以改成NoActionBar
*/
/**
- 什么时候需要使用代码区创建 什么时候使用xml配置
- 若干需要添加的控件是静态的 (变化的东西不多)选择xml配置
- 如果余姚灵活的操作这个控件 选择代码创建
*/
操作过程
-
明确目的
首先,要完成这个项目,要了解他的构架,要完成他首先要将它弄成俩张图片,一张图片有衣服,一张没有,在手指划过的地方的衣服像素转化为透明像素,暴露出下面的图片。即可完成这个目的。
-
导入图片
将没衣服的图片A作为背景图导入,有衣服的图B导入覆盖,并且给B一个图片id方便后面的操作。代码如下
<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"
tools:context=".MainActivity"
android:id="@+id/fl_main"
>
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/bg" />
<ImageView
android:id="@+id/iv_forpart"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/fr" />
</>
-
建立一个容器
这个容器里面放着我们操作需要的工具以及方法,首先我们要建立这个容器
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
然后,我们还要把材料库里面的图片找到并且载入。同时复制一份图片出来用于后面的操作(PS :不能对原图进行操作,会报错)
//找到容器里面的图片视图控件
//findImageViewById
ImageView forground=findViewById(R.id.iv_forpart);
//将需要操作的图片读取出来
//BitmapFactory 用于管理位图
//decodeByteArray 从工程中申成一张位图
//getResource() 获取工程资源
//R。drawable.fr 图片具体资源路径
Bitmap orgBitmip= BitmapFactory.decodeResource(getResources(),R.drawable.fr);
Bitmap copyBitmap=Bitmap.createBitmap(orgBitmip.getWidth(),orgBitmip.getHeight(),orgBitmip.getConfig());
创建一个画布,并且对复制的图片进行操作,操作完成后把图片显示出来
//操作这张图片。用透明色区替换这张图片的部分
//不能操作原图
orgBitmip.setPixel(240,400,Color.WHITE);
//创建一个画布 Canvas
Canvas canvas=new Canvas(copyBitmap);
//显示图片
forground.setImageBitmap(orgBitmip);
//创建一个画笔
Paint paint=new Paint();
//创建一个矩阵
Matrix matrix=new Matrix();
//选择图片
//旋转图片matrix.setRotate(90,240,400);
//平移
// matrix.setTranslate(100,0);
//翻转
matrix.setScale(-1f,-1f);
//画一幅画
canvas.drawBitmap(orgBitmip,matrix,paint);
//显示图片
forground.setImageBitmap(copyBitmap);
结语
虽然好多不懂,但是比起刚刚开始的那个小程序来说。还是理解了一些东西。总的来说有点进步,但是还是有好多错误,一些运行时出现的错误野没办法解决,还是让我抓老壳,希望以后能顺畅的解决这些问题。