Android實現(xiàn)帶描邊的圓角圖片
利用學過的BitmapShader渲染類,我們來實現(xiàn)一個帶描邊的圓角圖片。
具體實現(xiàn):
用來顯示自定義的繪圖類的布局文件
res/layout/main.xml:
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/frameLayout1" android:orientation="vertical" > </FrameLayout>
打開MainActivity,在文件中創(chuàng)建名為MyView的內(nèi)部類,繼承android.view.View類,并添加構(gòu)造方法和重寫onDraw(Canvas canvas)方法,在里面進行作圖:
在onDraw(Canvas canvas)方法中,首先定義一個畫筆,并設置其使用抗鋸齒功能,然后定義一張背景,然后定義一個要繪制的圓角矩形的區(qū)域,并將畫布在X軸上平移40像素,在Y軸上平移20像素,再繪制一個黑色的2像素的圓角矩形,作為圖片的邊,最后繪制一個使用BitmapShader渲染的圓角矩形圖片,具體代碼如下:
MainActivity:
package com.example.test;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.BitmapShader;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.graphics.Paint.Style;
import android.graphics.Shader.TileMode;
import android.os.Bundle;
import android.view.View;
import android.widget.FrameLayout;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//獲取布局文件中添加的幀布局管理器
FrameLayout fl=(FrameLayout)findViewById(R.id.frameLayout1);
//將自定義的MyView視圖添加到幀布局
fl.addView(new MyView(this));
}
public class MyView extends View{
private float view_width=300;
private float view_height=300;
public MyView(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
Paint paint=new Paint();
paint.setAntiAlias(true);
Bitmap bitmap_bg=BitmapFactory.decodeResource(MainActivity.this.getResources(), R.drawable.backgroud);
canvas.drawBitmap(bitmap_bg, 0, 0,paint);//繪制背景
RectF rect=new RectF(0,0,280,180);
canvas.translate(40, 20);//將畫布在X軸上平移40像素,在Y軸上平移20像素
//為圖片添加描邊
paint.setStyle(Style.STROKE);//設置填充樣式為描邊
paint.setColor(Color.BLACK);//設置顏色為黑色
paint.setStrokeWidth(2);//設置筆觸寬度為2像素
canvas.drawRoundRect(rect, 10, 10, paint);//繪制一個描邊的圓角矩形
paint.setStyle(Style.FILL);//設置填充樣式為填充
Bitmap bm=BitmapFactory.decodeResource(MainActivity.this.getResources(), R.drawable.img1);
//創(chuàng)建一個在水平方向重復,在豎直方向鏡像的BitmapShader對象
BitmapShader bs=new BitmapShader(bm,TileMode.REPEAT,TileMode.MIRROR);
paint.setShader(bs);//設置渲染對象
//繪制一個使用BitmapShader渲染的圓角矩形圖片
canvas.drawRoundRect(rect, 10, 10, paint);
}
}
}
運行效果如圖所示

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android利用Intent啟動和關(guān)閉Activity
這篇文章主要為大家詳細介紹了Android利用Intent啟動和關(guān)閉Activity的相關(guān)操作,感興趣的小伙伴們可以參考一下2016-06-06
Android Parcelable與Serializable詳解及區(qū)別
這篇文章主要介紹了Android Parcelable與Serializable詳解及區(qū)別的相關(guān)資料,需要的朋友可以參考下2017-01-01
Android ViewModel與Lifecycles和LiveData組件用法詳細講解
JetPack是一個開發(fā)組件工具集,他的主要目的是幫助我們編寫出更加簡潔的代碼,并簡化我們的開發(fā)過程。JetPack中的組件有一個特點,它們大部分不依賴于任何Android系統(tǒng)版本,這意味者這些組件通常是定義在AndroidX庫當中的,并且擁有非常好的向下兼容性2023-01-01
android?studio數(shù)據(jù)存儲建立SQLite數(shù)據(jù)庫實現(xiàn)增刪查改
這篇文章主要介紹了vandroid?studio數(shù)據(jù)存儲建立SQLite數(shù)據(jù)庫實現(xiàn)增刪查改,分別使用sqlite3工具和Android代碼的方式建立SQLite數(shù)據(jù)庫,具體內(nèi)容,需要的小伙伴可以參考下面文章得詳細內(nèi)容2021-12-12

