效果如下图所示

保存在sd卡上的文件为


手机上显示效果为:


1》》在Manifest文件中增加相应权限

                

例如我的Manifest文件代码如下:

<?xml version="1.0" encoding="utf-8"?>                                                                                                    

2》》详细代码如下

package com.demo.picturetest;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.Bitmap.Config;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.os.Bundle;import android.os.Environment;import android.util.Log;import android.widget.ImageView;public class MainActivity extends Activity {private Bitmap mBitmap;// 画布private Canvas mCanvas;// 画笔--画图片private Paint mPicturePaint = new Paint();// 画笔--写字private Paint mTextPaint = new Paint();// 画笔--写运动数据private Paint mDataPaint = new Paint();private ImageView mImageView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);drawBitmap();init();// 展示mImageView.setImageBitmap(mBitmap);}private void init() {mImageView = (ImageView) findViewById(R.id.mImageView);}/** * 根据图片和文字生成图片 * */private void drawBitmap() {Bitmap bm_bg = BitmapFactory.decodeResource(getResources(),R.drawable.dashboard_bg);// 得到图片的宽、高int width_bg = bm_bg.getWidth();int height_bg = bm_bg.getHeight();// 创建一个你需要尺寸的BitmapmBitmap = Bitmap.createBitmap(width_bg, height_bg, Config.ARGB_8888);// 用这个Bitmap生成一个Canvas,然后canvas就会把内容绘制到上面这个bitmap中mCanvas = new Canvas(mBitmap);// 绘制背景图片mCanvas.drawBitmap(bm_bg, 0.0f, 0.0f, mPicturePaint);// 绘制图片Bitmap bm_head = BitmapFactory.decodeResource(getResources(),R.drawable.share_head_img);// 得到图片的宽、高int width_head = bm_head.getWidth();int height_head = bm_head.getHeight();// 绘制图片--保证其在水平方向居中mCanvas.drawBitmap(bm_head, (width_bg - width_head) / 2, 0.0f,mPicturePaint);// 绘制文字mTextPaint.setColor(Color.WHITE);// 白色画笔mTextPaint.setTextSize(80.0f);// 设置字体大小// 绘制文字mDataPaint.setColor(Color.RED);// 红色画笔mDataPaint.setTextSize(120.0f);// 设置字体大小String distanceTextString = "运动距离:";String distanceDataString = String.valueOf(888);String distanceScalString = "米";float distanceTextString_width = mTextPaint.measureText(distanceTextString, 0, distanceTextString.length());float distanceDataString_width = mDataPaint.measureText(distanceDataString, 0, distanceDataString.length());float distanceScalString_width = mTextPaint.measureText(distanceScalString, 0, distanceScalString.length());float x = (width_bg - distanceTextString_width- distanceDataString_width - distanceScalString_width) / 2;mCanvas.drawText(distanceTextString, x, height_head, mTextPaint);// 绘制文字mCanvas.drawText(distanceDataString, x + distanceTextString_width,height_head, mDataPaint);// 绘制文字mCanvas.drawText(distanceScalString, x + distanceTextString_width+ distanceDataString_width, height_head, mTextPaint);// 绘制文字// 保存绘图为本地图片mCanvas.save(Canvas.ALL_SAVE_FLAG);mCanvas.restore();File file = new File(Environment.getExternalStorageDirectory().getPath() + "/share_pic.png");// 保存到sdcard根目录下,文件名为share_pic.pngLog.i("CXC", Environment.getExternalStorageDirectory().getPath());FileOutputStream fos = null;try {fos = new FileOutputStream(file);mBitmap.compress(Bitmap.CompressFormat.PNG, 50, fos);} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {fos.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}


更多相关文章

  1. Android中Google地图折线层(Polyline)
  2. Android(安卓)Paint类方法说明
  3. Android(安卓)OpenGL ES学习笔记之绘制点
  4. android 绘制虚线效果
  5. 一个有趣的android加载动画
  6. Android中TextView文字镂空效果的实现
  7. android 点击字体,图片背景效果一起变换Demo
  8. 转载:谁说程序员不浪漫---Android爱心表白
  9. Android之GPU过度绘制与图形渲染优化——Hierarchyviewer时间不

随机推荐

  1. android内存管理
  2. 创建ListView的基本步骤
  3. Android百度地图(五):百度地图鹰眼sdk监
  4. 用angularjs写android应用连手机调试的步
  5. 【Android手机游戏】贪吃蛇(1)
  6. 安卓中的shape
  7. Android Studio 学习之 Android SDK快速
  8. AES加解密在Android(安卓)4.2上的Encrypt
  9. Android Matrix详解
  10. Android(安卓)OpenGL射线拾取&手势旋转(二