ImageView设置边框的两种方式

MainActivity如下:

package cc.testimageviewbounds;

import android.os.Bundle;
import android.app.Activity;
/**
 * Demo描述:
 * 给ImageView添加边框的两种实现方式
 *
 * 方式一:
 * 利用自定义的shape-->即此处的imageviewboundshape.xml
 * 且为ImageView设置background,即代码:
 * android:background="@drawable/imageviewboundshape"
 *
 * 方式二:
 * 自定义ImageView
 *
 */
public class MainActivity extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
	}
}

ImageViewSubClass如下:

package cc.testimageviewbounds;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.widget.ImageView;

public class ImageViewSubClass extends ImageView {

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

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

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

	@Override
	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);

		//获取控件需要重新绘制的区域
		Rect rect=canvas.getClipBounds();
		rect.bottom--;
		rect.right--;
		Paint paint=new Paint();
		paint.setColor(Color.RED);
		paint.setStyle(Paint.Style.STROKE);
		paint.setStrokeWidth(3);
		canvas.drawRect(rect, paint);
	}

}

main.xml如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
   >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="给ImageView添加边框的两种方式"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="65dip"
     />
    <ImageView
        android:id="@+id/firstImageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="150dip"
        android:background="@drawable/imageviewboundshape"
        />
    <cc.testimageviewbounds.ImageViewSubClass
         android:id="@+id/secondImageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="250dip"
        />

</RelativeLayout>

imageviewboundshape.xml如下:

<?xml version="1.0" encoding="utf-8"?>
    <!-- 定义矩形rectangle -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle"  >

    <!-- 设置边框的大小和颜色 -->
    <stroke android:width="3dip" android:color="#ff0000" /> 

    <!-- 设置矩形内的颜色,此处为透明色 -->
    <solid android:color="@android:color/transparent"/>

    <!-- 定义圆角弧度 -->
    <corners
        android:bottomLeftRadius="4dp"
        android:bottomRightRadius="4dp"
        android:topLeftRadius="4dp"
        android:topRightRadius="4dp"
    />

</shape>

 

时间: 2024-07-30 19:47:14

ImageView设置边框的两种方式的相关文章

分享java中设置代理的两种方式_java

1 前言 有时候我们的程序中要提供可以使用代理访问网络,代理的方式包括http.https.ftp.socks代理.比如在IE浏览器设置代理. 那我们在我们的java程序中使用代理呢,有如下两种方式.直接上代码. 2 采用设置系统属性 import java.net.Authenticator; import java.net.PasswordAuthentication; import java.util.Properties; public class ProxyDemo1 { public

Android实现圆形图片的两种方式_Android

在项目中,我们经常会用到圆形图片,但是android本身又没有提供,那我只能我们自己来完成. 第一种方式,自定义CircleImageView: public class CircleImageView extends ImageView { private static final ScaleType SCALE_TYPE = ScaleType.CENTER_CROP; private static final Bitmap.Config BITMAP_CONFIG = Bitmap.Con

【Android开发】图形图像处理技术-实现Android动画的两种方式

在应用Android进行项目开发时,特别是在进行游戏开发时,经常需要涉及动画.Android中的动画通常可以分为逐帧动画(Frame Animation)和补间动画(Tween Animation)两种.下面将分别介绍这两种动画. 一.实现逐帧动画(Frame Animation) 逐帧动画就是顺序播放事先准备好的静态图像,利用人眼的"视觉暂留"原理,给用户造成动画的错觉.实现逐帧动画比较简单,只需要一下两个步骤: (1)在Android XML资源文件中定义一组用于生成动画的图片资源

我的Android进阶之旅------&amp;gt;Android之Gallery和GridView两种方式与ImageSwitcher实现带预览的和幻灯片方式的两种图片浏览器

一.简介 a.GridView(网络视图)的功能和用法 b.ImageSwitcher(图形切换器)的功能和用法 c.Gallery(画廊视图)的功能和用法 二.通过一个实例来学习Gallery.GridView和ImageSwitcher step1:新建一个项目MyGridViewAndGallery                                            三:我们先写用GridView和ImageSwitcher实现 step1:设计所需的UI界面 a.  

Android中EditText显示明文与密码的两种方式_Android

效果图如下所述: 布局 <?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:layout_width="match_pa

android绘制圆形图片的两种方式示例

android绘制圆形图片的两种方式 看下效果先 下面有完整的示例代码 使用BitmapShader(着色器) 我们在绘制view 的时候 就是小学上美术课 用水彩笔在本子上画画 使用着色器绘制圆形图片最简单的理解方式 就是把bitmap当做一种颜色 设置给paint ,paint都已经有颜色了 你想让它方了,圆了,扁了 还不是看你心情 canvas调用那个方法咯 实现的大致思路如下: 1. 创建一个类 继承imageView 重写onDraw() 2. 获取到bitmap图片 3. 计算图片的

FTP文件传输协议两种方式的工作原理

FTP是一种文件传输协议,它支持两种模式,一种方式叫做Standard (也就是 Active,主动方式),一种是 Passive (也就是PASV,被动方式). Standard模式 FTP的客户端发送 PORT 命令到FTP server.Passive模式FTP的客户端发送 PASV命令到 FTP Server. 下面介绍一个这两种方式的工作原理: Standard模式 FTP 客户端首先和FTP Server的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个

ASP中存储过程调用的两种方式及比较

比较|存储过程|存储过程 beerfroth(原作) 本人用sql server 和asp写了一个简单的留言本,在不断的尝试中发现,分页显示留言的时候,不同的执行方式,时间上的一些差别. 下面通过对比来看看几种方式的用时对比. 一,使用存储过程分页,这种情况又分为两种方式: 第一种,使用command对象,如下: Set Cmd=server.CreateObject("Adodb.Command")Cmd.ActiveConnection=connCmd.CommandText=&q

实现JSP连接MySql数据库的两种方式

js|mysql|数据|数据库 当您面临JSP连接MySQL数据库问题,你首先需要在MySQL数据库里创建一username表,表里面创建两个字符型的字段,字段名分别为:uid,pwd,然后插入几条测试数据. 以下用两种方式来实现JSP连接MySql数据库 第一种方式,用JSP实现: <%@ page contentType="text/html; charset=gb2312" language="java"  import="java.sql.*