[Android]开发App,你得知道这些1——基础

0.前言

  • 从今天开始,我们正式进入Android知识的讲解

  • 若想要了解有关Java的文章等其他主要知识,可以去看前面的文章

  • 由于最终目的是要开发安卓app,
    因此这里使用的IDE是AS(Android Studio)
    (不会使用的可以参考下面这篇文章中的例子)
    《[Java]开发安卓,你得掌握的Java知识2》

1.准备工作

在读本文前,你最好有以下准备:

  • (1)安装Android Stuido(以下简称AS
  • (2)有一定的Java基础
  • (3)有一台安卓机
    (可以用模拟器来代替,包括AS自带的以及网上的一些著名模拟器)

2.基础知识讲解

AS中如何创建一个项目

  • (1)File-->New-->NewProject


  • (2)选择一个你想要的project类型,大家各取所需,本文用的是Empty Activity


  • (3)取好名字,选好存储project的位置,然后点击finish即可



app下面的每一个文件夹(或是文件)有什么用

文件夹 作用
manifests的AndroidManifests.xml 程序的清单文件/程序的配置文件
文件夹 作用
java的MainActivity 放各种java源代码
文件夹 作用
res 文件夹里面全是资源文件
res的drawable 放图片资源
layout的activity_main.xml 布局文件
文件夹 作用
mipmap 放应用图标的(就是app的图标)
values 各种细节,比如字体颜色、字符串、风格、尺寸等

关于一些基本的常见方法

我们打开java中的MainActivity
就会看到:



我们来讲解一下这个onCreate以及一些相关的方法

方法名 作用
onCreate 配置界面
onStart 启动界面
onRestart 重新启动
onResume 唤醒界面
onPause 暂停界面
onDestroy 销毁界面
具体操作 操作用到的方法
界面启动 onCreate、onStart、onResume
通过后台,重新运行这个程序 onRestart、onStart、onResume
使用返回键 返回主界面 onPause、onDestory
点击home键 回到主界面 onPause
  • onXxxx这一类方法,是系统在运行app的时候自动调用的方法,
    不需要我们自己调用

  • 如果我们要在app运行的一些特定的时候,做一些特定的事情,那么就需要在对应的onXxxx方法中完成这些事情

关于布局

有两种方式可以实现界面布局:

实现方式 使用场合
xml配置 用于静态文件(资源不用怎么变化)
使用Java代码创建 用于资源需要进行许多变化的时候

xml进行配置:

java代码进行界面布局:

注意:Android开发更倾向于用xml文件配置

布局的种类:

(1)约束布局 ConstraintLayout
(2)线性布局 LinearLayout
(3)相对布局 RelativeLayout
(4)帧布局 FrameLayout 可以重叠
(5)表格布局 TabletLayout GridLayout
(6)绝对布局 AbsoluteLayout

3.实际例子

例子演示结果:


思路分析:

  • 其实是两张图重叠
  • 被划掉其实就是把划过的地方的像素变为透明像素
  • 下面那张图是原图是不用操作的因此用ImageView控件
  • 上面那张图需要被划开,因此是要多次变动的,要写java代码

我们需要先准备两幅图:


husus.jpg
nusus.jpg

第一步.把这两张图复制粘贴到drawable下

图片资源的名字必须全部小写,否则必定报错


第二步.在layout的activity_main.xml中把布局方式改为帧布局

  • 原因是:
    使用这个布局,我们往里面添加控件的时候,会默认把他们放到这块区域的左上角



第三步.添加下方的图片(划开之后显示的图片)

用ImageView控件

  • match_parent表示匹配父类,和父视图一样
  • wrap_content包裹内容,内容多大,这个控件多大
  • 宽高单位为dp,不是px

第四步.加入上方图片,并且要给id

 
  • 其中@+id/表示给这个控件+id

  • 格式:@+id/控件缩写_要做的事情

第五步.在Java的MainActivity的onCreate方法中做文章

       //找到容器里面的图片视图控件
        forground = findViewById(R.id.iv_forground);

        //将需要操作的图片读取出来 Bitmap
        //decodeResource 从工程的资源路径中去生成一张位图(在资源中找)
        //前一个参数getResources()可以获取当前工程的Resources
        // R.drawable.husus后面的参数就是找资源路径中的哪个资源
        //读取出来原图
        orgBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.husus);

        //操作这张图片 用透明色去替换某个位置的颜色
        //setPixel()设置位置点  setPixels()设置很多个
        //不能(不允许)操作原图,得copy一份
        //创建一个和原始图片相同环境的位图
        copyBitmap = Bitmap.createBitmap(orgBitmap.getWidth(),orgBitmap.getHeight(),orgBitmap.getConfig());

        //创建一个Canvas 画布-现实中的画板,构造方法的参数的意思是画在哪里
        canvas = new Canvas(copyBitmap);

        //创建一个画笔(划的过程就是画画的过程
        paint = new Paint();

        //创建一个矩阵,这个demo里其实矩阵没有发挥作用
        matrix = new Matrix();

        //画一幅图,第一个参数的意思:把那副图画上去;矩阵负责控制移动、旋转、翻转
        canvas.drawBitmap(orgBitmap,matrix,paint);

        //显示图片
        forground.setImageBitmap(copyBitmap);

第六步.实现滑动事件onMove

//给前景图片的ImageView添加touch事件
        forground.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                //每当有触摸事件发生,系统就会将这个事件接收,并且回调这个事件
                //获取当前事件
                //得到这个action对象,用action来记录一下,然后判断状态(是拖动、点下去、还是放开)
                int action = motionEvent.getAction();

                //判断状态
                if (action == MotionEvent.ACTION_MOVE) {
                    //移动过程中,要替换触摸点的像素
                    //要获取触摸点的坐标
                    int x = (int)motionEvent.getX();
                    int y = (int)motionEvent.getY();
                    System.out.println("x:"+x+" y:"+y);

                    //替换操作图片的x,y对应的像素
                    //Color.TRANSPARENT就是透明色
                    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;
            }
        });
  • forground.setOnTouchListener其实就是设置触摸事件的监听者,这样设置之后,当触发点击事件时,系统就会回调该方法

第五、六步都写在MainActivity里面

第七步.测试

将自己的手机或者是模拟器连接好后,点击上方的绿色按钮,选择对应的设备即可



4.总结

(1)今天是Android开发学习的第一天,由于很多内容之前并不熟悉,因此需要慢慢消化
(2)第一次写Android,可以很明显地感觉到,乐趣要优于单纯的java,而且总体来说也没有那么的难
(3)图片资源的名字必须全部小写,否则必定报错
(4)需要使用本地模拟器(而非AS自带模拟器的)可以参考其他文章
但是由于其他模拟器改变了一些操作,比如可能没法将程序放到后台
所以尽可能用自己的手机进行测试

你可能感兴趣的:([Android]开发App,你得知道这些1——基础)