1. 程式人生 > >2、 Android view與viewgroup

2、 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)

  3. 自定義檢視(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(),因為父方法中一行程式碼都沒有

    注1:其實最簡單的辦法就是不管三七二十一,都呼叫super.xxx()方法即可

安卓工程目錄 模組 manifests 僅有一個檔案,系統清單檔案,相當於web.xml java 放原始檔 res(放系統資原始檔,一個很重要的的類R,自動生成,resource的縮寫) drawable(放圖片資源) layout(放佈局檔案)

dp(密度,相當於width中的百分比) sp(密度,相當於width中的的數值xxx.px)

解決問題 Error:Execution failed for task ‘:app:preDebugAndroidTestBuild’. > Conflict with dependency 'com.and https://blog.csdn.net/fighting_2017/article/details/80244982

package com.example.android02;

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

public class MyView extends View {
    private Paint paint;
    private  String text="中華人民共和國萬歲";
    public MyView(Context context) {
        super(context);
        paint=new Paint();
        paint.setColor(Color.RED);//顏色
        //paint.setStyle(Paint.Style.FILL);//實心
        paint.setStyle(Paint.Style.STROKE);//空心
        paint.setStrokeWidth(1);//粗細
        paint.setTextSize(30);//字型


    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
      //  canvas.drawCircle(200,200,100,paint);//畫圓
       // canvas.drawRect(100,100,300,200,paint);//畫矩形
    /*    canvas.drawLine(100,100,200,100,paint);
        canvas.drawLine(200,100,100,300,paint);
        canvas.drawLine(100,300,100,100,paint);*///三角行
       // canvas.drawText("hello",100,100,paint);//文字
       // Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.qq);//畫圖
      // canvas.drawBitmap();

        canvas.drawLine(100,100,100,300,paint);
        canvas.drawLine(100,100,200,100,paint);
        canvas.drawLine(200,100,200,200,paint);
        canvas.drawLine(100,100,100,300,paint);
        canvas.drawLine(100,300,400,300,paint);
        canvas.drawLine(200,200,300,200,paint);
        canvas.drawLine(100,100,100,300,paint);
        canvas.drawLine(300,100,300,200,paint);
        canvas.drawLine(300,100,400,100,paint);
        canvas.drawLine(400,100,400,300,paint);   //凹

       /* Path path=new Path();
        path.moveTo(100,100);
        path.lineTo(100,200);
        path.moveTo(100,100);
        path.lineTo(150,100);
        path.moveTo(150,100);
        path.lineTo(150,200);
        path.moveTo(100,200);
        path.lineTo(30,200);
        path.moveTo(150,200);
        path.lineTo(230,200);
        path.moveTo(230,200);
        path.lineTo(230,400);
        path.moveTo(30,200);
        path.lineTo(30,400);
        path.moveTo(30,400);
        path.lineTo(230,400);
        canvas.drawPath(path,paint);*/   //凸

/*        float t=paint.measureText(text);
        int width = this.getWidth();
        int height = this.getHeight();
        float f=(width-t)/2;
        canvas.drawText(text,f,height/2,paint);*/












    }
}