当前位置: 编程技术>移动开发
本页文章导读:
▪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;
}
最新技术文章: