-
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之间通信的载体,传递数据 -
View和ViewGroup介绍
View类似于swing中的JPanel,代表一个空白的矩形区域,Android应用中的绝大部分UI组件都继承于View或其子类
View还一个重要的子类ViewGroup,它通常作为其它组件的[容器]使简单来讲View是所有控件的父控件,ViewGroup可以包含其它的View对象,并且是所有布局控件的父类
Activity相当于一个展板,本身没有可视的内容,你把画(View)贴到展板上就可以展示出来了
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.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);
注意事项:图片名不能是汉字或空格 -
什么时候要子类中通过super再调用父类的方法呢?(重要重要)
如果父方法中有代码就要如此~如果父方法中有代码就要如此~如果父方法中有代码就要如此
重要的事情说三遍,例如:onDraw可以不用再重新调用super.onDraw(),因为父方法中一行代码都没有
package com.example.t216_a01;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;
public class myview extends View {
private Paint paint;
public myview(Context context) {
super(context);
paint = new Paint();
paint.setColor(Color.RED);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(1);
paint.setTextSize(50);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//圆
// canvas.drawCircle(100,100,50,paint);
//矩形
// canvas.drawRect(50,100,300,200,paint);
//三角形
// canvas.drawLine(100,100,100,300,paint);
// canvas.drawLine(100,300,300,300,paint);
// canvas.drawLine(300,300,100,100,paint);
// 文字
// canvas.drawText("holle an!",100,100,paint);
// 图
// Bitmap bitmap= BitmapFactory.decodeResource(getResources(),R.drawable.dog);
// canvas.drawBitmap(bitmap,300,300,paint);
//凸
// canvas.drawLine(100,200,200,200,paint);
// canvas.drawLine(200,200,200,100,paint);
// canvas.drawLine(200,100,300,100,paint);
// canvas.drawLine(300,100,300,200,paint);
// canvas.drawLine(300,200,400,200,paint);
// canvas.drawLine(400,200,400,400,paint);
// canvas.drawLine(400,400,100,400,paint);
// canvas.drawLine(100,400,100,200,paint);
// 凹
// canvas.drawLine(500,200,600,200,paint);
// canvas.drawLine(600,200,600,300,paint);
// canvas.drawLine(600,300,700,300,paint);
// canvas.drawLine(700,300,700,200,paint);
// canvas.drawLine(700,200,800,200,paint);
// canvas.drawLine(800,200,800,400,paint);
// canvas.drawLine(800,400,500,400,paint);
// canvas.drawLine(500,400,500,200,paint);
}
}
然后需要一个MainActivity类
package com.example.t216_a01;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main);
setContentView(new myview(this));
}
}
最后配置一下xml文件
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
配置好了就能运行项目了。