Android 實現圓角ImageView
先上效果圖:
實現方法一:
[java] view plain copy- /**
- * 獲取圓角點陣圖的方法
- *
- * @param bitmap
- * 需要轉化成圓角的點陣圖
- * @param pixels
- * 圓角的度數,數值越大,圓角越大
- * @return 處理後的圓角點陣圖
- */
- public static Bitmap toRoundCornerImage(Bitmap bitmap,
- Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888);
- Canvas canvas = new Canvas(output);
- final
- final Paint paint = new Paint();
- final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
- final RectF rectF = new RectF(rect);
- final float roundPx = pixels;
- // 抗鋸齒
- paint.setAntiAlias(true);
- canvas.drawARGB(0, 0, 0, 0);
- paint.setColor(color);
- canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
- paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
- canvas.drawBitmap(bitmap, rect, rect, paint);
- return output;
- }
實現方法二:
[java] view plain copy
- package com.loopfire.meitaotao.view.roundImageView;
- import com.loopfire.meitaotao.R;
- import android.content.Context;
- import android.content.res.TypedArray;
- import android.graphics.Bitmap;
- import android.graphics.Bitmap.Config;
- import android.graphics.Canvas;
- import android.graphics.Color;
- import android.graphics.Paint;
- import android.graphics.Path;
- import android.graphics.PorterDuff;
- import android.graphics.PorterDuffXfermode;
- import android.graphics.RectF;
- import android.util.AttributeSet;
- import android.widget.ImageView;
- /**
- * 實現圓角image
- *
- * @author Administrator
- *
- */
- public class RoundAngleImageView extends ImageView {
- private Paint paint;
- /**
- * 個人理解是
- *
- * 這兩個都是畫圓的半徑
- */
- private int roundWidth = 20;
- private int roundHeight = 20;
- private Paint paint2;
- public RoundAngleImageView(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- init(context, attrs);
- }
- public RoundAngleImageView(Context context, AttributeSet attrs) {
- super(context, attrs);
- init(context, attrs);
- }
- public RoundAngleImageView(Context context) {
- super(context);
- init(context, null);
- }
- private void init(Context context, AttributeSet attrs) {
- if (attrs != null) {
- TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.RoundAngleImageView);
- roundWidth = a.getDimensionPixelSize(R.styleable.RoundAngleImageView_roundWidth, roundWidth);
- roundHeight = a.getDimensionPixelSize(R.styleable.RoundAngleImageView_roundHeight, roundHeight);
- } else {
- float density = context.getResources().getDisplayMetrics().density;
- roundWidth = (int) (roundWidth * density);
- roundHeight = (int) (roundHeight * density);
- }
- paint = new Paint();
- paint.setColor(Color.WHITE);
- paint.setAntiAlias(true);
- paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT));
- paint2 = new Paint();
- paint2.setXfermode(null);
- }
- @Override
- public void draw(Canvas canvas) {
- Bitmap bitmap = Bitmap.createBitmap(getWidth(), getHeight(), Config.ARGB_8888);
- Canvas canvas2 = new Canvas(bitmap);
- super.draw(canvas2);
- drawLiftUp(canvas2);
- drawLiftDown(canvas2);
- drawRightUp(canvas2);
- drawRightDown(canvas2);
- canvas.drawBitmap(bitmap, 0, 0, paint2);
- bitmap.recycle();
- }
- private void drawLiftUp(Canvas canvas) {
- Path path = new Path();
- path.moveTo(0, roundHeight);
- path.lineTo(0, 0);
- path.lineTo(roundWidth, 0);
- path.arcTo(new RectF(0, 0, roundWidth * 2, roundHeight * 2), -90, -90);
- path.close();
- canvas.drawPath(path, paint);
- }
- private void drawLiftDown(Canvas canvas) {
- Path path = new Path();
- path.moveTo(0, getHeight() - roundHeight);
- path.lineTo(0, getHeight());
- path.lineTo(roundWidth, getHeight());
- path.arcTo(new RectF(0, getHeight() - roundHeight * 2, roundWidth * 2, getHeight()), 90, 90);
- path.close();
- canvas.drawPath(path, paint);
- }
-
相關推薦
Android 實現圓角ImageView
先上效果圖: 實現方法一: [java] view plain copy /** * 獲取圓角點陣圖的方法 &
Android 實現圓角ImageView
先上效果圖:實現方法一:/** * 獲取圓角點陣圖的方法 * * @param bitmap * 需要轉化成圓角的點陣圖 * @param pixels * 圓角的度數,數值越大,圓角越大 * @return 處理後
Android實現圓形Imageview,帶白色邊框
最近做了個圓形Imageview,外面有白色邊框 有需要的同學可以看看,效果如下 附上實現程式碼 RoundImageView: public class RoundImageView
關於Android圓角ImageView的幾種實現方式
在實際的開發中,我們經常會遇到需要圓角ImageView的情況,但是這種ImageView官方是沒有提供的,所以需要我們去自己重寫ImageView來達到圓角的效果,但是實現這種圓角效果其實有幾種不同的實現方式,所以這一篇就對不同的實現方式進行講解,並簡單分析。 一.BitmapShader方式 首先簡
android自定義imageview實現圓角圖片
自定義圖片的屬性,對圖片進行圓角切割 實現效果圖: (1)在activity_main.xml檔案佈局,非常簡單 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:androi
Android自己定義圓角ImageView
play setfill recycle fig wid art app util clear 我們常常看到一些app中能夠顯示圓角圖片。比方qq的聯系人圖標等等,實現圓角圖片一種辦法是直接使用圓角圖片資源,當然假設沒有圓角圖片資源。我們也能夠自己通過程序實現的,以下介
Android開發圓形ImageView實現
radi appcompat con code roi contex draw ttr extends 1、自定義屬性,在value文件夾下新建attrs文件,聲明如下屬性 <declare-styleable name="CircleImageView">
android RoundedBitmapDrawable最簡單方式實現圓角
轉載自原部落格地址 demo <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xm
Android開發--圓角按鈕和繪製直線的實現
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
android shap圓角邊框實現
在drawable資料夾下建立一個shape檔案,在佈局中要設定的控制元件下引入background此檔案就OK <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android=“http://schemas.an
android實現按鈕圓角點選背景、字型顏色都改變
實現圓角按鈕,點選的時候背景和字型的顏色都改變,這裡的實現效果如下:原狀態背景為白色,字型為藍色,當點選的時候背景為藍色,字型為白色。介紹兩種實現方式。1、使用button。2、實現自定義TextView。 1.使用Button首先在drawable下建一個Button
android實現正方形的ImageView、Layout等(即高度適應寬度或者寬度適應高度)
有時候我們希望在一個頁面中水平放置若干個正方形的ImageView,其總寬度為整個螢幕。如果我們設定每個ImageView的高度和者寬度均為若干個dp,因為不知道螢幕尺寸,就可能導致顯示不全或者有剩餘空間。可以通過以下這個方法設定ImageView其為正方形 首先,建立一個
圓角ImageView的幾種實現方法
①自定義View import android.content.Context; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.grap
在xml裡實現圓角的ImageView
在AndroidStudio裡實現圓角的ImageView有2種方法,一個是在xml檔案裡面顯示,一個是在Activity的Java檔案裡實現。這裡我用的是xml方法。我實現的效果圖如下: 程式碼如下: 在draw
不用自定義,ImageView實現圓角的兩種方式
不多廢話,直切主題。 方案一、利用CardView巢狀ImageView實現圓角。具體實現方式見文章《CardView的使用》 方案二、利用Glide的RequestOptions.bitmapTransform來實現,很簡單,具體如下: RoundedCorn
android 實現半個圓角長方形
最近專案上用到了一個需求,實現半個圓角長方形,形狀如下:沒做過,不好整啊,github上溜達一圈先...........沒有,好吧,自己動手豐衣足食。一開始的想法是,實現一個圓角長方形,然後在佈局的時候只顯示半個,但是效果不怎麼樣。後來想到實現單邊框的方法,結合圓角矩形的實現
Android實現button一邊圓角一邊直角
Android中要實現如下圖的效果: 這個要在真機中才能看出效果!! switch_button_left_checked.xml <?xml version="1.0" encoding=
Android 三種方式實現圓形ImageView
所有方式均繼承了ImageView 圓形圖片實現一:BitmapShader package com.open.widget; import android.content.Context; import android.graphics.Bitmap; impor
自定義ImageView實現圓角
package com.electric.view; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Bitmap
關於android 圓角的問題,包括圓角Imageview的顯示問題。
開發中經常會遇到需要圓角的問題。我們解決的途徑無非就是幾種: 1.自定義圓角view。 2.Glide載入圓角。 3.寫drawable的shape檔案來定義圓角資原始檔。 4.控制元件的背景用設計切的圓角圖片替代。 這裡討論情況1,3 遇到的問題,如下: 1.自