1.设置签名类

public class MyHandWritePanel extends PopupWindow {BaseActivity mContext;HandWrite handView;int availableHeight;private Bitmap bitmap;private int displayHeight,displayWidth;public MyHandWritePanel(BaseActivity context) {super(context, null);this.mContext = context;
//      Rect outRect = new Rect();
//      view.getWindowVisibleDisplayFrame(outRect);
//      availableHeight = outRect.height();DisplayMetrics dm = new DisplayMetrics();mContext.getWindowManager().getDefaultDisplay().getMetrics(dm);displayHeight=dm.heightPixels;displayWidth=dm.widthPixels;availableHeight=displayHeight;setWidth(displayWidth);setHeight(availableHeight);setFocusable(true);setContentView(createContentView());setAnimationStyle(R.style.popwindow_anim);}private ViewGroup createContentView() {RelativeLayout out = new RelativeLayout(mContext);out.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT));out.setGravity(Gravity.CENTER);out.addView(createTitle());out.addView(createBody());out.addView(createFoot());return out;}private LinearLayout createTitle() {RelativeLayout.LayoutParams rlayout = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT,(int) mContext.getResources().getDimension(R.dimen.fontSize_30_dip));rlayout.addRule(RelativeLayout.ALIGN_PARENT_TOP,RelativeLayout.TRUE);LinearLayout title = new LinearLayout(mContext);title.setId(1);title.setGravity(Gravity.CENTER);title.setLayoutParams(rlayout);TextView tv = new TextView(mContext);tv.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT));tv.setText("签名板");tv.setTextColor(mContext.getResources().getColor(R.color.white));tv.setTextSize(mContext.getResources().getDimension(R.dimen.fontSize_20));tv.setGravity(Gravity.CENTER);title.addView(tv);return title;}private LinearLayout createBody() {RelativeLayout.LayoutParams rlayout = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, availableHeight- ViewUtil.dip2px(mContext, mContext.getResources().getDimension(R.dimen.fontSize_20) * 4));rlayout.addRule(RelativeLayout.BELOW, 1);rlayout.addRule(RelativeLayout.ABOVE, 3);LinearLayout title = new LinearLayout(mContext);title.setId(2);title.setLayoutParams(rlayout);handView = new HandWrite(mContext, null, null, null,displayWidth, availableHeight- ViewUtil.dip2px(mContext, 80));title.addView(handView);return title;}private LinearLayout createFoot() {RelativeLayout.LayoutParams rlayout = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, ViewUtil.dip2px(mContext, ViewUtil.dip2px(mContext, mContext.getResources().getDimension(R.dimen.fontSize_50))));rlayout.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM,RelativeLayout.TRUE);LinearLayout title = new LinearLayout(mContext);title.setId(3);title.setOrientation(LinearLayout.HORIZONTAL);title.setLayoutParams(rlayout);title.setGravity(Gravity.CENTER);LinearLayout.LayoutParams layParam = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);layParam.setMargins(0,0,ViewUtil.dip2px(mContext,mContext.getResources().getDimension(R.dimen.fontSize_10)),0);Button confirmBtn = new Button(mContext);confirmBtn.setLayoutParams(layParam);confirmBtn.setText("确定");confirmBtn.setTextSize(mContext.getResources().getDimension(R.dimen.fontSize_16));confirmBtn.setBackgroundResource(R.drawable.comp_button_bottom);confirmBtn.setTextColor(mContext.getResources().getColor(R.color.text_color_dark));confirmBtn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {bitmap = handView.getmBitmap();if (bitmap != null)afterSign.setImage(bitmap);
//                  scaledSignImage.setImageBitmap(bitmap);MyHandWritePanel.this.dismiss();}});Button clearBtn = new Button(mContext);clearBtn.setText("清空");clearBtn.setTextSize(mContext.getResources().getDimension(R.dimen.fontSize_16));clearBtn.setLayoutParams(layParam);clearBtn.setBackgroundResource(R.drawable.comp_button_bottom);clearBtn.setTextColor(mContext.getResources().getColor(R.color.text_color_dark));clearBtn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {handView.clear();}});Button cancelBtn = new Button(mContext);cancelBtn.setText("取消");cancelBtn.setTextSize(mContext.getResources().getDimension(R.dimen.fontSize_16));cancelBtn.setLayoutParams(layParam);cancelBtn.setBackgroundResource(R.drawable.comp_button_bottom);cancelBtn.setTextColor(mContext.getResources().getColor(R.color.text_color_dark));cancelBtn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {afterSign.cancel();MyHandWritePanel.this.dismiss();}});title.addView(confirmBtn);title.addView(clearBtn);title.addView(cancelBtn);return title;}private MyHandWritePanel.AfterSign afterSign = new MyHandWritePanel.AfterSign() {@Overridepublic void setImage(Bitmap bitmap) {// TODO Auto-generated method stub}@Overridepublic void cancel() {// TODO Auto-generated method stub}};public void setAfterSign(MyHandWritePanel.AfterSign afterSign) {this.afterSign = afterSign;}public interface AfterSign{public void setImage(Bitmap bitmap);public void cancel();}
}

2.mainActivity

    private MyHandWritePanel handWritePanel;private ImageView imagePanel;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_choise_sign);handWritePanel=new MyHandWritePanel(this);imagePanel=(ImageView)findViewById(R.id.sign_panel_image);btnComp=(Button)findViewById(R.id.sign_panel_complete);handWritePanel.setAfterSign(new MyHandWritePanel.AfterSign() {@Overridepublic void setImage(Bitmap bitmap) {// TODO Auto-generated method stubImageUtil.saveMyBitmap(bitmap, AbsConstant.SDCARD_ROOT_PATH+AbsConstant.getCachePicPath(), SING_PIC_NAME);image_local_path=AbsConstant.SDCARD_ROOT_PATH+AbsConstant.getCachePicPath()+File.separator+SING_PIC_NAME;imagePanel.setImageBitmap(bitmap);}@Overridepublic void cancel() {// TODO Auto-generated method stubimagePanel.setImageResource(R.drawable.signature_default);}});imagePanel.setOnClickListener(onClick);btnComp.setOnClickListener(onClick);checkSign.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {// TODO Auto-generated method stubif(isChecked){handWritePanel.showAtLocation(imagePanel, Gravity.CENTER, 0, 0);}}});}

Android 签名相关推荐

  1. android签名的应用-- 禁止未经授权签名的apk安装

    点击打开链接 最近项目有需求: 只有使用特定签名签的apk才可以安装,其他任何apk都不能安装(root版,使用adb push进去的除外).n多度娘.google之后最终实现,把实现代码罗列一下,以 ...

  2. 安装安全类软件进行了android签名漏洞修补,魅族MX3怎么升级固件体验最新比较稳定的版本...

    魅族mx3固件怎么升级?flyme os系统会持续更新,升级魅族MX3手机系统需先下载MX3的升级固件,升级固件分为体验版和稳定版.魅族MX3固件有体验版和稳定版两种,顾名思义,体验版为最新版但相比稳 ...

  3. android digest 认证,探究 Android 签名机制和原理

    背景 最近在调研一个测试工具的使用,在使用中发现被测试工具处理过的apk文件经安装后打开就会崩溃,分析崩溃日志后原因是签名不一致导致的. 说到Android中的签名,可能大家都知道签名的目的就是为了保 ...

  4. Android签名机制---签名过程

    大神文章:http://blog.csdn.net/jiangwei0910410003/article/details/50402000 一.知识点 1.数据摘要(数据指纹).签名文件,证书文件 2 ...

  5. Android签名详解(debug和release)

    Android签名详解(debug和release) 1. 为什么要签名 1) 发送者的身份认证 由于开发商可能通过使用相同的Package Name来混淆替换已经安装的程序,以此保证签名不同的包不被 ...

  6. Android签名与认证详细分析之二(CERT.RSA剖析)

    一.Android证书的格式 Android签名中证书的格式采用X.509标准的版本三,不过省略了一些内容. X.509证书格式如下图所示: 二.证书的格式示例 从Chrome浏览器中导出一个证书,打 ...

  7. Android签名打包详解

    一.      Android签名有什么作用? 应用程序升级:如果你希望用户无缝升级到新的版本,那么你必须用同一个证书进行签名.这是由于只有以同一个证书签名,系统才会允许安装升级的应用程序.如果你采用 ...

  8. Android签名证书

    在最新的Android SDK中我们看到了Android签名证书机制的出现,也就是说几乎和Symbian OS v9.x以上平台构架一样,都需要数字签名证书才可以运行,这也是考虑到平台的安全性,同样也 ...

  9. Android签名 - APK签名系统SignApk.jar

    signapk.jar是Android源码包中的一个签名工具. 代码位于:Android源码目录下,signapk.jar 可以编译build/tools/signapk/ 得到. 使用signapk ...

  10. Android签名与校验过程详解

    原文:https://blog.csdn.net/gulinxieying/article/details/78677487 目 录 一.签名与校验原理概要    2 1.数字签名简介    2 2. ...

最新文章

  1. ajax怎么整理,ajax使用整理
  2. 不忘本~委托和事件(续)
  3. vc2010访问局域网mysql_VC2010利用MySQL++访问mysql. 及连接池示例
  4. rabbitmq延迟队列实现
  5. dedeCMS 两个站共用同一个数据库 图片路径统一
  6. 由逻辑异或运算符而发现的PHP诡异运算符优先级
  7. Spark MLlib之K-Means聚类算法
  8. 第五章项目整体管理重点--转载
  9. 5、使用Libgdx设计一个简单的游戏------雨滴
  10. Redux零碎知识点回顾
  11. unrecognized selector sent to instance XXXXX
  12. 金蝶服务器换了无线网怎么办,搬家后wifi怎么重新设置?
  13. 产品经理从专能到全能——不再虚无缥缈的用户体验
  14. html a标签鼠标聚焦,html怎么实现鼠标悬停提示A标签内容
  15. Android Studio 4.0.+NDK .so库生成打包
  16. 【突发】Telsa致命车祸细节报告:人为设定超速15%(下载)
  17. JS实现鼠标中心放大图片功能原理及实例演示
  18. springmvc后台获取图片,到jsp页面显示
  19. SLAM导航机器人零基础实战系列:(四)差分底盘设计——2.stm32主控软件设计
  20. OnMeasure()

热门文章

  1. nbu备份脚本 linux,netbackup备份教程详解
  2. 8光12电ERPS工业级环网交换机 PLC自动化环网柜一键环网交换机
  3. java如何快速入门Hadoop大数据技术?
  4. 菜鸟教程python100例-菜鸟教程python
  5. SaltStack之数据系统
  6. 5.1声道测试文件下载
  7. Unity BMFont自定义字体
  8. office2019专业增强版64位和32位安装包收集整理
  9. python游戏图像识别_利用python做图像识别
  10. easyui ajax post,实例详解EasyUI框架使用Ajax提交注册信息