安卓开发day1小程序初体验2019-08-25

目的:

初略了解和体验使用android studio编写安卓小程序,明白各个编辑区的功能事项,学习一些新的知识点,控件、界面布局、xml等待。

技术:

1.程序目录对应的功能:
image.png

2.界面及其生命周期:

什么是Activity? 就是一个界面
管理一个界面从创建到运行到结束的整个过程(生命周期):

过程 对应方法
配置界面 onCreate 这个方法是系统调用的(自己不要用)
启动界面 onStart
重新启动 onRestart
唤醒界面 onResume
暂停界面 onPause
销毁界面 onDestroy

对应接口的调用顺序:

 * 界面启动
 *    onCreate
 *    onStart
 *    onResume
 *
 * 点击home键 回到主界面
 *    onPause
 *
 * 通过后台 重新运行这个程序
 *    onRestart
 *    onStart
 *    onResume
 *
 * 使用返回键 返回到主界面
 *    onPause
 *    onDestroy

3.界面布局:

使用两种方法界面布局

  • 1.xml配置
  • 2.使用java代码创建

xml:解耦 安卓推荐使用 (关系不那么紧密)
什么时候需要用代码兴就 什么时候使用xml配置
如果添加到控件是静态的(变化的东西不多) 选择xml
如果需要灵活的操作这个控件 选择代码创建

使用java代码来布局界面

通过添加id号来唯一标识某一个控件 或者 组件
image.png
image.png

布局:这么多控件如何布局

布局选择 方法
1.约束布局 ConstraintLayout
2.线性布局 LinearLayout
3.相对布局 RelativeLayout
4.帧布局 FrameLayout
5.表格布局 TableLayout GridLayout
6.绝对布局 AbsoluteLayout

4.控件:

/**
 * 控件 = 一个视图 = 看得到的视图
 * 1.基础阶段:学习系统自带的控件 熟悉
 *   TextView EditText Button ImageView LIstView
 *   RecycleView ScrollView ViewPager ProgressBar
 * 2.高级阶段:自定义
 *   1.在已有的控件基础上加自己的功能 继承
 *   2.自己画

 * 控件的尺寸:
 * 父视图:
 * 子视图:
 * 将一个控件添加到一个容器中,控件就是容器的子视图
 * 容器就是控件的父视图
 * 1.match_parent 和父类一样大
 * 2.wrap_parent  包裹内容 和控件的内容一样大
 * 3.20dp         具体的尺寸

 * 一个控件就是一个类的具体属性
 * ImageView:
 *    属性
 *    方法
 */

5.程序或者某个UI模块都可以有自己的样式style 可以在values\styles.xml里面设置

image.png

6.通过代码发送来创建控件:

 public void code(){
        //通过代码来布局界面
        //1.找到一个容器 xxlayout
        FrameLayout contrainer = new FrameLayout(this);

        //3.创建一个子视图
        //创建ImageView显示图片
        ImageView backgroundImageView = new ImageView(this);
        //设置属性
        backgroundImageView.setBackgroundColor(Color.GREEN);
        //添加到容器里面
        contrainer.addView(backgroundImageView,200,200);

        //2.设置当前界面的内容视图为这个容器
        setContentView(contrainer);
    }

实际编写:

  • 使用透明色替换原有对应的像素
  • 立即获得替换后的图片 将图片显示在ImageView上
1.创建控件:
image.png
2.MainActivity中实现:
public class MainActivity extends AppCompatActivity {

    ImageView forground;
    Bitmap orgBitmap;
    Bitmap copyBitmap;
    Canvas canvas;
    Paint paint;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
      
        //MainActivity中配置界⾯面

        //将需要操作1图片读取出来  Bitmap
     
        //创建副本

        //图片操作

        //给前景图片添加touch事件
      
        });

    }

MainActivity中配置界⾯面

  setContentView(R.layout.activity_main); //配置界面

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

读取原图

       //将需要操作1图片读取出来  Bitmap
        //BitmapFactory 用于管理位图
        //decodeResource 从工程的资源路径中生成一张位图
        //getResources() 获取资源路径
        //R.drawable.b   访问资源路径下 drawable里面的一个文件
        orgBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.b);

创建副本

        //操作这张图片 用透明色去替换某个位置的颜色
        //不能操作原图  只能copy一份
        //参加一个和原始图片相同环境的空位图
        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(0.5f,0.5f);
//        matrix.setScale(-1f,1f);
//        matrix.postTranslate(orgBitmap.getWidth(),0);

        //画一幅图
        canvas.drawBitmap(orgBitmap,matrix,paint);

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

添加触摸事件

  //当有触摸事件发生 系统就会将这个事件接收并返回这个事件
        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);
                        }

                    }
                    //canvas.drawBitmap(orgBitmap,new Matrix(),paint);
                    forground.setImageBitmap(copyBitmap);
                }
                return true;
            }
实际问题:

1.⼿手画出屏幕 x,y超出图⽚片尺⼨寸 越界就 闪退

  1. 触摸点位置和划线位置不不⼀一致 图⽚片尺⼨寸和屏幕尺⼨寸不不匹配

心得:

懵逼了一天,虽然东哥基本上把与今天讲的知识点相关的都讲了,但是我还是只懂那么一点,当编程时却不知道个所以然,只能默默跟着敲代码,哎,难受。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,589评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,615评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,933评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,976评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,999评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,775评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,474评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,359评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,854评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,007评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,146评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,826评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,484评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,029评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,153评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,420评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,107评论 2 356

推荐阅读更多精彩内容