我们先实现拍照按钮的圆形效果哈,AndroID开发中,当然可以找美工人员设计图片,然后直接拿进来,不过我们可以自己写代码实现这个效果哈,最常用的的是用layout-List实现图片的叠加,我们这个layout命名为btn_take_photo.xml,这是一个自定义的drawable文件,所以按照规范,我们要将它放在drawable文件夹里。
注意:drawable文件夹一般是来放自定义的drawable文件的,可以将它看成自己写的背景样式等等哦
解释代码:
@R_853_3419@里面放3个item,先实现一个白色背景的椭圆,属性androID:shape="oval"是实现椭圆的
androID:shape=["rectangle" | "oval" | "line" | "ring"]
shape的形状,默认为矩形,可以设置为矩形(rectangle)、椭圆形(oval)、线性形状(line)、环形(ring)
然后再放入一个item,这个item是一个左右上下都等长的椭圆
ok,这样一个等边的椭圆就做好了
接着再次放入一个一个蓝色背景的椭圆
<?xml version="1.0" enCoding="utf-8"?> <@R_853_3419@ xmlns:androID="http://schemas.androID.com/apk/res/androID"> <item> <shape androID:shape="oval"> <solID androID:color="@color/white" /> </shape> </item> <item androID:bottom="6dp" androID:left="6dp" androID:right="6dp" androID:top="6dp"> <shape androID:shape="oval"> <solID androID:color="@color/blue" /> </shape> </item> <item> <shape androID:shape="oval"> <stroke androID:wIDth="1dp" androID:color="@color/blue" androID:dashWIDth="0dp" /> </shape> </item> </@R_853_3419@>
这是一个界面:activity_take_photo.xml
界面的很简单,这里只是提供参考学习的,解释代码:
SurfaceVIEw是用来拍照用的,注意这个类只要和视频或者拍照的都需要用到,不过项目里一般都是自己写的。
这些代码只是参考互相学习,功能的话,自己还在做,所以先提供这些学习的...,希望可以帮助学习的人,然后自己写博客的目的也是对自己学习的技术进行收录和共享,只是本着互相学习的目的。
<FrameLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:background="#ffffff"> <!-- 显示预览图形 --> <SurfaceVIEw androID:ID="@+ID/surfaceVIEw" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" /> <relativeLayout androID:ID="@+ID/buttonLayout" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:background="@drawable/pic"> <relativeLayout androID:ID="@+ID/panel_take_photo" androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" androID:layout_alignParentBottom="true" androID:background="@color/white" androID:gravity="center_vertical" androID:padding="2dp"> <button androID:ID="@+ID/btn_take_photo" androID:layout_wIDth="50dp" androID:layout_height="50dp" androID:background="@drawable/btn_take_photo" androID:layout_centerHorizontal="true" androID:layout_aligntop="@+ID/iv_album" /> <ImageVIEw androID:ID="@+ID/iv_album" androID:layout_wIDth="40dp" androID:layout_height="40dp" androID:layout_alignParentleft="true" androID:layout_centerVertical="true" androID:layout_marginleft="20dp" androID:padding="5dp" androID:src="@drawable/camera_library" /> <ImageVIEw androID:ID="@+ID/Title_btn_black" androID:layout_wIDth="40dp" androID:layout_height="40dp" androID:layout_alignParentRight="true" androID:layout_centerVertical="true" androID:layout_marginRight="20dp" androID:padding="5dp" androID:src="@drawable/camera_back" /> </relativeLayout> <linearLayout androID:ID="@+ID/photo_area" androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" androID:layout_above="@ID/panel_take_photo" androID:layout_centerVertical="true" androID:background="@color/white" androID:orIEntation="horizontal"></linearLayout> <!-- 自定义的标题栏--> <relativeLayout androID:ID="@+ID/camera_top" androID:layout_wIDth="fill_parent" androID:layout_height="40dp" androID:layout_alignParenttop="true" androID:background="@color/black"> <ImageVIEw androID:ID="@+ID/btn_black" androID:layout_wIDth="wrap_content" androID:layout_height="fill_parent" androID:layout_alignParentleft="true" androID:paddingBottom="10dp" androID:paddingleft="10dp" androID:paddingtop="10dp" androID:src="@drawable/back" /> <ImageVIEw androID:ID="@+ID/btn_change" androID:layout_wIDth="wrap_content" androID:layout_height="fill_parent" androID:layout_alignParentRight="true" androID:layout_centerVertical="true" androID:paddingBottom="10dp" androID:paddingRight="10dp" androID:paddingtop="10dp" androID:src="@drawable/camera_flip" /> </relativeLayout> <!-- 自定义的CameraGrID--> <org.personality.camera.ui.vIEw.CameraGrID androID:ID="@+ID/masking" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:layout_above="@ID/photo_area" androID:layout_alignParenttop="true" /> <VIEw androID:ID="@+ID/focus_index" androID:layout_wIDth="40dp" androID:layout_height="40dp" androID:layout_above="@ID/photo_area" androID:background="@drawable/cam_focus" androID:visibility="invisible" /> </relativeLayout> </FrameLayout>
提供自定义CameraGrID类:
/** * 自定义的VIEw * 照相机井字线 * */ public class CameraGrID extends VIEw { private int topBannerWIDth = 0; private Paint mPaint; public CameraGrID(Context context) { this(context,null); } public CameraGrID(Context context,AttributeSet attrs) { super(context,attrs); init(); } private voID init(){ mPaint = new Paint(); mPaint.setcolor(color.WHITE); mPaint.setAlpha(120); mPaint.setstrokeWIDth(1f); } private boolean showGrID = true; public boolean isShowGrID() { return showGrID; } public voID setShowGrID(boolean showGrID) { this.showGrID = showGrID; } public int gettopWIDth() { return topBannerWIDth; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
总结以上是内存溢出为你收集整理的Android自定义相机界面的实现代码全部内容,希望文章能够帮你解决Android自定义相机界面的实现代码所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)