Android学习笔记之,调用系统图库,添加自定义字体,屏幕截图
新年开始的第一天就来学习了慕课迎春活动中的Android心愿分享一课,学到了几个知识点,在此记录一下。
1、调用系统图库
调用系统图库用的是intent,步骤为弹出系统图库选择器,选择图片后获取到所选择的图片。代码如下:
//在需要的地方调用 Intent intent = new Intent(Intent.ACTION_PICK, null); intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*"); startActivityForResult(intent, 100);//100为requestCode //在onActivityResult中获取结果 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK && requestCode == 100) { if (data != null) { mPhoto.setImageURI(data.getData());//mPhoto是一个ImageView } } }
这里在onActivityResult中拿到的是图片的Uri。
2、添加自定义字体
添加自定义自体分两步:
a:是添加字体文件到项目asserts文件夹中(不能添加到res中,因为res中的资源在打包时会压缩,字体文件不能压缩),
b:通过代码设置字体
//mWord是一个EditText,当然也可以用TextView,字体文件存在项目的asserts/fonts文件夹中 mWord.setTypeface(Typeface.createFromAsset(getAssets(), "fonts/test.ttf"));
3、屏幕截图
代码:
/** * 调用系统截图功能获取屏幕截图 * @return */ private Bitmap getScreenShot() { View view = getWindow().getDecorView(); view.setDrawingCacheEnabled(true); view.buildDrawingCache(); return view.getDrawingCache(); }
偶尔会碰到 View的getDrawingCache为空 这时可以用下面的办法解决:
public static Bitmap loadBitmapFromView(View v, boolean isParemt) { if (v == null) { return null; } Bitmap screenshot; screenshot = Bitmap.createBitmap(v.getWidth(), v.getHeight(), HDConstantSet.BITMAP_QUALITY); Canvas c = new Canvas(screenshot); c.translate(-v.getScrollX(), -v.getScrollY()); v.draw(c); return screenshot; }
参考文章:http://blog.csdn.net/huangbiao86/article/details/9053429