Android快速SDK(13)拍照裁剪库PhotoGraph【傻瓜模式】

来源:互联网 发布:2017淘宝补单平台 编辑:程序博客网 时间:2024/06/04 19:26

代码:http://download.csdn.net/detail/huangbin95487710/9260081

依赖包模式

完整运行还需要用到以下依赖包
  • Android快速SDK(2)View库QuickView

风格:重定义样式无代码

  1. 属性配置,一般使用默认配置即可
    • 配置摄像头模式(横竖屏切换)
    • 配置是否裁剪
    • 配置圆形裁剪图
    • 配置裁剪宽度比例
    • 配置同等比例裁剪
    • 配置拍照原图压缩
    • 配置裁剪4角触摸区域范围
    •     <declare-styleable name="PhotoGraph">        <!-- 屏幕样式 -->        <attr name="graph_orientation">            <enum name="landscape" value="0" />            <enum name="portrait" value="1" />        </attr>        <!-- 裁剪结果模式 -->        <attr name="graph_clip_mode">            <enum name="landscape" value="0" />            <enum name="portrait" value="1" />            <enum name="auto" value="2" />        </attr>        <!-- 是否裁剪圆 -->        <attr name="graph_iscircle" format="boolean" />        <!-- 裁剪宽比例 -->        <attr name="graph_clip_width" format="integer" />        <!-- 裁剪高比例 -->        <attr name="graph_clip_height" format="integer" />        <!-- 获取裁剪区域的大小(倍数) -->        <attr name="graph_clip_size" format="float" />        <!-- 裁剪框以外的背景 -->        <attr name="graph_clip_bg" format="color" />        <!-- 裁剪布局 -->        <attr name="graph_layout_id" format="integer" />        <!-- 弹出布局 -->        <attr name="graph_popup_layout_id" format="integer" />        <!-- 弹出布局返回按键 -->        <attr name="graph_keycode_back" format="boolean" />        <!-- 是否裁剪 -->        <attr name="graph_iscrop" format="boolean" />        <!-- 是否同等比例裁剪 -->        <attr name="graph_auto_scale" format="boolean" />        <!-- 拍照原图压缩 -->        <attr name="graph_fullscreen_compress" format="boolean" />        <!-- 获取4角触摸区域范围 -->        <attr name="graph_hysteresis" format="float" />    </declare-styleable>

    • 默认样式
    •     <style name="DivPhotoGraph">        <item name="graph_orientation">portrait</item>        <item name="graph_clip_mode">auto</item>        <item name="graph_iscircle">false</item>        <item name="graph_clip_width">1</item>        <item name="graph_clip_height">1</item>        <item name="graph_clip_size">1.5</item>        <item name="graph_clip_bg">#80505050</item>        <item name="graph_layout_id">@layout/photograph</item>        <item name="graph_popup_layout_id">@layout/photograph_pop</item>        <item name="graph_keycode_back">true</item>        <item name="graph_iscrop">true</item>        <item name="graph_auto_scale">true</item>        <item name="graph_fullscreen_compress">true</item>        <item name="graph_hysteresis">200.0</item>    </style>

  2. 代码示例
    • 重定义样式
    • <?xml version="1.0" encoding="utf-8"?><resources>    <!-- 重写样式 -->    <style name="MyDivPhotoGraph" parent="@style/DivPhotoGraph">        <item name="graph_clip_width">4</item>        <item name="graph_clip_height">3</item>        <item name="graph_iscircle">true</item>    </style>    <!-- 重写样式 -->    <style name="MyDivPhotoGraph1" parent="@style/DivPhotoGraph">        <item name="graph_iscrop">false</item>    </style></resources>

    • 代码
    • package cn.whonow.whonow.photograph;import General.CropPic.PhotoGraph;import General.CropPic.Listener.CropListener;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import cn.whonow.whonow.R;/** * 拍照上传 必须实现CropListener接口 *  * @author HuangYi QQ:95487710 */public class PhotoGraphActivity extends Activity implements CropListener {private PhotoGraph mPhotoGraph;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.test_photograph);Button button1 = (Button) findViewById(R.id.button1);button1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// "拍照上传"mPhotoGraph = new PhotoGraph(PhotoGraphActivity.this,PhotoGraphActivity.this);mPhotoGraph.doPopup();}});Button button2 = (Button) findViewById(R.id.button2);button2.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// 自定义样式mPhotoGraph = new PhotoGraph(PhotoGraphActivity.this,R.style.MyDivPhotoGraph, PhotoGraphActivity.this);mPhotoGraph.doPopup(R.id.ll);}});Button button3 = (Button) findViewById(R.id.button3);button3.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// "不裁剪样式"mPhotoGraph = new PhotoGraph(PhotoGraphActivity.this,R.style.MyDivPhotoGraph1, PhotoGraphActivity.this);mPhotoGraph.doPopup(R.id.ll);}});}/** 必须重写 */@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (mPhotoGraph != null) {mPhotoGraph.onActivityResult(requestCode, resultCode, data);}}@Overridepublic void onSucess(String mPath) {// 成功返回SDCARD路径}@Overridepublic void onError(String mError) {// 错误}@Overridepublic void onCancel() {// 取消}}

  3. AndroidManifest.xml添加配置
    •     <application>        <!-- ###################拍照上传################### -->        <activity            android:name="app.general.lib.CropImageActivity"            android:configChanges="orientation|keyboardHidden"            android:theme="@android:style/Theme.NoTitleBar" />        <!-- ###################拍照上传################### -->    </application>    <!-- ###################拍照上传################### -->    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    <!-- ###################拍照上传################### -->

  4. 特殊定制布局
    • 复制以下的XML文件到目标项目,在保持ID不变下,可任意更改界面
    • photograph_pop.xml,photograph.xml
  5. 效果图


1 0
原创粉丝点击