最近做项目的时候,恰好遇到给TextureView添加边框(专业名词为描边),因此查了一下相关资料。
网上有三种解决方案:
1.设置一个9 patch 的,右边框,中间是空的PNG。
2.自定义一个View,用Canvas画个边框。
3.用Android提供的ShapeDrawable来定义一个边框。
个人比较建议采用第三种方式,原因是因为第三种只要写XML,速度快,占用资源小,代码编写量也少,便于维护。
使用方法如下:
1.定义一个background.xml文件。
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke
android:width="2dp"
android:color="#0000AA" />
</shape>
2.在View的src设置背景时使用就可以了。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:src="@drawable/background"
android:padding="2dp">
<TextureView
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<com.android.camera.ui.RotateLayout
android:layout_width="wrap_content"
android:layout_width="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_width="wrap_content"
android:textColor="#FFFFFF"
android:textSize="22sp"
android:background="#0000000"/>
</com.android.camera.ui.RoateLayout>
</RelativeLayout>
需要注意的是我给TextureView的父容器RelativeLayout设置了Drawable,并设置了Padding。
当然Android提供了比较丰富的resource,对于XML定义Drawable可以参考官方文档的Shape Drwable一节。
http://developer.android.com/guide/topics/resources/drawable-resource.html