List of usage examples for android.graphics.drawable Drawable draw
public abstract void draw(@NonNull Canvas canvas);
From source file:com.github.magiepooh.recycleritemdecoration.VerticalItemDecoration.java
@Override public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { int left = parent.getPaddingLeft(); int right = parent.getWidth() - parent.getPaddingRight(); int childCount = parent.getChildCount(); for (int i = 0; i <= childCount - 1; i++) { View child = parent.getChildAt(i); int childViewType = parent.getLayoutManager().getItemViewType(child); RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams(); // last position if (isLastPosition(child, parent)) { if (mLastDrawable != null) { int top = child.getBottom() + params.bottomMargin; int bottom = top + mLastDrawable.getIntrinsicHeight(); mLastDrawable.setBounds(left, top, right, bottom); mLastDrawable.draw(c);/*from ww w.ja v a2 s . co m*/ } return; } // specific view type Drawable drawable = mDividerViewTypeMap.get(childViewType); if (drawable != null) { int top = child.getBottom() + params.bottomMargin; int bottom = top + drawable.getIntrinsicHeight(); drawable.setBounds(left, top, right, bottom); drawable.draw(c); } // first position if (isFirstPosition(child, parent)) { if (mFirstDrawable != null) { int bottom = child.getTop() - params.topMargin; int top = bottom - mFirstDrawable.getIntrinsicHeight(); mFirstDrawable.setBounds(left, top, right, bottom); mFirstDrawable.draw(c); } } } }
From source file:android.support.v7.internal.widget.ListViewCompat.java
protected void drawSelectorCompat(Canvas canvas) { if (!mSelectorRect.isEmpty()) { final Drawable selector = getSelector(); if (selector != null) { selector.setBounds(mSelectorRect); selector.draw(canvas); }/*from w ww.ja v a 2 s. co m*/ } }
From source file:com.abhinavjhanwar.android.egg.neko.Cat.java
private void slowDraw(Canvas canvas, int x, int y, int w, int h) { for (int i = 0; i < D.drawingOrder.length; i++) { final Drawable d = D.drawingOrder[i]; if (d != null) { d.setBounds(x, y, x + w, y + h); d.draw(canvas); }// w w w . j av a2 s .co m } }
From source file:com.atwal.wakeup.battery.util.Utilities.java
public static Bitmap drawableToBitmap(Drawable drawable) { if (drawable instanceof BitmapDrawable) { BitmapDrawable bd = (BitmapDrawable) drawable; return bd.getBitmap(); }//from ww w.j a v a 2s . co m int w = drawable.getIntrinsicWidth(); int h = drawable.getIntrinsicHeight(); Bitmap bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); drawable.setBounds(0, 0, w, h); drawable.draw(canvas); return bitmap; }
From source file:cc.solart.turbo.decoration.LinearDividerItemDecoration.java
public void drawHorizontalDividers(Canvas c, RecyclerView parent) { final int top = parent.getPaddingTop(); final int bottom = parent.getHeight() - parent.getPaddingBottom(); final int childCount = parent.getChildCount(); for (int i = 0; i < childCount; i++) { final View child = parent.getChildAt(i); final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams(); final Drawable divider = getDivider(parent, params.getViewAdapterPosition()); final int left = child.getRight() + params.rightMargin + Math.round(ViewCompat.getTranslationX(child)); final int right = left + divider.getIntrinsicHeight(); mDividerOffsets.put(params.getViewAdapterPosition(), divider.getIntrinsicHeight()); divider.setBounds(left, top, right, bottom); divider.draw(c); }/*w w w .j a v a 2 s .co m*/ }
From source file:cc.solart.turbo.decoration.LinearDividerItemDecoration.java
public void drawVerticalDividers(Canvas c, RecyclerView parent) { final int left = parent.getPaddingLeft(); final int right = parent.getWidth() - parent.getPaddingRight(); final int childCount = parent.getChildCount(); for (int i = 0; i < childCount; i++) { final View child = parent.getChildAt(i); final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams(); final Drawable divider = getDivider(parent, params.getViewAdapterPosition()); final int top = child.getBottom() + params.bottomMargin + Math.round(ViewCompat.getTranslationY(child)); final int bottom = top + divider.getIntrinsicHeight(); mDividerOffsets.put(params.getViewAdapterPosition(), divider.getIntrinsicHeight()); divider.setBounds(left, top, right, bottom); divider.draw(c); }// ww w . j a v a2s . c o m }
From source file:com.pablog178.pdfcreator.android.PdfcreatorModule.java
private void generateImageFunction(HashMap args) { if (args.containsKey("fileName")) { Object fileName = args.get("fileName"); if (fileName instanceof String) { this.fileName = (String) fileName; Log.i(PROXY_NAME, "fileName: " + this.fileName); }/*from w w w. java 2 s. c o m*/ } else return; if (args.containsKey("view")) { Object viewObject = args.get("view"); if (viewObject instanceof TiViewProxy) { TiViewProxy viewProxy = (TiViewProxy) viewObject; this.view = viewProxy.getOrCreateView(); if (this.view == null) { Log.e(PROXY_NAME, "NO VIEW was created!!"); return; } Log.i(PROXY_NAME, "view: " + this.view.toString()); } } else return; TiBaseFile file = TiFileFactory.createTitaniumFile(this.fileName, true); Log.i(PROXY_NAME, "file full path: " + file.nativePath()); try { final int PDF_WIDTH = 612; final int PDF_HEIGHT = 792; Resources appResources = app.getResources(); OutputStream outputStream = file.getOutputStream(); int viewWidth = 1600; int viewHeight = 1; WebView view = (WebView) this.view.getNativeView(); if (TiApplication.isUIThread()) { viewWidth = view.capturePicture().getWidth(); viewHeight = view.capturePicture().getHeight(); if (viewWidth <= 0) { viewWidth = 1300; } if (viewHeight <= 0) { viewHeight = 2300; } } else { Log.e(PROXY_NAME, "NO UI THREAD"); } Log.i(PROXY_NAME, "viewWidth: " + viewWidth); Log.i(PROXY_NAME, "viewHeight: " + viewHeight); Bitmap viewBitmap = Bitmap.createBitmap(viewWidth, viewHeight, Bitmap.Config.ARGB_8888); float density = appResources.getDisplayMetrics().density; Canvas canvas = new Canvas(viewBitmap); Matrix matrix = new Matrix(); Drawable bgDrawable = view.getBackground(); if (bgDrawable != null) { bgDrawable.draw(canvas); } else { canvas.drawColor(Color.WHITE); } view.draw(canvas); float scaleFactorWidth = 1 / ((float) viewWidth / (float) PDF_WIDTH); float scaleFactorHeight = 1 / ((float) viewHeight / (float) PDF_HEIGHT); Log.i(PROXY_NAME, "scaleFactorWidth: " + scaleFactorWidth); Log.i(PROXY_NAME, "scaleFactorHeight: " + scaleFactorHeight); matrix.setScale(scaleFactorWidth, scaleFactorWidth); Bitmap imageBitmap = Bitmap.createBitmap(PDF_WIDTH, PDF_HEIGHT, Bitmap.Config.ARGB_8888); Canvas imageCanvas = new Canvas(imageBitmap); imageCanvas.drawBitmap(viewBitmap, matrix, null); imageBitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream); sendCompleteEvent(); } catch (Exception exception) { Log.e(PROXY_NAME, "Error: " + exception.toString()); sendErrorEvent(exception.toString()); } }
From source file:com.propelics.pdfcreator.PdfcreatorModule.java
private void generateiTextPDFfunction(HashMap args) { Log.d(PROXY_NAME, "generateiTextPDFfunction()"); String filename = ""; TiUIView webview = null;/*from w w w .j a v a 2s . com*/ int quality = 100; try { if (args.containsKey("filename")) { filename = (String) args.get("filename"); Log.d(PROXY_NAME, "filename: " + filename); } else return; if (args.containsKey("webview")) { TiViewProxy viewProxy = (TiViewProxy) args.get("webview"); webview = viewProxy.getOrCreateView(); Log.d(PROXY_NAME, "webview: " + webview.toString()); } else return; if (args.containsKey("quality")) { quality = TiConvert.toInt(args.get("quality")); } TiBaseFile file = TiFileFactory.createTitaniumFile(filename, true); Log.d(PROXY_NAME, "file full path: " + file.nativePath()); OutputStream outputStream = file.getOutputStream(); final int MARGIN = 0; final float PDF_WIDTH = PageSize.LETTER.getWidth() - MARGIN * 2; // A4: 595 //Letter: 612 final float PDF_HEIGHT = PageSize.LETTER.getHeight() - MARGIN * 2; // A4: 842 //Letter: 792 final int DEFAULT_VIEW_WIDTH = 980; final int DEFAULT_VIEW_HEIGHT = 1384; int viewWidth = DEFAULT_VIEW_WIDTH; int viewHeight = DEFAULT_VIEW_HEIGHT; Document pdfDocument = new Document(PageSize.LETTER, MARGIN, MARGIN, MARGIN, MARGIN); PdfWriter docWriter = PdfWriter.getInstance(pdfDocument, outputStream); Log.d(PROXY_NAME, "PDF_WIDTH: " + PDF_WIDTH); Log.d(PROXY_NAME, "PDF_HEIGHT: " + PDF_HEIGHT); WebView view = (WebView) webview.getNativeView(); if (TiApplication.isUIThread()) { viewWidth = view.capturePicture().getWidth(); viewHeight = view.capturePicture().getHeight(); if (viewWidth <= 0) { viewWidth = DEFAULT_VIEW_WIDTH; } if (viewHeight <= 0) { viewHeight = DEFAULT_VIEW_HEIGHT; } } else { Log.e(PROXY_NAME, "NO UI THREAD"); viewWidth = DEFAULT_VIEW_WIDTH; viewHeight = DEFAULT_VIEW_HEIGHT; } view.setLayerType(View.LAYER_TYPE_SOFTWARE, null); Log.d(PROXY_NAME, "viewWidth: " + viewWidth); Log.d(PROXY_NAME, "viewHeight: " + viewHeight); float scaleFactorWidth = 1 / (viewWidth / PDF_WIDTH); float scaleFactorHeight = 1 / (viewHeight / PDF_HEIGHT); Log.d(PROXY_NAME, "scaleFactorWidth: " + scaleFactorWidth); Log.d(PROXY_NAME, "scaleFactorHeight: " + scaleFactorHeight); Bitmap viewBitmap = Bitmap.createBitmap(viewWidth, viewHeight, Bitmap.Config.ARGB_8888); Canvas viewCanvas = new Canvas(viewBitmap); // Paint paintAntialias = new Paint(); // paintAntialias.setAntiAlias(true); // paintAntialias.setFilterBitmap(true); Drawable bgDrawable = view.getBackground(); if (bgDrawable != null) { bgDrawable.draw(viewCanvas); } else { viewCanvas.drawColor(Color.WHITE); } view.draw(viewCanvas); TiBaseFile pdfImg = createTempFile(filename); viewBitmap.compress(Bitmap.CompressFormat.PNG, quality, pdfImg.getOutputStream()); FileInputStream pdfImgInputStream = new FileInputStream(pdfImg.getNativeFile()); byte[] pdfImgBytes = IOUtils.toByteArray(pdfImgInputStream); pdfImgInputStream.close(); pdfDocument.open(); float yFactor = viewHeight * scaleFactorWidth; int pageNumber = 1; do { if (pageNumber > 1) { pdfDocument.newPage(); } pageNumber++; yFactor -= PDF_HEIGHT; Image pageImage = Image.getInstance(pdfImgBytes, true); // Image pageImage = Image.getInstance(buffer.array()); pageImage.scalePercent(scaleFactorWidth * 100); pageImage.setAbsolutePosition(0f, -yFactor); pdfDocument.add(pageImage); Log.d(PROXY_NAME, "yFactor: " + yFactor); } while (yFactor > 0); pdfDocument.close(); sendCompleteEvent(filename); } catch (Exception exception) { sendErrorEvent(exception); } }
From source file:at.flack.receiver.EMailReceiver.java
public Bitmap convertToBitmap(String name, Drawable drawable, int widthPixels, int heightPixels) { Bitmap mutableBitmap = Bitmap.createBitmap(widthPixels, heightPixels, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(mutableBitmap); drawable.setBounds(0, 0, widthPixels, heightPixels); canvas.drawColor(ContactAdapter.colors[Math.abs(ContactAdapter.betterHashCode(name)) % ContactAdapter.colors.length]); drawable.draw(canvas); return RoundedImageView.getCroppedBitmap(mutableBitmap, 300); }
From source file:com.bobomee.android.tab_navigator.recyclerview.FlexibleDividerDecoration.java
@Override public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { RecyclerView.Adapter adapter = parent.getAdapter(); if (adapter == null) { return;/* w w w . ja v a2 s . co m*/ } int itemCount = adapter.getItemCount(); int lastDividerOffset = getLastDividerOffset(parent); int validChildCount = parent.getChildCount(); int lastChildPosition = -1; for (int i = 0; i < validChildCount; i++) { View child = parent.getChildAt(i); int childPosition = parent.getChildAdapterPosition(child); if (childPosition < lastChildPosition) { // Avoid remaining divider when animation starts continue; } lastChildPosition = childPosition; if (!mShowLastDivider && childPosition >= itemCount - lastDividerOffset) { // Don't draw divider for last line if mShowLastDivider = false continue; } if (wasDividerAlreadyDrawn(childPosition, parent)) { // No need to draw divider again as it was drawn already by previous column continue; } int groupIndex = getGroupIndex(childPosition, parent); if (mVisibilityProvider.shouldHideDivider(groupIndex, parent)) { continue; } Rect bounds = getDividerBound(groupIndex, parent, child); switch (mDividerType) { case DRAWABLE: Drawable drawable = mDrawableProvider.drawableProvider(groupIndex, parent); drawable.setBounds(bounds); drawable.draw(c); break; case PAINT: mPaint = mPaintProvider.dividerPaint(groupIndex, parent); c.drawLine(bounds.left, bounds.top, bounds.right, bounds.bottom, mPaint); break; case COLOR: mPaint.setColor(mColorProvider.dividerColor(groupIndex, parent)); mPaint.setStrokeWidth(mSizeProvider.dividerSize(groupIndex, parent)); c.drawLine(bounds.left, bounds.top, bounds.right, bounds.bottom, mPaint); break; } } }