List of usage examples for android.graphics.drawable Drawable getIntrinsicWidth
public int getIntrinsicWidth()
From source file:com.example.george.sharedelementimplementation.MainActivity.java
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_animations); mGridView = (MyGridView) findViewById(R.id.gv_photo_grid); PhotoGridAdapter mAdapter = new PhotoGridAdapter(this); pictures = mBitmapUtils.loadPhotos(getResources()); mAdapter.updateData(pictures);/*from w w w .j ava2s . c om*/ mGridView.setAdapter(mAdapter); // the image for pop up animation effect mImage = (ClippingImageView) findViewById(R.id.iv_animation); mImage.setVisibility(View.GONE); // set the background color in the fullscreen mTopLevelLayout = (RelativeLayout) findViewById(R.id.rl_fullscreen_bg); mBackground = new ColorDrawable(Color.BLACK); mBackground.setAlpha(0); mTopLevelLayout.setBackground(mBackground); mPager = (ClickableViewPager) findViewById(R.id.pager); mPager.setVisibility(View.GONE); // enable/disable touch event mGridView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (mIsInFullscreen) { // returning true means that this event has been consumed // in fullscreen the grid view is not responding any finger interaction return true; } return false; } }); mGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { mIsInFullscreen = true; // set the animating image to the clicked item Drawable drawable = ((ImageView) view).getDrawable(); mImage.setImageDrawable(drawable); mImage.setVisibility(View.VISIBLE); // reset image translation mImage.setTranslationX(0); mImage.setTranslationY(0); // reset pager's adapter every time a view in Grid view is clicked mPager.setAdapter(new PhotoViewAdapter(MainActivity.this, pictures)); mPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { } @Override public void onPageScrollStateChanged(int state) { // the GirdView should follow the Pager mGridView.smoothScrollToPosition(mPager.getCurrentItem()); } }); mPager.setCurrentItem(position, false); final float drawableWidth = drawable.getIntrinsicWidth(); final float drawableHeight = drawable.getIntrinsicHeight(); // calculate the clicked view's location and width/height final float heightWidthRatio = drawableHeight / drawableWidth; final int thumbnailWidth = view.getWidth(); final int thumbnailHeight = view.getHeight(); int[] viewLocation = new int[2]; int[] gridViewLocation = new int[2]; view.getLocationOnScreen(viewLocation); mGridView.getLocationOnScreen(gridViewLocation); final int thumbnailX = viewLocation[0] + thumbnailWidth / 2; final int thumbnailY = viewLocation[1] + thumbnailHeight / 2; final int fullscreenX = gridViewLocation[0] + mGridView.getWidth() / 2; final int fullscreenY = gridViewLocation[1] + mGridView.getHeight() / 2; Log.d(TAG, "viewLocation=" + viewLocation[0] + ", " + viewLocation[1] + "\ngridViewLocation=" + gridViewLocation[0] + ", " + gridViewLocation[1]); Log.d(TAG, "thumbnailX=" + thumbnailX + ", thumbnailY=" + thumbnailY + "\nfullscreenX=" + fullscreenX + ", fullscreenY=" + fullscreenY); // for image transform, we need 3 arguments to transform properly: // deltaX and deltaY - the translation of the image // scale value - the resize value // clip ratio - the reveal part of the image // figure out where the thumbnail and full size versions are, relative // to the screen and each other mXDelta = thumbnailX - fullscreenX; mYDelta = thumbnailY - fullscreenY; // Scale factors to make the large version the same size as the thumbnail if (heightWidthRatio < 1) { mImageScale = (float) thumbnailHeight / mImage.getLayoutParams().height; } else { mImageScale = (float) thumbnailWidth / mImage.getLayoutParams().width; } // clip ratio if (heightWidthRatio < 1) { // if the original picture is in landscape clipRatio = 1 - heightWidthRatio; } else { // if the original picture is in portrait clipRatio = 1 - 1 / heightWidthRatio; } Log.d(TAG, "*************************Enter Animation*************************"); Log.d(TAG, "(mXDelta, mTopDelta)=(" + mXDelta + ", " + mYDelta + ")\nmImageScale=" + mImageScale + "\nclipRatio=" + clipRatio); runEnterAnimation(); } }); }
From source file:com.hippo.ehviewer.ui.scene.GalleryDetailScene.java
private void setActionDrawable(TextView text, Drawable drawable) { drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); text.setCompoundDrawables(null, drawable, null, null); }
From source file:com.saulcintero.moveon.fragments.Summary1.java
private void addMarker(int overlayType, GeoPoint gp, int typeOfMarker, String title, String description) { Drawable marker = null; MarkerTypes whichMarker = MarkerTypes.values()[typeOfMarker]; switch (whichMarker) { case START_MARKER: marker = res.getDrawable(R.drawable.start_pin); break;/*from ww w.ja v a 2s . c o m*/ case PAUSE1_MARKER: marker = res.getDrawable(R.drawable.pause1_pin); break; case PAUSE2_MARKER: marker = res.getDrawable(R.drawable.pause2_pin); break; case STOP_MARKER: marker = res.getDrawable(R.drawable.stop_pin); break; case PHOTO_MARKER: marker = res.getDrawable(R.drawable.picture_pin); break; case DISTANCE_MARKER: BitmapDrawable bmd = FunctionUtils.createMarkerIcon(mContext, R.drawable.distance_pin, String.valueOf(lap)); marker = bmd; break; } int markerWidth = marker.getIntrinsicWidth(); int markerHeight = marker.getIntrinsicHeight(); marker.setBounds(0, markerHeight, markerWidth, 0); switch (overlayType) { case 1: ResourceProxy resourceProxy = new DefaultResourceProxyImpl(mContext); myItemizedOverlay = new MyItemizedOverlay(marker, resourceProxy); mapView.getOverlays().add(myItemizedOverlay); myItemizedOverlay.addItem(gp, "", ""); break; case 2: ArrayList<OverlayItem> list = new ArrayList<OverlayItem>(); MyItemizedOverlayGestureListenerTxt txtGestureOverlay = new MyItemizedOverlayGestureListenerTxt(act, list); OverlayItem overlayItem = new OverlayItem(title, description, gp); overlayItem.setMarkerHotspot(OverlayItem.HotspotPlace.BOTTOM_CENTER); overlayItem.setMarker(marker); txtGestureOverlay.addItem(overlayItem); mapView.getOverlays().add(txtGestureOverlay); mapView.invalidate(); break; case 3: ArrayList<OverlayItem> list2 = new ArrayList<OverlayItem>(); MyItemizedOverlayGestureListenerImg imgGestureOverlay = new MyItemizedOverlayGestureListenerImg(act, list2); OverlayItem overlayItem2 = new OverlayItem(title, description, gp); overlayItem2.setMarkerHotspot(OverlayItem.HotspotPlace.BOTTOM_CENTER); overlayItem2.setMarker(marker); imgGestureOverlay.addItem(overlayItem2); mapView.getOverlays().add(imgGestureOverlay); oItem.add(overlayItem2); mapView.invalidate(); break; } }
From source file:com.findcab.activity.LocationOverlay.java
private void displapDriversForAnswer(Drivers info) { Drawable marker = getResources().getDrawable(R.drawable.cear); marker.setBounds(0, 0, marker.getIntrinsicWidth(), marker.getIntrinsicHeight()); mGeoList.clear();//from ww w . ja v a 2 s. c o m OverlayItem item1 = new OverlayItem(new GeoPoint((int) (lat * 1e6), (int) (lng * 1e6)), "", ""); Drawable maker1 = getResources().getDrawable(R.drawable.person); item1.setMarker(maker1); mGeoList.add(item1); int size = driversList.size(); OverlayItem item = null; double driverLat, driverLng; DriversInfo drivers; Drawable maker = getResources().getDrawable(R.drawable.cear); driverLat = Double.parseDouble(info.getLat()); driverLng = Double.parseDouble(info.getLng()); item = new OverlayItem(new GeoPoint((int) (driverLat * 1e6), (int) (driverLng * 1e6)), info.getName(), " "); item.setMarker(maker); mGeoList.add(item); for (int i = 0; i < mGeoList.size(); i++) { System.out.println("?mGeoList---------->" + mGeoList.get(i).getTitle()); } MyItemizedOverlay overlay = new MyItemizedOverlay(context, maker, mGeoList, info); mMapView.getOverlays().clear();// ??mGeoList mMapView.getOverlays().add(0, overlay); mMapView.refresh(); }
From source file:com.findcab.activity.LocationOverlay.java
/** * ?//from w ww .jav a 2 s.c om * * @param isDisplay */ private void displayDrivers(boolean isDisplay) { if (isDisplay) { Drawable marker = getResources().getDrawable(R.drawable.cear); marker.setBounds(0, 0, marker.getIntrinsicWidth(), marker.getIntrinsicHeight()); for (int i = 0; i < mGeoList.size(); i++) { System.out.println("??mGeoList---------->" + mGeoList.get(i).getTitle()); } // for (int i = 1; i < mGeoList.size(); i++) { // mGeoList.remove(i); // } mGeoList.clear(); OverlayItem item1 = new OverlayItem(new GeoPoint((int) (lat * 1e6), (int) (lng * 1e6)), "", ""); Drawable maker1 = getResources().getDrawable(R.drawable.person); item1.setMarker(maker1); mGeoList.add(item1); for (int i = 0; i < mGeoList.size(); i++) { System.out.println("mGeoList---------->" + mGeoList.get(i).getTitle()); } int size = driversList.size(); OverlayItem item = null; double driverLat, driverLng; DriversInfo drivers; Drawable maker = getResources().getDrawable(R.drawable.cear); for (int i = 0; i < size; i++) { drivers = driversList.get(i); driverLat = drivers.getLat(); driverLng = drivers.getLng(); item = new OverlayItem(new GeoPoint((int) (driverLat * 1e6), (int) (driverLng * 1e6)), drivers.getName(), " "); item.setMarker(maker); mGeoList.add(item); } for (int i = 0; i < mGeoList.size(); i++) { System.out.println("??mGeoList---------->" + mGeoList.get(i).getTitle()); } MyItemizedOverlay overlay = new MyItemizedOverlay(context, maker, mGeoList, driversList); mMapView.getOverlays().clear();// ??mGeoList for (int i = 0; i < mGeoList.size(); i++) { System.out.println("cleae?mGeoList---------->" + mGeoList.get(i).getTitle()); } mMapView.getOverlays().add(0, overlay); for (int i = 0; i < mGeoList.size(); i++) { System.out.println("add?mGeoList---------->" + mGeoList.get(i).getTitle()); } mMapView.refresh(); } }
From source file:com.initialxy.cordova.themeablebrowser.ThemeableBrowser.java
private void setButtonImages(View view, BrowserButton buttonProps, int disabledAlpha) { Drawable normalDrawable = null; Drawable disabledDrawable = null;/*from w w w . j av a 2 s .c o m*/ Drawable pressedDrawable = null; CharSequence description = view.getContentDescription(); if (buttonProps.image != null || buttonProps.wwwImage != null) { try { normalDrawable = getImage(buttonProps.image, buttonProps.wwwImage, buttonProps.wwwImageDensity); ViewGroup.LayoutParams params = view.getLayoutParams(); params.width = normalDrawable.getIntrinsicWidth(); params.height = normalDrawable.getIntrinsicHeight(); } catch (Resources.NotFoundException e) { emitError(ERR_LOADFAIL, String.format("Image for %s, %s, failed to load", description, buttonProps.image)); } catch (IOException ioe) { emitError(ERR_LOADFAIL, String.format("Image for %s, %s, failed to load", description, buttonProps.wwwImage)); } } else { emitWarning(WRN_UNDEFINED, String.format("Image for %s is not defined. Button will not be shown", description)); } if (buttonProps.imagePressed != null || buttonProps.wwwImagePressed != null) { try { pressedDrawable = getImage(buttonProps.imagePressed, buttonProps.wwwImagePressed, buttonProps.wwwImageDensity); } catch (Resources.NotFoundException e) { emitError(ERR_LOADFAIL, String.format("Pressed image for %s, %s, failed to load", description, buttonProps.imagePressed)); } catch (IOException e) { emitError(ERR_LOADFAIL, String.format("Pressed image for %s, %s, failed to load", description, buttonProps.wwwImagePressed)); } } else { emitWarning(WRN_UNDEFINED, String.format("Pressed image for %s is not defined.", description)); } if (normalDrawable != null) { // Create the disabled state drawable by fading the normal state // drawable. Drawable.setAlpha() stopped working above Android 4.4 // so we gotta bring out some bitmap magic. Credit goes to: // http://stackoverflow.com/a/7477572 Bitmap enabledBitmap = ((BitmapDrawable) normalDrawable).getBitmap(); Bitmap disabledBitmap = Bitmap.createBitmap(normalDrawable.getIntrinsicWidth(), normalDrawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(disabledBitmap); Paint paint = new Paint(); paint.setAlpha(disabledAlpha); canvas.drawBitmap(enabledBitmap, 0, 0, paint); Resources activityRes = cordova.getActivity().getResources(); disabledDrawable = new BitmapDrawable(activityRes, disabledBitmap); } StateListDrawable states = new StateListDrawable(); if (pressedDrawable != null) { states.addState(new int[] { android.R.attr.state_pressed }, pressedDrawable); } if (normalDrawable != null) { states.addState(new int[] { android.R.attr.state_enabled }, normalDrawable); } if (disabledDrawable != null) { states.addState(new int[] {}, disabledDrawable); } setBackground(view, states); }
From source file:com.digreamon.android.widget.SlidingPaneLayout.java
@Override public void draw(Canvas c) { super.draw(c); if (mCoveredView == null) return;/*w w w .j a v a 2 s. c o m*/ Drawable mShadowDrawable = null; switch (getViewSpec(mCoveredView)) { case LEFT: mShadowDrawable = mLeftShadowDrawable; break; case RIGHT: mShadowDrawable = mRightShadowDrawable; break; default: break; } if (!(getCoverView() != null && getCoverView().getVisibility() != GONE && mShadowDrawable != null)) { // No need to draw a shadow if we don't have one. return; } final int shadowWidth = mShadowDrawable.getIntrinsicWidth(); switch (getViewSpec(mCoveredView)) { case LEFT: doDraw(c, mShadowDrawable, getCoverView().getLeft() - shadowWidth, getCoverView().getLeft(), getCoverView().getTop(), getCoverView().getBottom()); break; case RIGHT: doDraw(c, mShadowDrawable, getCoverView().getRight(), getCoverView().getRight() + shadowWidth, getCoverView().getTop(), getCoverView().getBottom()); break; default: break; } }
From source file:com.hippo.ehviewer.ui.scene.GalleryDetailScene.java
@Nullable @Override//w ww. jav a 2 s .c o m public View onCreateView2(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { // Get download state long gid = getGid(); if (gid != -1) { Context context = getContext2(); Assert.assertNotNull(context); mDownloadState = EhApplication.getDownloadManager(context).getDownloadState(gid); } else { mDownloadState = DownloadInfo.STATE_INVALID; } View view = inflater.inflate(R.layout.scene_gallery_detail, container, false); ViewGroup main = (ViewGroup) ViewUtils.$$(view, R.id.main); View mainView = ViewUtils.$$(main, R.id.scroll_view); View progressView = ViewUtils.$$(main, R.id.progress_view); mTip = (TextView) ViewUtils.$$(main, R.id.tip); mViewTransition = new ViewTransition(mainView, progressView, mTip); Context context = getContext2(); Assert.assertNotNull(context); Drawable drawable = DrawableManager.getDrawable(context, R.drawable.big_weird_face); drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); mTip.setCompoundDrawables(null, drawable, null, null); mTip.setOnClickListener(this); mHeader = ViewUtils.$$(mainView, R.id.header); mColorBg = ViewUtils.$$(mHeader, R.id.color_bg); mThumb = (LoadImageView) ViewUtils.$$(mHeader, R.id.thumb); mTitle = (TextView) ViewUtils.$$(mHeader, R.id.title); mUploader = (TextView) ViewUtils.$$(mHeader, R.id.uploader); mCategory = (TextView) ViewUtils.$$(mHeader, R.id.category); mOtherActions = (ImageView) ViewUtils.$$(mHeader, R.id.other_actions); mActionGroup = (ViewGroup) ViewUtils.$$(mHeader, R.id.action_card); mDownload = (TextView) ViewUtils.$$(mActionGroup, R.id.download); mRead = ViewUtils.$$(mActionGroup, R.id.read); Ripple.addRipple(mOtherActions, false); Ripple.addRipple(mDownload, false); Ripple.addRipple(mRead, false); mUploader.setOnClickListener(this); mCategory.setOnClickListener(this); mOtherActions.setOnClickListener(this); mDownload.setOnClickListener(this); mDownload.setOnLongClickListener(this); mRead.setOnClickListener(this); mUploader.setOnLongClickListener(this); mBelowHeader = mainView.findViewById(R.id.below_header); View belowHeader = mBelowHeader; mInfo = ViewUtils.$$(belowHeader, R.id.info); mLanguage = (TextView) ViewUtils.$$(mInfo, R.id.language); mPages = (TextView) ViewUtils.$$(mInfo, R.id.pages); mSize = (TextView) ViewUtils.$$(mInfo, R.id.size); mPosted = (TextView) ViewUtils.$$(mInfo, R.id.posted); mFavoredTimes = (TextView) ViewUtils.$$(mInfo, R.id.favoredTimes); Ripple.addRipple(mInfo, false); mInfo.setOnClickListener(this); mActions = ViewUtils.$$(belowHeader, R.id.actions); mRatingText = (TextView) ViewUtils.$$(mActions, R.id.rating_text); mRating = (RatingBar) ViewUtils.$$(mActions, R.id.rating); mHeartGroup = ViewUtils.$$(mActions, R.id.heart_group); mHeart = (TextView) ViewUtils.$$(mHeartGroup, R.id.heart); mHeartOutline = (TextView) ViewUtils.$$(mHeartGroup, R.id.heart_outline); mTorrent = (TextView) ViewUtils.$$(mActions, R.id.torrent); mShare = (TextView) ViewUtils.$$(mActions, R.id.share); mRate = (TextView) ViewUtils.$$(mActions, R.id.rate); mSimilar = (TextView) ViewUtils.$$(mActions, R.id.similar); mSearchCover = (TextView) ViewUtils.$$(mActions, R.id.search_cover); Ripple.addRipple(mHeartGroup, false); Ripple.addRipple(mTorrent, false); Ripple.addRipple(mShare, false); Ripple.addRipple(mRate, false); Ripple.addRipple(mSimilar, false); Ripple.addRipple(mSearchCover, false); mHeartGroup.setOnClickListener(this); mTorrent.setOnClickListener(this); mShare.setOnClickListener(this); mRate.setOnClickListener(this); mSimilar.setOnClickListener(this); mSearchCover.setOnClickListener(this); ensureActionDrawable(context); mTags = (LinearLayout) ViewUtils.$$(belowHeader, R.id.tags); mNoTags = (TextView) ViewUtils.$$(mTags, R.id.no_tags); mComments = (LinearLayout) ViewUtils.$$(belowHeader, R.id.comments); mCommentsText = (TextView) ViewUtils.$$(mComments, R.id.comments_text); Ripple.addRipple(mComments, false); mComments.setOnClickListener(this); mPreviews = ViewUtils.$$(belowHeader, R.id.previews); mGridLayout = (SimpleGridAutoSpanLayout) ViewUtils.$$(mPreviews, R.id.grid_layout); mPreviewText = (TextView) ViewUtils.$$(mPreviews, R.id.preview_text); Ripple.addRipple(mPreviews, false); mPreviews.setOnClickListener(this); mProgress = ViewUtils.$$(mainView, R.id.progress); mViewTransition2 = new ViewTransition(mBelowHeader, mProgress); if (prepareData()) { if (mGalleryDetail != null) { bindViewSecond(); setTransitionName(); adjustViewVisibility(STATE_NORMAL, false); } else if (mGalleryInfo != null) { bindViewFirst(); setTransitionName(); adjustViewVisibility(STATE_REFRESH_HEADER, false); } else { adjustViewVisibility(STATE_REFRESH, false); } } else { mTip.setText(R.string.error_cannot_find_gallery); adjustViewVisibility(STATE_FAILED, false); } EhApplication.getDownloadManager(context).addDownloadInfoListener(this); return view; }
From source file:org.kde.necessitas.ministro.ExtractStyle.java
public JSONObject getDrawable(Object drawable, String filename) { JSONObject json = new JSONObject(); Bitmap bmp = null;// www . ja v a 2s. c om if (drawable instanceof Bitmap) bmp = (Bitmap) drawable; else { if (drawable instanceof BitmapDrawable) bmp = ((BitmapDrawable) drawable).getBitmap(); else { if (drawable instanceof LayerDrawable) { return getLayerDrawable(drawable, filename); } if (drawable instanceof StateListDrawable) { return getStateListDrawable(drawable, filename); } if (drawable instanceof GradientDrawable) { return getGradientDrawable((GradientDrawable) drawable); } if (drawable instanceof ClipDrawable) { try { json.put("type", "clipDrawable"); json.put("drawable", getDrawable( getClipStateDrawableObject(((ClipDrawable) drawable).getConstantState()), filename)); Rect padding = new Rect(); if (((Drawable) drawable).getPadding(padding)) json.put("padding", getJsonRect(padding)); } catch (Exception e) { e.printStackTrace(); } return json; } if (drawable instanceof ColorDrawable) { bmp = Bitmap.createBitmap(1, 1, Config.ARGB_8888); Drawable d = (Drawable) drawable; d.setBounds(0, 0, 1, 1); d.draw(new Canvas(bmp)); Rect padding = new Rect(); try { json.put("type", "color"); json.put("color", bmp.getPixel(0, 0)); if (d.getPadding(padding)) json.put("padding", getJsonRect(padding)); } catch (JSONException e) { e.printStackTrace(); } return json; } else { Drawable d = (Drawable) drawable; int w = d.getIntrinsicWidth(); int h = d.getIntrinsicHeight(); d.setLevel(10000); if (w < 1 || h < 1) { w = 100; h = 100; } bmp = Bitmap.createBitmap(w, h, Config.ARGB_8888); d.setBounds(0, 0, w, h); d.draw(new Canvas(bmp)); if (drawable instanceof NinePatchDrawable) { NinePatchDrawable npd = (NinePatchDrawable) drawable; try { json.put("type", "9patch"); json.put("drawable", getDrawable(bmp, filename)); Rect padding = new Rect(); if (npd.getPadding(padding)) json.put("padding", getJsonRect(padding)); json.put("chunkInfo", findPatchesMarings(d)); return json; } catch (JSONException e) { e.printStackTrace(); } } } } } FileOutputStream out; try { filename = m_extractPath + filename + ".png"; out = new FileOutputStream(filename); bmp.compress(Bitmap.CompressFormat.PNG, 100, out); out.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } try { json.put("type", "image"); json.put("path", filename); json.put("width", bmp.getWidth()); json.put("height", bmp.getHeight()); MinistroActivity.nativeChmode(filename, 0644); } catch (JSONException e) { e.printStackTrace(); } return json; }
From source file:com.android.launcher2.AsyncTaskCallback.java
private boolean beginDraggingWidget(View v) { mDraggingWidget = true;//w ww .java 2 s . c om // Get the widget preview as the drag representation ImageView image = (ImageView) v.findViewById(R.id.widget_preview); PendingAddItemInfo createItemInfo = (PendingAddItemInfo) v.getTag(); // If the ImageView doesn't have a drawable yet, the widget preview hasn't been loaded and // we abort the drag. if (image.getDrawable() == null) { mDraggingWidget = false; return false; } // Compose the drag image Bitmap preview; Bitmap outline; float scale = 1f; if (createItemInfo instanceof PendingAddWidgetInfo) { // This can happen in some weird cases involving multi-touch. We can't start dragging // the widget if this is null, so we break out. if (mCreateWidgetInfo == null) { return false; } PendingAddWidgetInfo createWidgetInfo = mCreateWidgetInfo; createItemInfo = createWidgetInfo; int spanX = createItemInfo.spanX; int spanY = createItemInfo.spanY; int[] size = mLauncher.getWorkspace().estimateItemSize(spanX, spanY, createWidgetInfo, true); FastBitmapDrawable previewDrawable = (FastBitmapDrawable) image.getDrawable(); float minScale = 1.25f; int maxWidth, maxHeight; maxWidth = Math.min((int) (previewDrawable.getIntrinsicWidth() * minScale), size[0]); maxHeight = Math.min((int) (previewDrawable.getIntrinsicHeight() * minScale), size[1]); preview = getWidgetPreview(createWidgetInfo.componentName, createWidgetInfo.previewImage, createWidgetInfo.icon, spanX, spanY, maxWidth, maxHeight); // Determine the image view drawable scale relative to the preview float[] mv = new float[9]; Matrix m = new Matrix(); m.setRectToRect(new RectF(0f, 0f, (float) preview.getWidth(), (float) preview.getHeight()), new RectF(0f, 0f, (float) previewDrawable.getIntrinsicWidth(), (float) previewDrawable.getIntrinsicHeight()), Matrix.ScaleToFit.START); m.getValues(mv); scale = (float) mv[0]; } else { PendingAddShortcutInfo createShortcutInfo = (PendingAddShortcutInfo) v.getTag(); Drawable icon = mIconCache.getFullResIcon(createShortcutInfo.shortcutActivityInfo); preview = Bitmap.createBitmap(icon.getIntrinsicWidth(), icon.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); mCanvas.setBitmap(preview); mCanvas.save(); renderDrawableToBitmap(icon, preview, 0, 0, icon.getIntrinsicWidth(), icon.getIntrinsicHeight()); mCanvas.restore(); mCanvas.setBitmap(null); createItemInfo.spanX = createItemInfo.spanY = 1; } // Don't clip alpha values for the drag outline if we're using the default widget preview boolean clipAlpha = !(createItemInfo instanceof PendingAddWidgetInfo && (((PendingAddWidgetInfo) createItemInfo).previewImage == 0)); // Save the preview for the outline generation, then dim the preview outline = Bitmap.createScaledBitmap(preview, preview.getWidth(), preview.getHeight(), false); // Start the drag mLauncher.lockScreenOrientation(); mLauncher.getWorkspace().onDragStartedWithItem(createItemInfo, outline, clipAlpha); mDragController.startDrag(image, preview, this, createItemInfo, DragController.DRAG_ACTION_COPY, null, scale); outline.recycle(); preview.recycle(); return true; }