Android的基本组件和View和ViewGroup介绍

1. Android的基本组件

1.1 Activity
    1.1.1 Activity代表手机的一个屏幕
    1.1.2 一个Android程序由多个Activity组成,即:一个Android程序由多屏内容组成
    1.1.3 Activity相当于一个展板,本身没有可视的内容,你把画(View)贴到展板上就可以展示出来了
  1.2 Service
    1.2.1 不可见的组件
    1.2.2 在后台运行
    1.2.3 为其他组件提供后台服务
    1.2.4 监控其他组件的运行状态
    1.2.5 后台播放音乐
  1.3 BroadcastReceiver:广播消息监听器
    1.3.1 作用:用来监听广播,eg:收短信的广播    往手机推送消息
  1.4 ContentProvider:内容提供者
    1.4.1 帮助不同的应用程序间交换数据,eg:获取通讯录信息
  1.5 Intent和IntentFilter    意图
      Activity、Service、BroadcastReceiver之间通信的载体,传递数据

2. View和ViewGroup简单介绍


   View类似于swing中的JPanel,代表一个空白的矩形区域,Android应用中的绝大部分UI组件都继承于View或其子类
   View还一个重要的子类ViewGroup,它通常作为其它组件的[容器]使
   
   简单来讲View是所有控件的父控件,ViewGroup可以包含其它的View对象,并且是所有布局控件的父类
   Activity相当于一个展板,本身没有可视的内容,你把画(View)贴到展板上就可以展示出来了
   setContentView(view)    

下面使用view来写一个项目工程

首先建立一个工程  然后建立一个项目module 就是工程里面的一个模板 工程下面有这些

安卓工程目录
    模块
        manifests
            仅有一个文件,系统清单文件,相当于web.xml
        java
            放源文件
        res(放系统资源文件,一个很重要的的类R,自动生成,resource的缩写)
            drawable(放图片资源)
            layout(放布局文件)

             values(放常量)

这些介绍完了 然后开始在里面画东西 在Java文件下建一个Java源文件 要继承view类

自定义视图(onDraw)

3.1 颜色四种设置方式
      canvas.drawColor(Color.RED);//系统颜色(Color.RED)

      canvas.drawColor(Color.rgb(100, 150, 200));//rgb
      canvas.drawColor(Color.argb(100, 100, 150, 200));//argb,其中第一参数为透明度
      canvas.drawColor(Color.parseColor("#44E21D"));//16进制

 4.3 画多边形(三角形)
    4.3.1 drawLine方式
    4.3.2 drawPath方式
          Path
            moveTo(float x, float y):将起始点设置到x,y点
            lineTo(float x, float y):从当前点绘制一条线段到x,y点
            reset():清除path设置的所有属性
            close():回到初始化形成封装的曲线
    4.3.3 如果画笔为实心,画线与Path方式的区别
          drawLine=空心,drawPath=实心

public class MyView extends View {//画笔 这里设置画笔的一些属性
    private Paint paint;
    public MyView(Context context) {
        super(context);
        paint = new Paint();
        paint.setColor(Color.BLUE);//画笔颜色
        paint.setStyle(Paint.Style.STROKE);// 空心
      //  paint.setStyle(Style.FILL);//实心
        //paint.setStrokeWidth(1);//设置画笔大小
        paint.setTextSize(50);

    }

    @Override
    protected void onDraw(Canvas canvas) {//画纸 这里开始画自己想要的东西
        super.onDraw(canvas);
        canvas.drawColor(Color.BLUE)//画板背景
       // canvas.drawCircle(200, 100, 100, paint);//画圆
        //canvas.drawRect(100, 200, 200, 400, paint);//画矩形
        //可画任意图形
//        canvas.drawLine(100,100,200,100,paint);//画笔在这个位置画一条线
//        canvas.drawLine(200,100,200,300,paint);//画笔在这个位置画一条线
//        canvas.drawLine(200,300,100,100,paint);//画笔在这个位置画一条线
        canvas.drawText("哈哈",500,500,paint);//画任意文字
        //上传一个图片设置在里面 下面画(显示)出来
//        Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.avatar_15_26006);
//        canvas.drawBitmap(bitmap,200,400,paint);//位图
 //画一个凹字控件
        canvas.drawLine(100,100,200,100,paint);//画笔在这个位置画一条线
        canvas.drawLine(200,100,200,300,paint);//画笔在这个位置画一条线
        canvas.drawLine(200,300,300,300,paint);//画笔在这个位置画一条线canvas.drawLine(100,100,200,100,paint);//画笔在这个位置画一条线
        canvas.drawLine(300,300,300,100,paint);//画笔在这个位置画一条线
        canvas.drawLine(300,100,400,100,paint);//画笔在这个位置画一条线canvas.drawLine(100,100,200,100,paint);//画笔在这个位置画一条线
        canvas.drawLine(400,100,400,400,paint);//画笔在这个位置画一条线
        canvas.drawLine(400,400,100,400,paint);//画笔在这个位置画一条线canvas.drawLine(100,100,200,100,paint);//画笔在这个位置画一条线
        canvas.drawLine(100,400,100,100,paint);//画笔在这个位置画一条线
        //canvas.drawLine(200,300,100,100,paint);//画笔在这个位置画一条线






//这个类继承了AppCompatActivity 直接在下面设置上面那个类就可在界面上展示

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       // setContentView(R.layout.activity_main);
        setContentView(new MyView(this));
    }
}

上面的介绍就是画的图像的具体操作 如图所示:

12

5. 什么时候要子类中通过super再调用父类的方法呢?(重要重要)
   如果父方法中有代码就要如此~如果父方法中有代码就要如此~如果父方法中有代码就要如此
   重要的事情说三遍,例如:onDraw可以不用再重新调用super.onDraw(),因为父方法中一行代码都没有

   注1:其实最简单的办法就是不管三七二十一,都调用super.xxx()方法即可

暂时的就先介绍到这里啦。
 

猜你喜欢

转载自blog.csdn.net/qq_43227109/article/details/83041606
今日推荐