導航:首頁 > 操作系統 > androidimage圓角

androidimage圓角

發布時間:2022-07-15 09:12:28

『壹』 如何給imageview設置圓角

android設置imageview圓角主要使用的是shape.xml文件,對四個角的角度進行設置,只要再imageview的background的屬性上加上shape文件即可達到效果,示例如下:
shapeyuanjiao3.xml:
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >

<!-- 填充的顏色 -->
<solid android:color="#0000FF" />
<!-- 設置按鈕的四個角為弧形 -->
<!-- android:radius 弧形的半徑 -->
<corners android:topLeftRadius="@dimen/RoundedAmplitude" android:topRightRadius="@dimen/RoundedAmplitude"/>

<gradient
android:angle="270"
android:centerColor="#0000FF"
android:endColor="#0000FF"
android:startColor="#0000FF" />

</shape>
imageview、textview等的android:background="@drawable/shapeyuanjiao3"屬性,設置尺寸、圓角(可以定製單獨顯示哪個角需要圓角)。可以參考我的csdn博客的這篇文章:http://blog.csdn.net/nihaoqiulinhe/article/details/46833819

『貳』 Android studio圓角矩形的布局如何設計

你可以使用shape定義一個圓角矩形,並將其作為布局的背景即可。
圓角矩形的shape代碼如下:
//定義四個圓角 文件名shape_round_corner
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#ff00" />
<corners android:topLeftRadius="12dp"
android:topRightRadius="12dp"
android:bottomRightRadius="12dp"
android:bottomLeftRadius="12dp"/>
<stroke android:width="1dp" android:color="#ff0" />
</shape>
設置背景代碼如下:
<LinearLayout
android:layout_width="300dp"
android:layout_height="300dp"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:alpha="0.8"
android:background="@drawable/shape_round_corner">
</LinearLayout>

『叄』 android繪制圓角矩形為什麼圓角邊粗了

用shapedrawable畫一個圓角矩形作為按鈕的background,但是圓角的地方總是有點粗,和直接用xml做出來的背景不一樣
float[]
outerR = new float[] { 20f, 20f, 20f, 20f, 0, 0, 0, 0 };
Shape shape = new
RoundRectShape(outerR, null, null);
image.setBackgroundDrawable(new
CustomShapeDrawable(shape,0xffea0000));

class CustomShapeDrawable extends
ShapeDrawable {
int color ;
public CustomShapeDrawable(Shape s,int
color) {
super(s);
this.color =
color;
}
@Override
protected void onDraw(Shape shape, Canvas
canvas, Paint paint) {

paint.setStrokeJoin(Join.ROUND);

paint.setDither(true);
paint.setAntiAlias(true);

paint.setStyle(Style.STROKE);
paint.setColor(0xffea0000);

paint.setStrokeWidth(4f);
shape.draw(canvas, paint);

}
}
把paint.setStrokeJoin這行去掉再試試

『肆』 android listview 如何實現這種圓角和按下的效果,送分題又來了,求高手快來拿分

靠布局和一點小邏輯就可以做到,具體就是列表正文其實左右有個Margin值,而上面的透明覆蓋層,左右是抵滿的,這樣一來就很簡單了。


可以看我附件的demo,顏色我沒調好,我很不擅長調顏色。但是效果差不多的。

『伍』 android 怎麼畫一個圓角矩形

有兩種方法設置:

一:定義一個xml布局文件,分別設置四個角
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 背景色 -->
<solid android:color="#FEBB66"/>
<!-- 邊框色 -->
<stroke android:width="0.3dip" android:color="#ffffff" />
<!-- 邊角:設置圓角大小 -->
<corners android:topLeftRadius="5dp"
android:topRightRadius="5dp"
android:bottomRightRadius="5dp"
android:bottomLeftRadius="5dp"/>
</shape>
二:把上面設置邊角的標簽屬性改成如下
<!-- 邊角:設置圓角大小 -->
<corners android:radius="5dp"/>

以上兩種效果是一樣的。然後引用這個布局文件就好

『陸』 Android學習之 圓角邊框的幾種實現方式

第一種,自定義view
第二種,xml裡面使用shape 屬性
第三種,直接使用 http://www.it399.com/imageRound 生成原角圖片作為背景,望採納,謝謝!

『柒』 android自定義的ImageButton怎樣再讓它是個圓角的

跟普通的按鈕一樣使用,定義,activity中調用資源顯示,添加監聽器,主要區別就是這個按鈕要添加一個圖片資源。這個可以在xml文件中解決android:src=「@drawable/fdafsafdsaf」

『捌』 圓角關於圓角imageview,下面這種效果怎麼實現

android 自定義圓角ImageView以及鋸齒的處理
看到很多人開發過程中要使用圓角圖片時,解決方法有:

1.重新繪制一張圖片

2.通過布局來配置

3.通過重寫View來實現

其中1,2在這里就不講了,重點講講方法三的實現。

實現一:通過截取畫布一個圓形區域與圖片的相交部分進行繪制,缺點:鋸齒明顯,設置Paint,Canvas抗鋸齒無效。
package com.open.circleimageview.widget;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PaintFlagsDrawFilter;
import android.graphics.Path;
import android.graphics.Rect;
import android.graphics.Region;
import android.util.AttributeSet;
import android.view.View;

public class CircleImageViewA extends View {

public CircleImageViewA(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}

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

public CircleImageViewA(Context context) {
super(context);
}

private Bitmap bitmap;
private Rect bitmapRect=new Rect();
private PaintFlagsDrawFilter pdf=new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG);
private Paint paint = new Paint();
{
paint.setStyle(Paint.Style.STROKE);
paint.setFlags(Paint.ANTI_ALIAS_FLAG);
paint.setAntiAlias(true);// 設置畫筆的鋸齒效果。 true是去除,大家一看效果就明白了
}
private Path mPath=new Path();

public void setImageBitmap(Bitmap bitmap)
{
this.bitmap=bitmap;
}
@Override
protected void onDraw(Canvas canvas) {

if(null==bitmap)
{
return;
}
bitmapRect.set(0, 0, getWidth(), getHeight());
canvas.save();
canvas.setDrawFilter(pdf);
mPath.reset();
canvas.clipPath(mPath); // makes the clip empty
mPath.addCircle(getWidth()/2, getWidth()/2, getHeight()/2, Path.Direction.CCW);
canvas.clipPath(mPath, Region.Op.REPLACE);
canvas.drawBitmap(bitmap, null, bitmapRect, paint);
canvas.restore();
}
}

實現二:通過PorterDuffXfermode 方式(注意要設置硬體加速,否則部分機子無效),優點:鋸齒基本沒有
package com.open.circleimageview.widget;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PaintFlagsDrawFilter;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;

public class CircleImageViewB extends View {

public CircleImageViewB(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}

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

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

private Bitmap bitmap;
private Rect bitmapRect=new Rect();
private PaintFlagsDrawFilter pdf=new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG);
private Paint paint = new Paint();
{
paint.setStyle(Paint.Style.STROKE);
paint.setFlags(Paint.ANTI_ALIAS_FLAG);
paint.setAntiAlias(true);// 設置畫筆的鋸齒效果。 true是去除,大家一看效果就明白了
}
private Bitmap mDstB=null;
private PorterDuffXfermode xfermode=new PorterDuffXfermode(PorterDuff.Mode.MULTIPLY);

private void init()
{
try {
if(android.os.Build.VERSION.SDK_INT>=11)
{
setLayerType(LAYER_TYPE_SOFTWARE, null);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void setImageBitmap(Bitmap bitmap)
{
this.bitmap=bitmap;
}

private Bitmap makeDst(int w, int h)
{
Bitmap bm = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(bm);
Paint p = new Paint(Paint.ANTI_ALIAS_FLAG);
p.setColor(Color.parseColor("#ffffffff"));
c.drawOval(new RectF(0, 0, w, h), p);
return bm;
}
@Override
protected void onDraw(Canvas canvas) {

if(null==bitmap)
{
return;
}
if(null==mDstB)
{
mDstB=makeDst(getWidth(), getHeight());
}

bitmapRect.set(0, 0, getWidth(), getHeight());
canvas.save();
canvas.setDrawFilter(pdf);
canvas.drawBitmap(mDstB, 0, 0, paint);
paint.setXfermode(xfermode);
canvas.drawBitmap(bitmap, null, bitmapRect, paint);
paint.setXfermode(null);
canvas.restore();
}
}

『玖』 android glide 怎麼設置只有一個圓角

附錄1簡單介紹了android開源的圖片載入框架。在實際的開發中,雖然Glide解決了快速載入圖片的問題,但還有一個問題懸而未決:比如用戶的頭像,往往用戶的頭像是從伺服器端讀出的一個普通矩形圖片,但是現在的設計一般要求在APP端的用戶頭像顯示成圓形頭像,那麼此時雖然Glide可以載入,但載入出來的是一個矩形,如果要Glide在載入過程中就把矩形圖轉換成圓形的,則需要在Glide之上引入一個開源項目:glide-transformations
glide-transformations在github上的項目主頁是:https://github.com/wasabeef/glide-transformations
寫一個例子說明。

[java] view plain
package zhangphil.app;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;

import com.bumptech.glide.Glide;

import jp.wasabeef.glide.transformations.BlurTransformation;
import jp.wasabeef.glide.transformations.CropCircleTransformation;
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;

public class MainActivity extends AppCompatActivity {

//我csdn博客頭像
String url = "http://avatar.csdn.net/9/7/A/1_zhangphil.jpg";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

//原圖,是我博客的頭像
ImageView image1 = (ImageView) findViewById(R.id.image1);
Glide.with(this).load(url).crossFade(1000).into(image1);

//原圖 -> 圓圖
ImageView image2 = (ImageView) findViewById(R.id.image2);
Glide.with(this).load(url).bitmapTransform(new CropCircleTransformation(this)).crossFade(1000).into(image2);

//原圖的毛玻璃、高斯模糊效果
ImageView image3 = (ImageView) findViewById(R.id.image3);
Glide.with(this).load(url).bitmapTransform(new BlurTransformation(this, 25)).crossFade(1000).into(image3);

//原圖基礎上復合變換成圓圖 +毛玻璃(高斯模糊)
ImageView image4 = (ImageView) findViewById(R.id.image4);
Glide.with(this).load(url).bitmapTransform(new BlurTransformation(this, 25), new CropCircleTransformation(this)).crossFade(1000).into(image4);

//原圖處理成圓角,如果是四周都是圓角則是RoundedCornersTransformation.CornerType.ALL
ImageView image5 = (ImageView) findViewById(R.id.image5);
Glide.with(this).load(url).bitmapTransform(new RoundedCornersTransformation(this, 30, 0, RoundedCornersTransformation.CornerType.BOTTOM)).crossFade(1000).into(image5);
}
}

布局則比較簡單,是一個垂直方向的線性布局布局了5個ImageView,不再贅述。

代碼運行結果。

附錄:

1,《Android圖片載入與緩存開源框架:Android Glide》鏈接:http://blog.csdn.net/zhangphil/article/details/45535693

『拾』 android 如何重寫imageview 讓圖片有圓角效果

android 自定義圓角ImageView以及鋸齒的處理

看到很多人開發過程中要使用圓角圖片時,解決方法有:


1.重新繪制一張圖片


2.通過布局來配置


3.通過重寫View來實現


其中1,2在這里就不講了,重點講講方法三的實現。



實現一:通過截取畫布一個圓形區域與圖片的相交部分進行繪制,缺點:鋸齒明顯,設置Paint,Canvas抗鋸齒無效。

package com.open.circleimageview.widget;


import android.content.Context;

import android.graphics.Bitmap;

import android.graphics.Canvas;

import android.graphics.Paint;

import android.graphics.PaintFlagsDrawFilter;

import android.graphics.Path;

import android.graphics.Rect;

import android.graphics.Region;

import android.util.AttributeSet;

import android.view.View;


public class CircleImageViewA extends View {


public CircleImageViewA(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

}


public CircleImageViewA(Context context, AttributeSet attrs) {

super(context, attrs);

}


public CircleImageViewA(Context context) {

super(context);

}


private Bitmap bitmap;

private Rect bitmapRect=new Rect();

private PaintFlagsDrawFilter pdf=new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG);

private Paint paint = new Paint();

{

paint.setStyle(Paint.Style.STROKE);

paint.setFlags(Paint.ANTI_ALIAS_FLAG);

paint.setAntiAlias(true);// 設置畫筆的鋸齒效果。 true是去除,大家一看效果就明白了

}

private Path mPath=new Path();

public void setImageBitmap(Bitmap bitmap)

{

this.bitmap=bitmap;

}

@Override

protected void onDraw(Canvas canvas) {


if(null==bitmap)

{

return;

}

bitmapRect.set(0, 0, getWidth(), getHeight());

canvas.save();

canvas.setDrawFilter(pdf);

mPath.reset();

canvas.clipPath(mPath); // makes the clip empty

mPath.addCircle(getWidth()/2, getWidth()/2, getHeight()/2, Path.Direction.CCW);

canvas.clipPath(mPath, Region.Op.REPLACE);

canvas.drawBitmap(bitmap, null, bitmapRect, paint);

canvas.restore();

}

}


實現二:通過PorterDuffXfermode 方式(注意要設置硬體加速,否則部分機子無效),優點:鋸齒基本沒有

package com.open.circleimageview.widget;


import android.content.Context;

import android.graphics.Bitmap;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

import android.graphics.PaintFlagsDrawFilter;

import android.graphics.PorterDuff;

import android.graphics.PorterDuffXfermode;

import android.graphics.Rect;

import android.graphics.RectF;

import android.util.AttributeSet;

import android.view.View;


public class CircleImageViewB extends View {


public CircleImageViewB(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

init();

}


public CircleImageViewB(Context context, AttributeSet attrs) {

super(context, attrs);

init();

}


public CircleImageViewB(Context context) {

super(context);

init();

}


private Bitmap bitmap;

private Rect bitmapRect=new Rect();

private PaintFlagsDrawFilter pdf=new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG);

private Paint paint = new Paint();

{

paint.setStyle(Paint.Style.STROKE);

paint.setFlags(Paint.ANTI_ALIAS_FLAG);

paint.setAntiAlias(true);// 設置畫筆的鋸齒效果。 true是去除,大家一看效果就明白了

}

private Bitmap mDstB=null;

private PorterDuffXfermode xfermode=new PorterDuffXfermode(PorterDuff.Mode.MULTIPLY);

private void init()

{

try {

if(android.os.Build.VERSION.SDK_INT>=11)

{

setLayerType(LAYER_TYPE_SOFTWARE, null);

}

} catch (Exception e) {

e.printStackTrace();

}

}

public void setImageBitmap(Bitmap bitmap)

{

this.bitmap=bitmap;

}


private Bitmap makeDst(int w, int h)

{

Bitmap bm = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);

Canvas c = new Canvas(bm);

Paint p = new Paint(Paint.ANTI_ALIAS_FLAG);

p.setColor(Color.parseColor("#ffffffff"));

c.drawOval(new RectF(0, 0, w, h), p);

return bm;

}

@Override

protected void onDraw(Canvas canvas) {


if(null==bitmap)

{

return;

}

if(null==mDstB)

{

mDstB=makeDst(getWidth(), getHeight());

}


bitmapRect.set(0, 0, getWidth(), getHeight());

canvas.save();

canvas.setDrawFilter(pdf);

canvas.drawBitmap(mDstB, 0, 0, paint);

paint.setXfermode(xfermode);

canvas.drawBitmap(bitmap, null, bitmapRect, paint);

paint.setXfermode(null);

canvas.restore();

}

}


閱讀全文

與androidimage圓角相關的資料

熱點內容
安卓手機如何打開fr3文件 瀏覽:741
壓縮袋8絲和14絲是什麼意思 瀏覽:645
程序員大咖java 瀏覽:66
蘋果手機文檔安卓上怎麼打開 瀏覽:527
如何做淘寶代理伺服器 瀏覽:664
gz壓縮文件夾 瀏覽:179
字母h從右往左跑的c語言編程 瀏覽:127
安卓手機如何擁有蘋果手機橫條 瀏覽:765
業余編程語言哪個好學 瀏覽:137
按照文件夾分個壓縮 瀏覽:104
航空工業出版社單片機原理及應用 瀏覽:758
如何在電信app上綁定親情號 瀏覽:376
安卓的怎麼用原相機拍月亮 瀏覽:805
配音秀為什麼顯示伺服器去配音了 瀏覽:755
c盤清理壓縮舊文件 瀏覽:325
app怎麼交付 瀏覽:343
圖蟲app怎麼才能轉到金幣 瀏覽:175
如何做徵文app 瀏覽:446
用什麼app管理斐訊 瀏覽:169
安卓如何下載寶可夢劍盾 瀏覽:166