android 旋转图片 oom,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

抠图片上的某一角下来

38a513c212ba36f898b802912066c65d.png

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;

}

}

19bff0ffa6844f234df62e676c645140.png

8.3.16 Canvas API详解(Part 1)

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

1.translate(平移)

4dc621df3b01ab68cbc9c85f1823e476.png

2.rotate(旋转)

ba380a1c426a53ffc1df68e06c954f94.png

3.scale(缩放)

09612fb4f6eb47f5c5f583c337d5891e.png

4.skew(倾斜)

93c53c2279281446e8fbae95f9767656.png

Android Matrix 详解

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值