美文网首页
2018-11-07分享的时候有的app需要分享布局中的长图

2018-11-07分享的时候有的app需要分享布局中的长图

作者: 阿狸清纯的容颜 | 来源:发表于2018-11-07 18:35 被阅读0次

    哎! 百忙中还在加班写简书真是醉了,我竟然在加班写简书

    算了先给个demo吧,不想听我啰嗦的或者是看不懂的直接去下载吧(https://github.com/1037438704/SharedLongGraph)献给各位android新手们

    虽然我也是新手后序有可能去更新毕竟分享有一堆

    首先是一个工具类上面是我也看不懂的东西

    反正就是往上复制就对了

    public class BitmapViewUtils {

    private BitmapgetViewBitmap(View v) {

    v.clearFocus();

            v.setPressed(false);

            boolean willNotCache = v.willNotCacheDrawing();

            v.setWillNotCacheDrawing(false);

            int color = v.getDrawingCacheBackgroundColor();

            v.setDrawingCacheBackgroundColor(0);

            if (color !=0) {

    v.destroyDrawingCache();

            }

    v.buildDrawingCache();

            Bitmap cacheBitmap = v.getDrawingCache();

            if (cacheBitmap ==null) {

    return null;

            }

    Bitmap bitmap = Bitmap.createBitmap(cacheBitmap);

            v.destroyDrawingCache();

            v.setWillNotCacheDrawing(willNotCache);

            v.setDrawingCacheBackgroundColor(color);

            return bitmap;

        }

    public static BitmapgetBitmapByView(ScrollView scrollView) {

    int h =0;

            Bitmap bitmap =null;

            for (int i =0; i < scrollView.getChildCount(); i++) {

    h += scrollView.getChildAt(i).getHeight();

            }

    bitmap = Bitmap.createBitmap(scrollView.getWidth(), h,

                    Bitmap.Config.RGB_565);

            final Canvas canvas =new Canvas(bitmap);

            scrollView.draw(canvas);

            return bitmap;

        }

    public static void savePhotoToSDCard(Bitmap photoBitmap, String path, String photoName) {

    if (checkSDCardAvailable()) {

    File dir =new File(path);

                if (!dir.exists()) {

    dir.mkdirs();

                }

    File photoFile =new File(path, photoName +".png");

                FileOutputStream fileOutputStream =null;

                try {

    fileOutputStream =new FileOutputStream(photoFile);

                    if (photoBitmap !=null) {

    if (photoBitmap.compress(Bitmap.CompressFormat.PNG, 100, fileOutputStream)) {

    fileOutputStream.flush();

                        }

    }

    }catch (FileNotFoundException e) {

    photoFile.delete();

                    e.printStackTrace();

                }catch (IOException e) {

    photoFile.delete();

                    e.printStackTrace();

                }finally {

    try {

    fileOutputStream.close();

                    }catch (IOException e) {

    e.printStackTrace();

                    }

    }

    }

    }

    public static boolean checkSDCardAvailable() {

    return android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);

        }

    private static final StringSD_PATH ="/sdcard/dskqxt/pic/";

        private static final StringIN_PATH ="/dskqxt/pic/";

        /**

    * 随机生产文件名

    *

        * @return

        */

        private static StringgenerateFileName() {

    return UUID.randomUUID().toString();

        }

    /**

    * 保存bitmap到本地

    *

        * @param context

        * @param mBitmap

        * @return

        */

        public static StringsaveBitmap(Context context, Bitmap mBitmap) {

    String savePath;

            File filePic;

            if (Environment.getExternalStorageState().equals(

    Environment.MEDIA_MOUNTED)) {

    savePath =SD_PATH;

            }else {

    savePath = context.getApplicationContext().getFilesDir()

    .getAbsolutePath()

    +IN_PATH;

            }

    try {

    filePic =new File(savePath +generateFileName() +".jpg");

                if (!filePic.exists()) {

    filePic.getParentFile().mkdirs();

                    filePic.createNewFile();

                }

    FileOutputStream fos =new FileOutputStream(filePic);

                mBitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);

                fos.flush();

                fos.close();

            }catch (IOException e) {

    // TODO Auto-generated catch block

                e.printStackTrace();

    return null;

            }

    return filePic.getAbsolutePath();

        }

    }

    好的这个就是工具类

    调用方法是   只要不傻应该能看懂(好吧除了我哈哈)

    ScrollViewscro = findViewById(R.id.scro);

    Bitmap bitmap = BitmapViewUtils.getBitmapByView(scro);//contentLly是布局文件

    String s = BitmapViewUtils.saveBitmap(MainActivity.this, bitmap);

    s是保存路径 你手机上的  不要忘了给权限不然会出不来

    相关文章

      网友评论

          本文标题:2018-11-07分享的时候有的app需要分享布局中的长图

          本文链接:https://www.haomeiwen.com/subject/lbtbxqtx.html