Android入门学习

一、Android的四大基本组件

          1.1Activity
             1.1.1Activity代表手机的一个屏幕
             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之间通信的载体,传递数据

 二、View和ViewGroup介绍

         1,View类似于swing中的JPanel,代表一个空白的矩形区域,Android应用中的绝大部分UI组件都继承于View或其子类
         2,View还一个重要的子类ViewGroup,它通常作为其它组件的[容器]使。简单来讲View是所有控件的父控件,  ViewGroup可以包含其它的View对象,并且是所有布局控件的父类

         3,Activity相当于一个展板,本身没有可视的内容,你把画(View)贴到展板上就可以展示出来了
   Class类MainActivity 设置展示方法setContentView(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进制
  3.2 画板背景
      canvas.drawColor(Color.BLUE)
  3.3 画笔设置
    3.3.1 实心或空心
          paint.setStyle(Style.FILL);//实心
          paint.setStyle(Style.STROKE);// 空心
    3.3.2 粗细
          paint.setStrokeWidth(10)
    3.3.3 抗锯齿
          paint.setAntiAlias(true); 
    3.3.4 颜色设置
          paint.setColor(Color.parseColor("#103864"));   

4. 画图形
  4.1 画圆
      canvas.drawCircle(200, 100, 100, paint)
  4.2 画矩形
      canvas.drawRect(0, 200, 200, 400, paint);
      canvas.drawRect(rect, paint);
      左上角、右下角
  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=实心
  4.5 画文字
      drawText()
      paint.setTextSize(50);// 设置文字大,单位为dp
  4.6 画图
      drawBitmap    位图
      Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.qq);
      注意事项:图片名不能是汉字或空格


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

这里提供一段实用代码 

package com.example.jack_and01;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.view.View;

public class Demo extends View {
    //设置画笔对象属性
    private Paint paint;
    //设置字符串属性
    private String text = "中华人民共和国万岁";
    public Demo(Context context) {
        super(context);
        //初始化画笔paint
        paint = new Paint();
        paint.setColor(Color.GRAY);//设置画笔颜色
        paint.setStyle(Paint.Style.STROKE);//设置画笔为空心
        paint.setStrokeWidth(2);//设置画笔粗细
        paint.setTextSize(90f);//设置字符串尺寸大小
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        //画一个横坐标为300,纵坐标为300,半径为150的圆
        //canvas.drawCircle(300,300,150,paint);

        //使用drawLine() 画出凹字
//        canvas.drawLine(50,50,70,50,paint);//第一笔   横右20 X+20
//        canvas.drawLine(70,50,70,70,paint);//第二笔   竖下20 Y+20
//        canvas.drawLine(70,70,90,70,paint);//第三笔   横右20 X+20
//        canvas.drawLine(90,70,90,50,paint);//第四笔  竖上20 Y-20
//        canvas.drawLine(90,50,110,50,paint);//第五笔 横右20 X+20
//        canvas.drawLine(110,50,110,90,paint);//第六笔 竖下40 Y+40
//        canvas.drawLine(110,90,50,90,paint);//第七笔 横左40 X-20
//        canvas.drawLine(50,90,50,50,paint);//第八笔 竖上40 Y-40
//
//        //使用Path类对象画出凸字
//        Path drawPath = new Path();
//        //移动点位置moveTo()
//        drawPath.moveTo(180,70);
//        //划线位置lineTo()
//        drawPath.lineTo(200,70);
//        drawPath.moveTo(200,70);drawPath.lineTo(200,50);//第二笔 竖上 Y-20
//        drawPath.moveTo(200,50);drawPath.lineTo(220,50);//第三笔 横右 X+20
//        drawPath.moveTo(220,50);drawPath.lineTo(220,70);//第四笔 竖下 Y+20
//        drawPath.moveTo(220,70);drawPath.lineTo(240,70);//第五笔 横右 X+20
//        drawPath.moveTo(240,70);drawPath.lineTo(240,90);//第六笔 竖下 Y+20
//        drawPath.moveTo(240,90);drawPath.lineTo(180,90);//第七笔 横左 X-60
//        drawPath.moveTo(180,90);drawPath.lineTo(180,70);//第八笔 竖上 Y-20
//        canvas.drawPath(drawPath,paint);

//        2. 输出一个字符串“中华人民共和国万岁”,不管字体大小如何修改,始终屏幕水平居中
//        提示:手机屏幕宽、字符串的宽度
        //字符串宽度
        float strWidth = paint.measureText(text);
        //getWidth()屏幕宽度   getHeight()屏幕高度
        float x = (this.getWidth()-strWidth)/2;//(屏幕宽度-字符串宽度)/2获得中间位置宽
        canvas.drawText(text,x,this.getHeight()/2,paint);
    }
}

开始入门学习吧!!

                                                                                                                                                                    --------Giraffe_it---------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值