android 设置边框圆角

public static Bitmap toRoundCorner(Bitmap bitmap, int pixels) {

Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888);  
        Canvas canvas = new Canvas(output);  
  
        final int color = 0xff424242;  
        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;

}

当我们需要圆角的时候,调用这个方法,第一个参数是传入需要转化成圆角的图片,第二个参数是圆角的度数,数值越大,圆角越大

下面兴趣个例子,我有一个LinearLayout,我想把它的背景图片设置成圆角

布局文件main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout"
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    >
</LinearLayout>

package com.test.demo;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.LinearLayout;

public class MyActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

//        Drawable drawable = getResources().getDrawable(R.drawable.bg);
//        BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable;
//        Bitmap bitmap = bitmapDrawable.getBitmap();
        
        LinearLayout layout = (LinearLayout) findViewById(R.id.layout);
        Drawable drawable = getResources().getDrawable(R.drawable.bg);
        BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable;
        Bitmap bitmap = bitmapDrawable.getBitmap();
        
        BitmapDrawable bbb = new BitmapDrawable(toRoundCorner(bitmap, 30));
        layout.setBackgroundDrawable(bbb);
        //ImageView imageView = (ImageView) findViewById(R.id.imgShow);
        //imageView.setImageBitmap(MyActivity.getRoundedCornerBitmap(bitmap));
        //imageView.setImageBitmap(MyActivity.toRoundCorner(bitmap, 20));
    }
    public static Bitmap toRoundCorner(Bitmap bitmap, int pixels) {  
          
        Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888);  
        Canvas canvas = new Canvas(output);  
  
        final int color = 0xff424242;  
        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;  
    }
}

当然对ImageView设置图片也可以,不仅是background属性

上面那个类中注释的代码就是

转自: http://kofi1122.blog.51cto.com/2815761/521605

Android中常常使用shape来定义控件的一些显示属性,今天看了一些shape的使用,对shape有了大体的了解,稍作总结:

先看下面的代码:
        <shape>
            <!-- 实心 -->
            <solid android:color="#ff9d77"/>
            <!-- 渐变 -->
            <gradient
                android:startColor="#ff8c00"
                android:endColor="#FFFFFF"
                android:angle="270" />
            <!-- 描边 -->
            <stroke
                android:width="2dp"
                android:color="#dcdcdc" />
            <!-- 圆角 -->
            <corners
                android:radius="2dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>

solid:实心,就是填充的意思
android:color指定填充的颜色

gradient:渐变
android:startColor和android:endColor分别为起始和结束颜色,ndroid:angle是渐变角度,必须为45的整数倍。
另外渐变默认的模式为android:type="linear",即线性渐变,可以指定渐变为径向渐变,android:type="radial",径向渐变需要指定半径android:gradientRadius="50"。

stroke:描边
android:width="2dp" 描边的宽度,android:color 描边的颜色。
我们还可以把描边弄成虚线的形式,设置方式为:
android:dashWidth="5dp" 
android:dashGap="3dp"
其中android:dashWidth表示'-'这样一个横线的宽度,android:dashGap表示之间隔开的距离。

corners:圆角
android:radius为角的弧度,值越大角越圆。
我们还可以把四个角设定成不同的角度,方法为:
<corners 
        android:topRightRadius="20dp"    右上角
        android:bottomLeftRadius="20dp"    右下角
        android:topLeftRadius="1dp"    左上角
        android:bottomRightRadius="0dp"    左下角
 />
这里有个地方需要注意,bottomLeftRadius是右下角,而不是左下角,这个有点郁闷,不过不影响使用,记得别搞错了就行。
还有网上看到有人说设置成0dp无效,不过我在测试中发现是可以的,我用的是2.2,可能修复了这个问题吧,如果无效的话那就只能设成1dp了。

padding:间隔
这个就不用多说了,XML布局文件中经常用到。

大体的就是这样,以下是一个使用的具体示例:用在Selector中作为Button的背景,分别定义了按钮的一般状态、获得焦点状态和按下时的状态,具体代码如下:

main.xml:
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TestShapeButton"
    android:background="@drawable/button_selector"
    />

button_selector.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" >
        <shape>
            <!-- 渐变 -->
            <gradient
                android:startColor="#ff8c00"
                android:endColor="#FFFFFF"
                android:type="radial"
                android:gradientRadius="50" />
            <!-- 描边 -->
            <stroke
                android:width="2dp"
                android:color="#dcdcdc"
                android:dashWidth="5dp" 
                android:dashGap="3dp" />
            <!-- 圆角 -->
            <corners
                android:radius="2dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>

<item android:state_focused="true" >
        <shape>
            <gradient
                android:startColor="#ffc2b7"
                android:endColor="#ffc2b7"
                android:angle="270" />
            <stroke
                android:width="2dp"
                android:color="#dcdcdc" />
            <corners
                android:radius="2dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>

<item>       
        <shape>
            <solid android:color="#ff9d77"/>
            <stroke
                android:width="2dp"
                android:color="#fad3cf" />
            <corners 
                android:topRightRadius="5dp"
                android:bottomLeftRadius="5dp"
                android:topLeftRadius="0dp"
                android:bottomRightRadius="0dp"
            />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>
</selector>

运行效果如下图:

一般状态:

获得焦点状态:

按下状态:

android 设置边框圆角相关推荐

  1. html 文本框css设置边框圆角

    html 文本框css设置边框圆角如下图: css代码如下:input{border:1px solid black;width:295px;height:40px;border-radius:25p ...

  2. android视频播放器设置圆角,Android设置上圆角和下圆角

    Android设置上圆角和下圆角 圆角背景多用于卡片等布局 1.正常的圆角 代码如下: android:shape="rectangle"> android:width=&q ...

  3. android 设置单边框,Android设置单边圆角边框

    在drawable新建一个 buttonstyle.xml的文件,内容如下 android:bottomLeftRadius="10dp" android:bottomRightR ...

  4. android linearlayout 边框 圆角,如何将圆角半径应用于LinearLayout

    您可以在可绘制文件夹中创建一个XML文件.称呼它,例如,shape.xml 在shape.xml: xmlns:android="http://schemas.android.com/apk ...

  5. android 微信设置圆角边框代码,Android编程实现圆角边框的方法

    本文实例讲述了Android编程实现圆角边框的方法.分享给大家供大家参考,具体如下: 设置边框圆角可以在drawable-mdpi目录里定义一个xml: android:topRightRadius= ...

  6. relativelayout设置边框_Android TableLayout 增加边框,以及圆角的实现方式

    Android TableLayout 增加边框,以及圆角的实现方式 发布时间:2018-06-11作者:laosun阅读(3821) android 使用tablelayout实现圆角边框布局: 首 ...

  7. Android 对控件设置边框样式(边框颜色,圆角)和图片样式(圆角)

    1.设置边框.圆角.背景色案例 在drawable中 新建一个edge.xml文件 <?xml version="1.0" encoding="utf-8" ...

  8. corners边框_安卓中设置(shape)圆角背景和边框(stroke)相关的问题

    最近开发的项目中使用的圆角背景和边框比较多,基本都是使用shape文件和.9图片实现的.但在实现的过程中也是会出现一些小问题,这篇随笔会总结下来其中遇到的问题. 一,圆角大小不一致 1,四周圆角都为1 ...

  9. Android实现自定义圆角边框渐变

    1.定义全部圆角的通用接口 public interface IRadiusLayout {int DEFAULT_RADIUS = 0; // 默认没有圆角int SOLID_TYPE_SOLID ...

最新文章

  1. GPU上如何优化卷积
  2. JavaScript学习历程和心得
  3. deepin linux桌面设置,Deepin系统的桌面样式:高效模式和时尚模式
  4. linux日常管理3
  5. Java线程新特征——Java并发库
  6. java中使用okhttpsoap,Android okHttp网络请求之Retrofit+Okhttp+RxJava组合
  7. 手机屏幕宽高像素计算_2020年的智能手机拍照新设计,就全看下半年了
  8. 《思科数据中心I/O整合》一2.11 活动-活动连接(Active-Active)
  9. WordPress电子商务博客源码
  10. javascript-数据类型的转换
  11. 《机器学习实战》学习总结(二)决策树算法原理
  12. webx rewrite
  13. 《孤勇者》matlab版,用matlab弹奏《孤勇者》
  14. 四川省大学生金融科技建模大赛-模型复现和点评
  15. 考研英语 - word-list-49
  16. scrapy--Rule()与LinkExtractor()函数理解
  17. 手机里的微信群,都在变成DAO
  18. cdc有哪些rapper_获谢帝推荐,合作Higher Brothers,CDC的rapper里竟还藏着这样一位狠角色...
  19. C# USB转串口编程 - 查找COM口
  20. 20211212做实验时的感想

热门文章

  1. 湖南工业大学计算机组成原理,计算机组成原理实验指导书_湖南工业大学.pptx
  2. a story remind you to me
  3. 注册dll时返回0x80004005的解决方法
  4. matlab写wav文件
  5. 手机摇身一变,一键将纸质文档变电子文档,这一招在微信上火了!
  6. Mac安装mysql忘记初始的默认密码!!
  7. PLC的扫描工作的三个过程
  8. python编写死循环语句_Python 全栈开发:python循环语句while
  9. 交叉验证的几个方法的解释(简单交叉验证、k折交叉验证、留一法)
  10. Linux如何退出tail 命令