Android Day22

今天正式开始进入安卓开发,编写的是刮图片demo

内容

ⅠMainActivity里配置

Ⅱ在xml文件中配置

具体内容

ⅠMainActivity里配置

1.什么是Activity - 一个界面
管理一个界面从创建到运行到结束的整个过程 / 生命周期
配置界面 onCreate 这个方法是系统调用的
启动界面 start
重新启动 restart
暂停界面 pause
唤醒界面 resume
销毁界面 destroy

(1)界面启动
onCreate
onStart
onResume

(2)点击home键 回到主界面
onPause

(3)通过后台 重新运行这个程序
onRestart
onStart
onResume

(4)使用返回键 返回到主界面
onPause
onDestroy
具体代码如下:

@Override
//界面启动 展现
protected void onStart() {
    super.onStart();
    System.out.println("onStart");
}

@Override
//重新启动一个界面
protected void onRestart() {
    super.onRestart();
    System.out.println("onRestart");
}

@Override
//恢复界面 调出后台运行到前台
protected void onResume() {
    super.onResume();
    System.out.println("onResume");
}

@Override
//暂停节目 界面切换
protected void onPause() {
    super.onPause();
    System.out.println("onPause");
}

@Override
//界面销毁
protected void onDestroy() {
    super.onDestroy();
    System.out.println("onDestroy");
}

3.
程序文件介绍

Ⅱ在xml文件中配置

4.在MainActivity中配置

public class MainActivity extends AppCompatActivity {
ImageView forground;
Canvas canvas;
Bitmap orgBitmap;
Paint paint;
Matrix matrix;
Bitmap copyBitmap;

@Override
//创建一个界面 界面如何布局
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //配置界面
    setContentView(R.layout.activity_main);

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

    /**将需要操作的图片读取出来 Bitmap
     BitMapFactory  用于管理位图
     decodeResource 从工程的资源路径中去生成一张位图
     getResources() 获取工程的资源
     R.drawble.fr   访问子怨怒惊吓 drawble里面的一个文件名为fr的资源*/
      orgBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.p1);

    //操作这张图片 用透明色去替换某个位置的颜色
    //不能操作原图 只能copy一份
      copyBitmap = Bitmap.createBitmap(orgBitmap.getWidth(), orgBitmap.getHeight(), orgBitmap.getConfig());

    //创建一个Canvas 画布-相当于画板
    canvas = new Canvas(copyBitmap);

    //创建一个画笔
    paint = new Paint();

    //创建一个矩阵
      matrix = new Matrix();
    //旋转图片
    //matrix.setRotate(90,240,400);
    //平移
    //matrix.setTranslate(100,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();

                //替换xy对应的像素
                for (int i = -8; i < 8; i++) {
                    for (int j = -8; j < 8; j++) {
                copyBitmap.setPixel(x+i, y+i, Color.TRANSPARENT);
                    }
                }


                forground.setImageBitmap(copyBitmap);
            }
            return true;
        }
    });
}

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

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

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

1.(1)控件 = 视图(看得到的都是视图)
基础阶段 学习系统自带的控件
TextView EditText Button ImageView ListView
RecycleView ScrollView ViewPager ProgressBar
Switch
(2)高级阶段 自定义控件
①在已有的控件基础上加上自己的功能
②自己画
(3)一个控件就是一个类的具体对象
ImageView
属性
方法
用java代码配置
通过添加id号可以唯一标识某一个控件 或者 组件(容器)
设置为 android:id="@+id/fi_main"
2.ImageView控件实现高度宽度的匹配、导入图片以及设置id号




你可能感兴趣的:(Android Day22)