美文网首页
[Android]开发App,你得知道这些1——基础

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

作者: 入梦瞌睡 | 来源:发表于2019-08-26 09:42 被阅读0次

    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

     <ImageView
            android:id="@+id/iv_forground"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:srcCompat="@drawable/husus" />
    
    • 其中@+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——基础

          本文链接:https://www.haomeiwen.com/subject/drjkectx.html