android.content.Intent#setSourceBounds ( )源码实例Demo

下面列出了android.content.Intent#setSourceBounds ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: GyroscopeImageDemo   文件: CoverActivity.java
/**
 * @param cover_url Loading 图 url
 * @param gyroscopeImageView 想要做动画的 GyroscopeImageView
 */
public static void startActivityWithAnimation(final Activity activity, String cover_url,
    GyroscopeImageView gyroscopeImageView) {
  final Intent intent = new Intent(activity, CoverActivity.class);
  intent.putExtra(COVER_URL, cover_url);
  // 获取控件位置信息
  final Rect rect = new Rect();
  gyroscopeImageView.getGlobalVisibleRect(rect);
  intent.setSourceBounds(rect);
  intent.putExtra(OFFSET_X, gyroscopeImageView.getOffsetX());
  intent.putExtra(OFFSET_Y, gyroscopeImageView.getOffsetY());
  activity.startActivity(intent);
  activity.overridePendingTransition(0, 0);
}
 
源代码2 项目: LaunchEnr   文件: Launcher.java
/**
 * Event handler for the wallpaper picker button that appears after a long press
 * on the home screen.
 */
public void onClickWallpaperPicker(View v) {
    if (!Utilities.isWallpaperAllowed(this)) {
        Toast.makeText(this, R.string.msg_disabled_by_admin, Toast.LENGTH_SHORT).show();
        return;
    }

    int pageScroll = mWorkspace.getScrollForPage(mWorkspace.getPageNearestToCenterOfScreen());
    float offset = mWorkspace.mWallpaperOffset.wallpaperOffsetForScroll(pageScroll);
    setWaitingForResult(new PendingRequestArgs(new ItemInfo()));
    Intent intent = new Intent(Intent.ACTION_SET_WALLPAPER)
            .putExtra(Utilities.EXTRA_WALLPAPER_OFFSET, offset);

    String pickerPackage = getString(R.string.wallpaper_picker_package);
    boolean hasTargetPackage = TextUtils.isEmpty(pickerPackage);
    if (!hasTargetPackage) {
        intent.setPackage(pickerPackage);
    }

    intent.setSourceBounds(getViewBounds(v));
    try {
        startActivityForResult(intent, REQUEST_PICK_WALLPAPER,
                // If there is no target package, use the default intent chooser animation
                hasTargetPackage ? getActivityLaunchOptions(v) : null);
    } catch (ActivityNotFoundException e) {
        setWaitingForResult(null);
        Toast.makeText(this, R.string.activity_not_found, Toast.LENGTH_SHORT).show();
    }
}
 
源代码3 项目: LaunchEnr   文件: Launcher.java
/**
 * Event handler for a click on the settings button that appears after a long press
 * on the home screen.
 */
public void onClickSettingsButton(View v) {
    Intent intent = new Intent(Intent.ACTION_APPLICATION_PREFERENCES)
            .setPackage(getPackageName());
    intent.setSourceBounds(getViewBounds(v));
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent, getActivityLaunchOptions(v));
}
 
源代码4 项目: LaunchEnr   文件: Launcher.java
public boolean startActivitySafely(View v, Intent intent, ItemInfo item) {
    if (mIsSafeModeEnabled && !Utilities.isSystemApp(this, intent)) {
        Toast.makeText(this, R.string.safemode_shortcut_error, Toast.LENGTH_SHORT).show();
        return false;
    }
    // Only launch using the new animation if the shortcut has not opted out (this is a
    // private contract between launcher and may be ignored in the future).
    boolean useLaunchAnimation = (v != null) &&
            !intent.hasExtra(INTENT_EXTRA_IGNORE_LAUNCH_ANIMATION);
    Bundle optsBundle = useLaunchAnimation ? getActivityLaunchOptions(v) : null;

    UserHandle user = item == null ? null : item.user;

    // Prepare intent
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    if (v != null) {
        intent.setSourceBounds(getViewBounds(v));
    }
    try {
        if (AndroidVersion.isAtLeastMarshmallow
                && (item instanceof ShortcutInfo)
                && (item.itemType == Favorites.ITEM_TYPE_SHORTCUT
                 || item.itemType == Favorites.ITEM_TYPE_DEEP_SHORTCUT)
                && !((ShortcutInfo) item).isPromise()) {
            // Shortcuts need some special checks due to legacy reasons.
            startShortcutIntentSafely(intent, optsBundle, item);
        } else if (user == null || user.equals(Process.myUserHandle())) {
            // Could be launching some bookkeeping activity
            startActivity(intent, optsBundle);
        } else {
            LauncherAppsCompat.getInstance(this).startActivityForProfile(
                    intent.getComponent(), user, intent.getSourceBounds(), optsBundle);
        }
        return true;
    } catch (ActivityNotFoundException|SecurityException e) {
        Toast.makeText(this, R.string.activity_not_found, Toast.LENGTH_SHORT).show();
        e.printStackTrace();
    }
    return false;
}
 
源代码5 项目: LaunchEnr   文件: AddWorkspaceItemsTask.java
/**
 * Returns true if the shortcuts already exists on the workspace. This must be called after
 * the workspace has been loaded. We identify a shortcut by its intent.
 */
private boolean shortcutExists(BgDataModel dataModel, Intent intent, UserHandle user) {
    final String intentWithPkg, intentWithoutPkg;
    if (intent == null) {
        // Skip items with null intents
        return true;
    }
    if (intent.getComponent() != null) {
        // If component is not null, an intent with null package will produce
        // the same result and should also be a match.
        String packageName = intent.getComponent().getPackageName();
        if (intent.getPackage() != null) {
            intentWithPkg = intent.toUri(0);
            intentWithoutPkg = new Intent(intent).setPackage(null).toUri(0);
        } else {
            intentWithPkg = new Intent(intent).setPackage(packageName).toUri(0);
            intentWithoutPkg = intent.toUri(0);
        }
    } else {
        intentWithPkg = intent.toUri(0);
        intentWithoutPkg = intent.toUri(0);
    }

    synchronized (dataModel) {
        for (ItemInfo item : dataModel.itemsIdMap) {
            if (item instanceof ShortcutInfo) {
                ShortcutInfo info = (ShortcutInfo) item;
                if (item.getIntent() != null && info.user.equals(user)) {
                    Intent copyIntent = new Intent(item.getIntent());
                    copyIntent.setSourceBounds(intent.getSourceBounds());
                    String s = copyIntent.toUri(0);
                    if (intentWithPkg.equals(s) || intentWithoutPkg.equals(s)) {
                        return true;
                    }
                }
            }
        }
    }
    return false;
}
 
源代码6 项目: paper-launcher   文件: IntentUtil.java
public static void launchApp(View view, Intent intent) {
    if (intent == null) {
        return;
    }

    intent.setSourceBounds(IntentUtil.getViewBounds(view));
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    view.getContext().startActivity(intent, IntentUtil.getActivityLaunchOptions(view));
}
 
源代码7 项目: paper-launcher   文件: IntentUtil.java
public static void startGoogleSearchActivity(View view) {
    final Context context = view.getContext();

    final SearchManager searchManager =
            (SearchManager) context.getSystemService(Context.SEARCH_SERVICE);
    if (searchManager == null) {
        return;
    }

    ComponentName globalSearchActivity = searchManager.getGlobalSearchActivity();
    if (globalSearchActivity == null) {
        return;
    }

    Intent intent = new Intent(SearchManager.INTENT_ACTION_GLOBAL_SEARCH);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.setComponent(globalSearchActivity);

    Bundle appSearchData = new Bundle();
    appSearchData.putString("source", context.getPackageName());

    intent.putExtra(SearchManager.APP_DATA, appSearchData);
    intent.setSourceBounds(getViewBounds(view));
    try {
        context.startActivity(intent);
    } catch (ActivityNotFoundException ex) {
        ex.printStackTrace();
    }
}
 
源代码8 项目: Trebuchet   文件: LauncherAppsCompatV16.java
public void startActivityForProfile(ComponentName component, UserHandleCompat user,
        Rect sourceBounds, Bundle opts) {
    Intent launchIntent = new Intent(Intent.ACTION_MAIN);
    launchIntent.addCategory(Intent.CATEGORY_LAUNCHER);
    launchIntent.setComponent(component);
    launchIntent.setSourceBounds(sourceBounds);
    launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    mContext.startActivity(launchIntent, opts);
}
 
源代码9 项目: LB-Launcher   文件: LauncherAppsCompatV16.java
public void startActivityForProfile(ComponentName component, UserHandleCompat user,
        Rect sourceBounds, Bundle opts) {
    Intent launchIntent = new Intent(Intent.ACTION_MAIN);
    launchIntent.addCategory(Intent.CATEGORY_LAUNCHER);
    launchIntent.setComponent(component);
    launchIntent.setSourceBounds(sourceBounds);
    launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    mContext.startActivity(launchIntent, opts);
}
 
源代码10 项目: android_9.0.0_r45   文件: LauncherAppsService.java
@Override
public void startActivityAsUser(IApplicationThread caller, String callingPackage,
        ComponentName component, Rect sourceBounds,
        Bundle opts, UserHandle user) throws RemoteException {
    if (!canAccessProfile(user.getIdentifier(), "Cannot start activity")) {
        return;
    }

    Intent launchIntent = new Intent(Intent.ACTION_MAIN);
    launchIntent.addCategory(Intent.CATEGORY_LAUNCHER);
    launchIntent.setSourceBounds(sourceBounds);
    launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
            | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
    launchIntent.setPackage(component.getPackageName());

    boolean canLaunch = false;

    final int callingUid = injectBinderCallingUid();
    long ident = Binder.clearCallingIdentity();
    try {
        final PackageManagerInternal pmInt =
                LocalServices.getService(PackageManagerInternal.class);
        ActivityInfo info = pmInt.getActivityInfo(component,
                PackageManager.MATCH_DIRECT_BOOT_AWARE
                        | PackageManager.MATCH_DIRECT_BOOT_UNAWARE,
                callingUid, user.getIdentifier());
        if (!info.exported) {
            throw new SecurityException("Cannot launch non-exported components "
                    + component);
        }

        // Check that the component actually has Intent.CATEGORY_LAUCNCHER
        // as calling startActivityAsUser ignores the category and just
        // resolves based on the component if present.
        List<ResolveInfo> apps = pmInt.queryIntentActivities(launchIntent,
                PackageManager.MATCH_DIRECT_BOOT_AWARE
                        | PackageManager.MATCH_DIRECT_BOOT_UNAWARE,
                callingUid, user.getIdentifier());
        final int size = apps.size();
        for (int i = 0; i < size; ++i) {
            ActivityInfo activityInfo = apps.get(i).activityInfo;
            if (activityInfo.packageName.equals(component.getPackageName()) &&
                    activityInfo.name.equals(component.getClassName())) {
                // Found an activity with category launcher that matches
                // this component so ok to launch.
                launchIntent.setPackage(null);
                launchIntent.setComponent(component);
                canLaunch = true;
                break;
            }
        }
        if (!canLaunch) {
            throw new SecurityException("Attempt to launch activity without "
                    + " category Intent.CATEGORY_LAUNCHER " + component);
        }
    } finally {
        Binder.restoreCallingIdentity(ident);
    }
    mActivityManagerInternal.startActivityAsUser(caller, callingPackage,
            launchIntent, opts, user.getIdentifier());
}
 
源代码11 项目: paper-launcher   文件: IntentUtil.java
public static void startGoogleVoiceRecognitionActivity(View view) {
    Intent intent = new Intent("android.speech.action.VOICE_SEARCH_HANDS_FREE");
    intent.setSourceBounds(getViewBounds(view));
    view.getContext().startActivity(intent);
}
 
源代码12 项目: TurboLauncher   文件: Launcher.java
/**
 * Launches the intent referred by the clicked shortcut.
 * 
 * @param v
 *            The view representing the clicked shortcut.
 */
public void onClick(View v) {
	// Make sure that rogue clicks don't get through while allapps is
	// launching, or after the
	// view has detached (it's possible for this to happen if the view is
	// removed mid touch).
	if (v.getWindowToken() == null) {
		return;
	}

	if (!mWorkspace.isFinishedSwitchingState()) {
		return;
	}

	if (v instanceof Workspace) {
		if (mWorkspace.isInOverviewMode()) {
			mWorkspace.exitOverviewMode(true);
		}
		return;
	}

	if (v instanceof CellLayout) {
		if (isAllAppsVisible()) {
			if (mAppsCustomizeContent.isInOverviewMode()) {
				mAppsCustomizeContent.exitOverviewMode(
						mAppsCustomizeContent.indexOfChild(v), true);
			}
		} else {
			if (mWorkspace.isInOverviewMode()) {
				mWorkspace.exitOverviewMode(mWorkspace.indexOfChild(v),
						true);
			}
		}
	}

	Object tag = v.getTag();
	if (tag instanceof ShortcutInfo) {
		// Open shortcut
		final ShortcutInfo shortcut = (ShortcutInfo) tag;
		if (shortcut.itemType == LauncherSettings.Favorites.ITEM_TYPE_ALLAPPS) {
			showAllApps(true,
					AppsCustomizePagedView.ContentType.Applications, true);
		} else {
			final Intent intent = shortcut.intent;

			// Check for special shortcuts
			if (intent.getComponent() != null) {
				final String shortcutClass = intent.getComponent()
						.getClassName();

				if (shortcutClass.equals(WidgetAdder.class.getName())) {
					onClickAddWidgetButton();
					return;
				}
			}

			// Start activities
			int[] pos = new int[2];
			v.getLocationOnScreen(pos);
			intent.setSourceBounds(new Rect(pos[0], pos[1], pos[0]
					+ v.getWidth(), pos[1] + v.getHeight()));

			boolean success = startActivitySafely(v, intent, tag);

			mStats.recordLaunch(intent, shortcut);

			if (success && v instanceof BubbleTextView) {
				mWaitingForResume = (BubbleTextView) v;
				mWaitingForResume.setStayPressed(true);
			}
		}
	} else if (tag instanceof FolderInfo) {
		if (v instanceof FolderIcon) {
			FolderIcon fi = (FolderIcon) v;
			handleFolderClick(fi);
		}
	} else if (v == mAllAppsButton) {
		if (isAllAppsVisible()) {
			showWorkspace(true);
		} else {
			onClickAllAppsButton(v);
		}
	}
}
 
 方法所在类
 同类方法