Android View转换成图片保存
发布时间:2020-12-14 23:28:12 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 import java.io.File; import java.io.FileOutputStream; import android.os.Bundle; import android.os.Environment; import android.os.Handler; im
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 import java.io.File; import java.io.FileOutputStream; import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; /** * 把Android的一个View转换成图片保存 * * */ public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final TextView tv = (TextView) findViewById(R.id.textView); tv.setBackgroundColor(Color.GREEN); // tv.setDrawingCacheEnabled(true); final Runnable runnable = new Runnable() { @Override public void run() { viewSaveToImage(tv); } }; Button button = (Button) findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new Handler().post(runnable); } }); } public void viewSaveToImage(View view) { view.setDrawingCacheEnabled(true); view.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH); view.setDrawingCacheBackgroundColor(Color.WHITE); // 把一个View转换成图片 Bitmap cachebmp = loadBitmapFromView(view); // 添加水印 Bitmap bitmap = Bitmap.createBitmap(createWatermarkBitmap(cachebmp,"@ Zhang Phil")); FileOutputStream fos; try { // 判断手机设备是否有SD卡 boolean isHasSDCard = Environment.getExternalStorageState().equals( android.os.Environment.MEDIA_MOUNTED); if (isHasSDCard) { // SD卡根目录 File sdRoot = Environment.getExternalStorageDirectory(); File file = new File(sdRoot,"test.PNG"); fos = new FileOutputStream(file); } else throw new Exception("创建文件失败!"); bitmap.compress(Bitmap.CompressFormat.PNG,90,fos); fos.flush(); fos.close(); } catch (Exception e) { e.printStackTrace(); } view.destroyDrawingCache(); } private Bitmap loadBitmapFromView(View v) { int w = v.getWidth(); int h = v.getHeight(); Bitmap bmp = Bitmap.createBitmap(w,h,Bitmap.Config.ARGB_8888); Canvas c = new Canvas(bmp); c.drawColor(Color.WHITE); /** 如果不设置canvas画布为白色,则生成透明 */ v.layout(0,w,h); v.draw(c); return bmp; } // 为图片target添加水印 private Bitmap createWatermarkBitmap(Bitmap target,String str) { int w = target.getWidth(); int h = target.getHeight(); Bitmap bmp = Bitmap.createBitmap(w,Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bmp); Paint p = new Paint(); // 水印的颜色 p.setColor(Color.RED); // 水印的字体大小 p.setTextSize(16); p.setAntiAlias(true);// 去锯齿 canvas.drawBitmap(target,p); // 在中间位置开始添加水印 canvas.drawText(str,w / 2,h / 2,p); canvas.save(Canvas.ALL_SAVE_FLAG); canvas.restore(); return bmp; } } 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |