当前位置: 编程技术>移动开发
本页文章导读:
▪Canvas中clipRect,rotate运用 Canvas中clipRect,rotate应用
Canvas.rotate与clipRect的应用
其功能是将画布进行旋转,达到画布上的图像成旋转的效果。
1. 利用clipRect功能是建立一个裁剪区,
2. 保存canvas状态
3. 将该裁剪区进行旋转
.........
▪ public、private、protected的作用域,以及不写时的差别 public、private、protected的作用域,以及不写时的区别?
public、private、protected的作用域,以及不写时的区别? public,protected,friendly,private的访问权限如下: 关键字 当前类.........
▪ MD5/SHA-一/SHA-256 MD5/SHA-1/SHA-256
/**
* MD5
*/
public static final String MD5 = "MD5";
/**
* SHA-1
*/
public static final String SHA1 = "SHA-1";
/**
* SHA-256
*/
public static final String SHA256 = "SHA-256";
.........
[1]Canvas中clipRect,rotate运用
来源: 互联网 发布时间: 2014-02-18
Canvas中clipRect,rotate应用
Canvas.rotate与clipRect的应用
其功能是将画布进行旋转,达到画布上的图像成旋转的效果。
1. 利用clipRect功能是建立一个裁剪区,
2. 保存canvas状态
3. 将该裁剪区进行旋转
4. 进行画布上的操作(必须在3之后)
5. 恢复canvas状态
注意:在做显示的Canvas中进行裁剪时,你的显示区域将是你的裁剪区域
效果图:
public class ClipRotateView extends View implements Runnable { Paint paint; float rote = 0f; public ClipRotateView(Context context) { super(context); paint = new Paint(); paint.setAntiAlias(true); new Thread(this).start(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); if (canvas == null) canvas = new Canvas(); canvas.drawColor(Color.DKGRAY); paint.setColor(Color.RED); // 建立裁剪区域,该处决定了可以显示的内容, // 当处理图片时,可以只裁剪部分区域,这里是为了把当前画布的的内容都显示出来 // 所以裁剪全部 canvas.clipRect(0, 0, getWidth(), getHeight()); // 操作之前进行画布状态的保存 canvas.save(); //旋转画面,必须放在画矩形之前 // canvas.rotate(rote),则是绕(0,0)旋转 canvas.rotate(rote, 100, 100); //画矩形 canvas.drawRect(100, 100, 200, 150, paint); // 操作完成之后进行恢复 canvas.restore(); //画另外两个图形 paint.setColor(Color.BLUE); canvas.drawRect(180,100, 280,150, paint); paint.setColor(Color.GREEN); Path path = new Path(); path.moveTo(100, 280); path.lineTo(100 + 50, 280); path.lineTo(100 + 30, 280 + 50); path.lineTo(100 + 20, 280 + 50); path.close(); canvas.drawPath(path, paint); } // 进行360度的旋转 @Override public void run() { while (!Thread.currentThread().isInterrupted()) { try { if (rote > 360) { rote = 0; } else { rote += 5; } Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } postInvalidate(); } } }
[2] public、private、protected的作用域,以及不写时的差别
来源: 互联网 发布时间: 2014-02-18
public、private、protected的作用域,以及不写时的区别?
public、private、protected的作用域,以及不写时的区别?
public,protected,friendly,private的访问权限如下:
关键字 当前类 同一package 子孙类 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
不写时默认为friendly
public声明的变量及方法,表明在整个包内包外都可使用。
private 声明的变量及方法,只在声明的类内可以使用。
protected包外不可使用。包内可以使用。
不使用关键字默认为包内使用。
public、private、protected的作用域,以及不写时的区别?
public,protected,friendly,private的访问权限如下:
关键字 当前类 同一package 子孙类 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
不写时默认为friendly
public声明的变量及方法,表明在整个包内包外都可使用。
private 声明的变量及方法,只在声明的类内可以使用。
protected包外不可使用。包内可以使用。
不使用关键字默认为包内使用。
[3] MD5/SHA-一/SHA-256
来源: 互联网 发布时间: 2014-02-18
MD5/SHA-1/SHA-256
/** * MD5 */ public static final String MD5 = "MD5"; /** * SHA-1 */ public static final String SHA1 = "SHA-1"; /** * SHA-256 */ public static final String SHA256 = "SHA-256"; /** * * 对字符串根据摘要名进行摘要。可支持MD5,SHA-1,SHA-256,默认SHA-256 * * @param encName 摘要名 * @param strSrc 摘要目标字符串 * @return 摘要结果字符串 */ public static String encrypt(String encName, final String strSrc) { MessageDigest md = null; String strDes = null; byte[] bt = strSrc.getBytes(); try { if (encName == null || encName.equals("")) { encName = "SHA-256"; } md = MessageDigest.getInstance(encName); md.update(bt); // to HexString strDes = bytes2Hex(md.digest()); } catch (NoSuchAlgorithmException e) { return null; } return strDes; } /** * 将byte数组转为16进制表示的字符串 * * @param bts 源数组 * @return 16进制表示的字符串 */ public static String bytes2Hex(byte[] bts) { String des = ""; String tmp = null; for (int i = 0; i < bts.length; i++) { tmp = Integer.toHexString(bts[i] & 0xFF); if (tmp.length() == 1) { des += "0"; } des += tmp; } return des; }
最新技术文章: