Android 实现切圆图作为头像使用实例

时间:2021-05-21

Android 切圆图

效果图如下:

MyView 类

public class MyView extends View { Bitmap bmp; Paint paint = new Paint(); public MyView(Context context) { super(context); } public MyView(Context context, AttributeSet attrs) { super(context, attrs); bmp = BitmapFactory.decodeResource(getResources(), R.mipmap.c); src = new RectF(bmp.getWidth() / 2 - 50, bmp.getHeight() / 2 - 50, bmp.getWidth() / 2 + 50, bmp.getHeight() / 2 + 50); dst = new Rect(200, 200, 400, 400); paint.setAntiAlias(true); paint.setDither(true); Shader shaer = new BitmapShader(bmp, Shader.TileMode.MIRROR, Shader.TileMode.REPEAT); paint.setShader(shaer); } private RectF src = null; private Rect dst = null; @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //绘制Bitmap Matrix m = new Matrix(); //每次set都会重置矩形 m.setRotate(90, bmp.getWidth() / 2, bmp.getHeight() / 2); m.postTranslate(100, 100); m.preScale(0.5f, 0.5f, bmp.getWidth() / 2, bmp.getHeight() / 2); //错切 m.postSkew(0.3f, 0.3f); // canvas.drawBitmap(bmp, m, null); // canvas.drawBitmap(bmp, src, dst, null); //拿view的高宽 canvas.drawArc(src, 100, 270, true, paint); }}

MainActivity 类

public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }}

xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.administrator.lesson12_drawbitmap.MainActivity"> <com.example.administrator.lesson12_drawbitmap.MyView android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章