Android複習14【高級編程:推薦網址、摳圖片上的某一角下來、Bitmap引起的OOM問題、三個繪圖工具類詳解、畫線條、Canvas API詳解(平移、旋轉、縮放、傾斜)、矩陣詳解】

目   錄

推薦網址

摳圖片上的某一角下來

8.2.2 Bitmap引起的OOM問題

8.3.1 三個繪圖工具類詳解

畫線條

8.3.16 Canvas API詳解(Part 1)

1.translate(平移)

2.rotate(旋轉)

3.scale(縮放)

4.skew(傾斜)

Android Matrix 詳解


推薦網址

【菜鳥教程】8.2.1 Bitmap(位圖)全解析 Part 1
https://www.runoob.com/w3cnote/android-tutorial-bitmap1.html


1.Android自定義控件
https://blog.csdn.net/yuanheng19930119/article/details/88055225

2.自定義控件其實很簡單
https://blog.csdn.net/aigestudio/article/details/41212583?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2

3.Android Matrix 詳解
https://www.jianshu.com/p/5e30db034596

4.android matrix 最全方法詳解與進階
https://blog.csdn.net/cquwentao/article/details/51445269

5.Android動畫
https://blog.csdn.net/zhangbijun1230/article/details/80262359

摳圖片上的某一角下來

 

Bitmap bitmap1 = BitmapFactory.decodeResource(getResources(), R.mipmap.pic_meizi);
Bitmap bitmap2 = Bitmap.createBitmap(bitmap1,100,100,200,200);
img_bg = (ImageView) findViewById(R.id.img_bg);
img_bg.setImageBitmap(bitmap2);

8.2.2 Bitmap引起的OOM問題

https://www.runoob.com/w3cnote/android-tutorial-bitmap2.html

8.3.1 三個繪圖工具類詳解

https://www.runoob.com/w3cnote/android-tutorial-drawable-tool.html

畫線條

【菜鳥教程】8.3.2 繪圖類實戰示例

https://www.runoob.com/w3cnote/android-tutorial-bitmap-demo.html

/**
 * Created by Jay on 2015/10/15 0015.
 */
public class MyView extends View{

    private Paint mPaint;  //繪製線條的Path
    private Path mPath;      //記錄用戶繪製的Path
    private Canvas mCanvas;  //內存中創建的Canvas
    private Bitmap mBitmap;  //緩存繪製的內容

    private int mLastX;
    private int mLastY;

    public MyView(Context context) {
        super(context);
        init();
    }

    public MyView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public MyView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    private void init(){
        mPath = new Path();
        mPaint = new Paint();   //初始化畫筆
        mPaint.setColor(Color.GREEN);
        mPaint.setAntiAlias(true);
        mPaint.setDither(true);
        mPaint.setStyle(Paint.Style.STROKE);
        mPaint.setStrokeJoin(Paint.Join.ROUND); //結合處爲圓角
        mPaint.setStrokeCap(Paint.Cap.ROUND); // 設置轉彎處爲圓角
        mPaint.setStrokeWidth(20);   // 設置畫筆寬度
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        int width = getMeasuredWidth();
        int height = getMeasuredHeight();
        // 初始化bitmap,Canvas
        mBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
        mCanvas = new Canvas(mBitmap);
    }

    //重寫該方法,在這裏繪圖
    @Override
    protected void onDraw(Canvas canvas) {
        drawPath();
        canvas.drawBitmap(mBitmap, 0, 0, null);
    }

    //繪製線條
    private void drawPath(){
        mCanvas.drawPath(mPath, mPaint);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {

        int action = event.getAction();
        int x = (int) event.getX();
        int y = (int) event.getY();

        switch (action)
        {
            case MotionEvent.ACTION_DOWN:
                mLastX = x;
                mLastY = y;
                mPath.moveTo(mLastX, mLastY);
                break;
            case MotionEvent.ACTION_MOVE:
                int dx = Math.abs(x - mLastX);
                int dy = Math.abs(y - mLastY);
                if (dx > 3 || dy > 3)
                    mPath.lineTo(x, y);
                mLastX = x;
                mLastY = y;
                break;
        }

        invalidate();
        return true;
    }
}

 

8.3.16 Canvas API詳解(Part 1)

【菜鳥教程】https://www.runoob.com/w3cnote/android-tutorial-canvas-api1.html

1.translate(平移)

2.rotate(旋轉)

3.scale(縮放)

4.skew(傾斜)

Android Matrix 詳解

https://www.jianshu.com/p/5e30db034596

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章