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

原文地址:https://www.cnblogs.com/lurenjiashuo/p/android-note-pick-picture-font-screenshot.html