Merging from ub-launcher3-rvc-dev @ build 6418896 am: df280add9e
Change-Id: Ibf35494db776be39302d21ef2ffe80102b7da9d3
This commit is contained in:
@@ -13,12 +13,20 @@
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<com.android.quickstep.views.LauncherRecentsView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:accessibilityPaneTitle="@string/accessibility_recent_apps"
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false"
|
||||
android:theme="@style/HomeScreenElementTheme"
|
||||
android:visibility="invisible" />
|
||||
<merge xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<com.android.quickstep.views.LauncherRecentsView
|
||||
android:id="@+id/overview_panel"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:accessibilityPaneTitle="@string/accessibility_recent_apps"
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false"
|
||||
android:theme="@style/HomeScreenElementTheme"
|
||||
android:visibility="invisible" />
|
||||
|
||||
<include
|
||||
android:id="@+id/overview_actions_view"
|
||||
layout="@layout/overview_actions_container" />
|
||||
|
||||
</merge>
|
||||
|
||||
+5
-7
@@ -30,6 +30,7 @@ import static com.android.launcher3.states.StateAnimationConfig.ANIM_HOTSEAT_TRA
|
||||
import static com.android.launcher3.states.StateAnimationConfig.ANIM_VERTICAL_PROGRESS;
|
||||
import static com.android.quickstep.TaskViewUtils.findTaskViewToLaunch;
|
||||
import static com.android.quickstep.TaskViewUtils.getRecentsWindowAnimator;
|
||||
import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_OFFSET;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
@@ -37,7 +38,6 @@ import android.animation.AnimatorSet;
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.animation.ValueAnimator;
|
||||
import android.content.Context;
|
||||
import android.util.FloatProperty;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
@@ -49,7 +49,6 @@ import com.android.launcher3.anim.AnimatorPlaybackController;
|
||||
import com.android.launcher3.anim.Interpolators;
|
||||
import com.android.launcher3.anim.SpringAnimationBuilder;
|
||||
import com.android.launcher3.states.StateAnimationConfig;
|
||||
import com.android.launcher3.touch.PagedOrientationHandler;
|
||||
import com.android.quickstep.util.AppWindowAnimationHelper;
|
||||
import com.android.quickstep.views.RecentsView;
|
||||
import com.android.quickstep.views.TaskView;
|
||||
@@ -199,11 +198,10 @@ public final class LauncherAppTransitionManagerImpl extends QuickstepAppTransiti
|
||||
return ObjectAnimator.ofFloat(mLauncher.getOverviewPanel(),
|
||||
RecentsView.CONTENT_ALPHA, values);
|
||||
case INDEX_RECENTS_TRANSLATE_X_ANIM:
|
||||
PagedOrientationHandler orientationHandler =
|
||||
((RecentsView)mLauncher.getOverviewPanel()).getPagedViewOrientedState()
|
||||
.getOrientationHandler();
|
||||
FloatProperty<View> translate = orientationHandler.getPrimaryViewTranslate();
|
||||
return new SpringAnimationBuilder<>(mLauncher.getOverviewPanel(), translate)
|
||||
// TODO: Do not assume motion across X axis for adjacent page
|
||||
return new SpringAnimationBuilder<>(
|
||||
mLauncher.getOverviewPanel(), ADJACENT_PAGE_OFFSET)
|
||||
.setMinimumVisibleChange(1f / mLauncher.getOverviewPanel().getWidth())
|
||||
.setDampingRatio(0.8f)
|
||||
.setStiffness(250)
|
||||
.setValues(values)
|
||||
|
||||
+38
-11
@@ -19,11 +19,13 @@ import static com.android.launcher3.accessibility.LauncherAccessibilityDelegate.
|
||||
import static com.android.launcher3.graphics.IconShape.getShape;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.BlurMaskFilter;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.DashPathEffect;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.Path;
|
||||
import android.graphics.Rect;
|
||||
import android.os.Process;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.ViewGroup;
|
||||
@@ -39,6 +41,7 @@ import com.android.launcher3.accessibility.LauncherAccessibilityDelegate;
|
||||
import com.android.launcher3.graphics.IconPalette;
|
||||
import com.android.launcher3.hybridhotseat.HotseatPredictionController;
|
||||
import com.android.launcher3.icons.IconNormalizer;
|
||||
import com.android.launcher3.icons.LauncherIcons;
|
||||
import com.android.launcher3.model.data.ItemInfo;
|
||||
import com.android.launcher3.model.data.WorkspaceItemInfo;
|
||||
import com.android.launcher3.touch.ItemClickHandler;
|
||||
@@ -51,13 +54,18 @@ import com.android.launcher3.views.DoubleShadowBubbleTextView;
|
||||
public class PredictedAppIcon extends DoubleShadowBubbleTextView implements
|
||||
LauncherAccessibilityDelegate.AccessibilityActionHandler {
|
||||
|
||||
private static final int RING_SHADOW_COLOR = 0x99000000;
|
||||
private static final float RING_EFFECT_RATIO = 0.11f;
|
||||
|
||||
boolean mIsDrawingDot = false;
|
||||
private final DeviceProfile mDeviceProfile;
|
||||
private final Paint mIconRingPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
|
||||
private final Path mRingPath = new Path();
|
||||
private boolean mIsPinned = false;
|
||||
private int mNormalizedIconRadius;
|
||||
private final int mNormalizedIconRadius;
|
||||
private final BlurMaskFilter mShadowFilter;
|
||||
private int mPlateColor;
|
||||
|
||||
|
||||
public PredictedAppIcon(Context context) {
|
||||
this(context, null, 0);
|
||||
@@ -73,13 +81,18 @@ public class PredictedAppIcon extends DoubleShadowBubbleTextView implements
|
||||
mNormalizedIconRadius = IconNormalizer.getNormalizedCircleSize(getIconSize()) / 2;
|
||||
setOnClickListener(ItemClickHandler.INSTANCE);
|
||||
setOnFocusChangeListener(Launcher.getLauncher(context).getFocusHandler());
|
||||
int shadowSize = context.getResources().getDimensionPixelSize(
|
||||
R.dimen.blur_size_thin_outline);
|
||||
mShadowFilter = new BlurMaskFilter(shadowSize, BlurMaskFilter.Blur.OUTER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDraw(Canvas canvas) {
|
||||
int count = canvas.save();
|
||||
if (!mIsPinned) {
|
||||
drawEffect(canvas);
|
||||
boolean isBadged = getTag() instanceof WorkspaceItemInfo
|
||||
&& !Process.myUserHandle().equals(((ItemInfo) getTag()).user);
|
||||
drawEffect(canvas, isBadged);
|
||||
canvas.translate(getWidth() * RING_EFFECT_RATIO, getHeight() * RING_EFFECT_RATIO);
|
||||
canvas.scale(1 - 2 * RING_EFFECT_RATIO, 1 - 2 * RING_EFFECT_RATIO);
|
||||
}
|
||||
@@ -102,7 +115,7 @@ public class PredictedAppIcon extends DoubleShadowBubbleTextView implements
|
||||
public void applyFromWorkspaceItem(WorkspaceItemInfo info) {
|
||||
super.applyFromWorkspaceItem(info);
|
||||
int color = IconPalette.getMutedColor(info.bitmap.color, 0.54f);
|
||||
mIconRingPaint.setColor(ColorUtils.setAlphaComponent(color, 200));
|
||||
mPlateColor = ColorUtils.setAlphaComponent(color, 200);
|
||||
if (mIsPinned) {
|
||||
setContentDescription(info.contentDescription);
|
||||
} else {
|
||||
@@ -174,9 +187,25 @@ public class PredictedAppIcon extends DoubleShadowBubbleTextView implements
|
||||
return getPaddingTop() + mDeviceProfile.folderIconOffsetYPx;
|
||||
}
|
||||
|
||||
private void drawEffect(Canvas canvas) {
|
||||
getShape().drawShape(canvas, getOutlineOffsetX(), getOutlineOffsetY(),
|
||||
mNormalizedIconRadius, mIconRingPaint);
|
||||
private void drawEffect(Canvas canvas, boolean isBadged) {
|
||||
mRingPath.reset();
|
||||
getShape().addToPath(mRingPath, getOutlineOffsetX(), getOutlineOffsetY(),
|
||||
mNormalizedIconRadius);
|
||||
if (isBadged) {
|
||||
float outlineSize = mNormalizedIconRadius * RING_EFFECT_RATIO * 2;
|
||||
float iconSize = getIconSize() * (1 - 2 * RING_EFFECT_RATIO);
|
||||
float badgeSize = LauncherIcons.getBadgeSizeForIconSize((int) iconSize) + outlineSize;
|
||||
float badgeInset = mNormalizedIconRadius * 2 - badgeSize;
|
||||
getShape().addToPath(mRingPath, getOutlineOffsetX() + badgeInset,
|
||||
getOutlineOffsetY() + badgeInset, badgeSize / 2);
|
||||
|
||||
}
|
||||
mIconRingPaint.setColor(RING_SHADOW_COLOR);
|
||||
mIconRingPaint.setMaskFilter(mShadowFilter);
|
||||
canvas.drawPath(mRingPath, mIconRingPaint);
|
||||
mIconRingPaint.setColor(mPlateColor);
|
||||
mIconRingPaint.setMaskFilter(null);
|
||||
canvas.drawPath(mRingPath, mIconRingPaint);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -205,10 +234,8 @@ public class PredictedAppIcon extends DoubleShadowBubbleTextView implements
|
||||
mOffsetX = icon.getOutlineOffsetX();
|
||||
mOffsetY = icon.getOutlineOffsetY();
|
||||
mIconRadius = icon.mNormalizedIconRadius;
|
||||
mOutlinePaint.setStyle(Paint.Style.STROKE);
|
||||
mOutlinePaint.setStrokeWidth(5);
|
||||
mOutlinePaint.setPathEffect(new DashPathEffect(new float[]{15, 15}, 0));
|
||||
mOutlinePaint.setColor(Color.argb(100, 245, 245, 245));
|
||||
mOutlinePaint.setStyle(Paint.Style.FILL);
|
||||
mOutlinePaint.setColor(Color.argb(24, 245, 245, 245));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+6
-15
@@ -15,19 +15,14 @@
|
||||
*/
|
||||
package com.android.launcher3.uioverrides;
|
||||
|
||||
import static com.android.launcher3.LauncherAnimUtils.VIEW_ALPHA;
|
||||
import static com.android.launcher3.LauncherState.OVERVIEW_BUTTONS;
|
||||
import static com.android.launcher3.anim.Interpolators.AGGRESSIVE_EASE_IN_OUT;
|
||||
import static com.android.launcher3.anim.Interpolators.LINEAR;
|
||||
import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_FADE;
|
||||
import static com.android.quickstep.views.RecentsView.CONTENT_ALPHA;
|
||||
import static com.android.quickstep.views.RecentsView.FULLSCREEN_PROGRESS;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.os.Build;
|
||||
import android.util.FloatProperty;
|
||||
import android.view.View;
|
||||
import android.view.animation.Interpolator;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
@@ -37,6 +32,7 @@ import com.android.launcher3.anim.AnimationSuccessListener;
|
||||
import com.android.launcher3.anim.PendingAnimation;
|
||||
import com.android.launcher3.anim.PropertySetter;
|
||||
import com.android.launcher3.states.StateAnimationConfig;
|
||||
import com.android.launcher3.util.MultiValueAlpha;
|
||||
import com.android.quickstep.views.ClearAllButton;
|
||||
import com.android.quickstep.views.LauncherRecentsView;
|
||||
import com.android.quickstep.views.RecentsView;
|
||||
@@ -60,7 +56,7 @@ public final class RecentsViewStateController extends
|
||||
mRecentsView.updateEmptyMessage();
|
||||
mRecentsView.resetTaskVisuals();
|
||||
}
|
||||
setAlphas(PropertySetter.NO_ANIM_PROPERTY_SETTER, state, LINEAR);
|
||||
setAlphas(PropertySetter.NO_ANIM_PROPERTY_SETTER, state);
|
||||
mRecentsView.setFullscreenProgress(state.getOverviewFullscreenProgress());
|
||||
}
|
||||
|
||||
@@ -78,22 +74,17 @@ public final class RecentsViewStateController extends
|
||||
AnimationSuccessListener.forRunnable(mRecentsView::resetTaskVisuals));
|
||||
}
|
||||
|
||||
setAlphas(builder, toState,
|
||||
config.getInterpolator(ANIM_OVERVIEW_FADE, AGGRESSIVE_EASE_IN_OUT));
|
||||
setAlphas(builder, toState);
|
||||
builder.setFloat(mRecentsView, FULLSCREEN_PROGRESS,
|
||||
toState.getOverviewFullscreenProgress(), LINEAR);
|
||||
}
|
||||
|
||||
private void setAlphas(PropertySetter propertySetter, LauncherState state,
|
||||
Interpolator actionInterpolator) {
|
||||
private void setAlphas(PropertySetter propertySetter, LauncherState state) {
|
||||
float buttonAlpha = (state.getVisibleElements(mLauncher) & OVERVIEW_BUTTONS) != 0 ? 1 : 0;
|
||||
propertySetter.setFloat(mRecentsView.getClearAllButton(), ClearAllButton.VISIBILITY_ALPHA,
|
||||
buttonAlpha, LINEAR);
|
||||
|
||||
View actionsView = mLauncher.getActionsView();
|
||||
if (actionsView != null) {
|
||||
propertySetter.setFloat(actionsView, VIEW_ALPHA, buttonAlpha, actionInterpolator);
|
||||
}
|
||||
propertySetter.setFloat(mLauncher.getActionsView().getVisibilityAlpha(),
|
||||
MultiValueAlpha.VALUE, buttonAlpha, LINEAR);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+10
-7
@@ -61,13 +61,16 @@ public class BackgroundAppState extends OverviewState {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ScaleAndTranslation getOverviewScaleAndTranslation(Launcher launcher) {
|
||||
public float[] getOverviewScaleAndOffset(Launcher launcher) {
|
||||
return new float[] {getOverviewScale(launcher), NO_OFFSET};
|
||||
}
|
||||
|
||||
private float getOverviewScale(Launcher launcher) {
|
||||
// Initialize the recents view scale to what it would be when starting swipe up
|
||||
RecentsView recentsView = launcher.getOverviewPanel();
|
||||
int taskCount = recentsView.getTaskViewCount();
|
||||
if (taskCount == 0) {
|
||||
return super.getOverviewScaleAndTranslation(launcher);
|
||||
}
|
||||
if (taskCount == 0) return 1;
|
||||
|
||||
TaskView dummyTask;
|
||||
if (recentsView.getCurrentPage() >= recentsView.getTaskViewStartIndex()) {
|
||||
if (recentsView.getCurrentPage() <= taskCount - 1) {
|
||||
@@ -78,8 +81,8 @@ public class BackgroundAppState extends OverviewState {
|
||||
} else {
|
||||
dummyTask = recentsView.getTaskViewAt(0);
|
||||
}
|
||||
return recentsView.getTempAppWindowAnimationHelper().updateForFullscreenOverview(dummyTask)
|
||||
.getScaleAndTranslation();
|
||||
return recentsView.getTempAppWindowAnimationHelper()
|
||||
.updateForFullscreenOverview(dummyTask).getSrcToTargetScale();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -106,7 +109,7 @@ public class BackgroundAppState extends OverviewState {
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getDepth(Context context) {
|
||||
protected float getDepthUnchecked(Context context) {
|
||||
return 1f;
|
||||
}
|
||||
}
|
||||
|
||||
+4
-10
@@ -24,24 +24,18 @@ import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_TR
|
||||
|
||||
import com.android.launcher3.Launcher;
|
||||
import com.android.launcher3.LauncherState;
|
||||
import com.android.launcher3.R;
|
||||
import com.android.launcher3.Utilities;
|
||||
import com.android.launcher3.states.StateAnimationConfig;
|
||||
|
||||
public class OverviewPeekState extends OverviewState {
|
||||
private static final float OVERVIEW_OFFSET = 0.7f;
|
||||
|
||||
public OverviewPeekState(int id) {
|
||||
super(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ScaleAndTranslation getOverviewScaleAndTranslation(Launcher launcher) {
|
||||
ScaleAndTranslation result = super.getOverviewScaleAndTranslation(launcher);
|
||||
result.translationX = NORMAL.getOverviewScaleAndTranslation(launcher).translationX
|
||||
- launcher.getResources().getDimension(R.dimen.overview_peek_distance);
|
||||
if (Utilities.isRtl(launcher.getResources())) {
|
||||
result.translationX = -result.translationX;
|
||||
}
|
||||
return result;
|
||||
public float[] getOverviewScaleAndOffset(Launcher launcher) {
|
||||
return new float[] {NO_SCALE, OVERVIEW_OFFSET};
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+3
-5
@@ -24,7 +24,6 @@ import static com.android.launcher3.anim.Interpolators.OVERSHOOT_1_2;
|
||||
import static com.android.launcher3.anim.Interpolators.OVERSHOOT_1_7;
|
||||
import static com.android.launcher3.config.FeatureFlags.ENABLE_OVERVIEW_ACTIONS;
|
||||
import static com.android.launcher3.logging.LoggerUtils.newContainerTarget;
|
||||
import static com.android.launcher3.states.RotationHelper.REQUEST_ROTATE;
|
||||
import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_FADE;
|
||||
import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_SCALE;
|
||||
import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_TRANSLATE_X;
|
||||
@@ -123,8 +122,8 @@ public class OverviewState extends LauncherState {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ScaleAndTranslation getOverviewScaleAndTranslation(Launcher launcher) {
|
||||
return new ScaleAndTranslation(1f, 0f, 0f);
|
||||
public float[] getOverviewScaleAndOffset(Launcher launcher) {
|
||||
return new float[] {NO_SCALE, NO_OFFSET};
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -144,7 +143,6 @@ public class OverviewState extends LauncherState {
|
||||
|
||||
@Override
|
||||
public void onStateTransitionEnd(Launcher launcher) {
|
||||
launcher.getRotationHelper().setCurrentStateRequest(REQUEST_ROTATE);
|
||||
DiscoveryBounce.showForOverviewIfNeeded(launcher);
|
||||
RecentsView recentsView = launcher.getOverviewPanel();
|
||||
AccessibilityManagerCompat.sendCustomAccessibilityEvent(
|
||||
@@ -205,7 +203,7 @@ public class OverviewState extends LauncherState {
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getDepth(Context context) {
|
||||
protected float getDepthUnchecked(Context context) {
|
||||
return 1f;
|
||||
}
|
||||
|
||||
|
||||
+15
-42
@@ -40,17 +40,15 @@ import static com.android.launcher3.util.VibratorWrapper.OVERVIEW_HAPTIC;
|
||||
import static com.android.quickstep.util.ShelfPeekAnim.ShelfAnimState.CANCEL;
|
||||
import static com.android.quickstep.util.ShelfPeekAnim.ShelfAnimState.HIDE;
|
||||
import static com.android.quickstep.util.ShelfPeekAnim.ShelfAnimState.PEEK;
|
||||
import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_OFFSET;
|
||||
import static com.android.quickstep.views.RecentsView.FULLSCREEN_PROGRESS;
|
||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_OVERVIEW_DISABLED;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.animation.AnimatorSet;
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.animation.ValueAnimator;
|
||||
import android.graphics.PointF;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.animation.Interpolator;
|
||||
|
||||
import com.android.launcher3.BaseQuickstepLauncher;
|
||||
@@ -59,6 +57,7 @@ import com.android.launcher3.R;
|
||||
import com.android.launcher3.Utilities;
|
||||
import com.android.launcher3.allapps.AllAppsTransitionController;
|
||||
import com.android.launcher3.anim.AnimatorPlaybackController;
|
||||
import com.android.launcher3.anim.PendingAnimation;
|
||||
import com.android.launcher3.config.FeatureFlags;
|
||||
import com.android.launcher3.graphics.OverviewScrim;
|
||||
import com.android.launcher3.states.StateAnimationConfig;
|
||||
@@ -237,58 +236,32 @@ public class NoButtonQuickSwitchTouchController implements TouchController,
|
||||
private void setupOverviewAnimators() {
|
||||
final LauncherState fromState = QUICK_SWITCH;
|
||||
final LauncherState toState = OVERVIEW;
|
||||
LauncherState.ScaleAndTranslation fromScaleAndTranslation = fromState
|
||||
.getOverviewScaleAndTranslation(mLauncher);
|
||||
LauncherState.ScaleAndTranslation toScaleAndTranslation = toState
|
||||
.getOverviewScaleAndTranslation(mLauncher);
|
||||
// Update RecentView's translationX to have it start offscreen.
|
||||
float startScale = Utilities.mapRange(
|
||||
SCALE_DOWN_INTERPOLATOR.getInterpolation(Y_ANIM_MIN_PROGRESS),
|
||||
fromScaleAndTranslation.scale,
|
||||
toScaleAndTranslation.scale);
|
||||
fromScaleAndTranslation.translationX = mRecentsView.getOffscreenTranslationX(startScale);
|
||||
|
||||
// Set RecentView's initial properties.
|
||||
mRecentsView.setScaleX(fromScaleAndTranslation.scale);
|
||||
mRecentsView.setScaleY(fromScaleAndTranslation.scale);
|
||||
mRecentsView.setTranslationX(fromScaleAndTranslation.translationX);
|
||||
mRecentsView.setTranslationY(fromScaleAndTranslation.translationY);
|
||||
SCALE_PROPERTY.set(mRecentsView, fromState.getOverviewScaleAndOffset(mLauncher)[0]);
|
||||
ADJACENT_PAGE_OFFSET.set(mRecentsView, 1f);
|
||||
mRecentsView.setContentAlpha(1);
|
||||
mRecentsView.setFullscreenProgress(fromState.getOverviewFullscreenProgress());
|
||||
|
||||
float[] scaleAndOffset = toState.getOverviewScaleAndOffset(mLauncher);
|
||||
// As we drag right, animate the following properties:
|
||||
// - RecentsView translationX
|
||||
// - OverviewScrim
|
||||
AnimatorSet xOverviewAnim = new AnimatorSet();
|
||||
xOverviewAnim.play(ObjectAnimator.ofFloat(mRecentsView, View.TRANSLATION_X,
|
||||
toScaleAndTranslation.translationX));
|
||||
xOverviewAnim.play(ObjectAnimator.ofFloat(
|
||||
mLauncher.getDragLayer().getOverviewScrim(), OverviewScrim.SCRIM_PROGRESS,
|
||||
toState.getOverviewScrimAlpha(mLauncher)));
|
||||
long xAccuracy = (long) (mXRange * 2);
|
||||
xOverviewAnim.setDuration(xAccuracy);
|
||||
mXOverviewAnim = AnimatorPlaybackController.wrap(xOverviewAnim, xAccuracy);
|
||||
PendingAnimation xAnim = new PendingAnimation((long) (mXRange * 2));
|
||||
xAnim.setFloat(mRecentsView, ADJACENT_PAGE_OFFSET, scaleAndOffset[1], LINEAR);
|
||||
xAnim.setFloat(mLauncher.getDragLayer().getOverviewScrim(), OverviewScrim.SCRIM_PROGRESS,
|
||||
toState.getOverviewScrimAlpha(mLauncher), LINEAR);
|
||||
mXOverviewAnim = xAnim.createPlaybackController();
|
||||
mXOverviewAnim.dispatchOnStart();
|
||||
|
||||
// As we drag up, animate the following properties:
|
||||
// - RecentsView translationY
|
||||
// - RecentsView scale
|
||||
// - RecentsView fullscreenProgress
|
||||
AnimatorSet yAnimation = new AnimatorSet();
|
||||
Animator translateYAnim = ObjectAnimator.ofFloat(mRecentsView, View.TRANSLATION_Y,
|
||||
toScaleAndTranslation.translationY);
|
||||
Animator scaleAnim = ObjectAnimator.ofFloat(mRecentsView, SCALE_PROPERTY,
|
||||
toScaleAndTranslation.scale);
|
||||
Animator fullscreenProgressAnim = ObjectAnimator.ofFloat(mRecentsView, FULLSCREEN_PROGRESS,
|
||||
fromState.getOverviewFullscreenProgress(), toState.getOverviewFullscreenProgress());
|
||||
scaleAnim.setInterpolator(SCALE_DOWN_INTERPOLATOR);
|
||||
fullscreenProgressAnim.setInterpolator(SCALE_DOWN_INTERPOLATOR);
|
||||
yAnimation.play(translateYAnim);
|
||||
yAnimation.play(scaleAnim);
|
||||
yAnimation.play(fullscreenProgressAnim);
|
||||
long yAccuracy = (long) (mYRange * 2);
|
||||
yAnimation.setDuration(yAccuracy);
|
||||
mYOverviewAnim = AnimatorPlaybackController.wrap(yAnimation, yAccuracy);
|
||||
PendingAnimation yAnim = new PendingAnimation((long) (mYRange * 2));
|
||||
yAnim.setFloat(mRecentsView, SCALE_PROPERTY, scaleAndOffset[0], SCALE_DOWN_INTERPOLATOR);
|
||||
yAnim.setFloat(mRecentsView, FULLSCREEN_PROGRESS,
|
||||
toState.getOverviewFullscreenProgress(), SCALE_DOWN_INTERPOLATOR);
|
||||
mYOverviewAnim = yAnim.createPlaybackController();
|
||||
mYOverviewAnim.dispatchOnStart();
|
||||
}
|
||||
|
||||
|
||||
+6
-3
@@ -24,6 +24,7 @@ import static com.android.launcher3.touch.SingleAxisSwipeDetector.DIRECTION_POSI
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
|
||||
import com.android.launcher3.AbstractFloatingView;
|
||||
import com.android.launcher3.BaseDraggingActivity;
|
||||
@@ -209,9 +210,11 @@ public abstract class TaskViewTouchController<T extends BaseDraggingActivity>
|
||||
mPendingAnimation = mRecentsView.createTaskLaunchAnimation(
|
||||
mTaskBeingDragged, maxDuration, Interpolators.ZOOM_IN);
|
||||
|
||||
mTempCords[1] = mTaskBeingDragged.getHeight();
|
||||
dl.getDescendantCoordRelativeToSelf(mTaskBeingDragged, mTempCords);
|
||||
mEndDisplacement = dl.getHeight() - mTempCords[1];
|
||||
// Since the thumbnail is what is filling the screen, based the end displacement on it.
|
||||
View thumbnailView = mTaskBeingDragged.getThumbnail();
|
||||
mTempCords[1] = orientationHandler.getSecondaryDimension(thumbnailView);
|
||||
dl.getDescendantCoordRelativeToSelf(thumbnailView, mTempCords);
|
||||
mEndDisplacement = secondaryLayerDimension - mTempCords[1];
|
||||
}
|
||||
mEndDisplacement *= verticalFactor;
|
||||
|
||||
|
||||
+3
@@ -117,6 +117,7 @@ final class AppToOverviewAnimationProvider<T extends BaseDraggingActivity> exten
|
||||
});
|
||||
if (mActivity == null) {
|
||||
Log.e(TAG, "Animation created, before activity");
|
||||
anim.play(ValueAnimator.ofInt(0, 1).setDuration(RECENTS_LAUNCH_DURATION));
|
||||
return anim;
|
||||
}
|
||||
|
||||
@@ -135,6 +136,7 @@ final class AppToOverviewAnimationProvider<T extends BaseDraggingActivity> exten
|
||||
RemoteAnimationTargetCompat runningTaskTarget = targets.findTask(mTargetTaskId);
|
||||
if (runningTaskTarget == null) {
|
||||
Log.e(TAG, "No closing app");
|
||||
anim.play(ValueAnimator.ofInt(0, 1).setDuration(RECENTS_LAUNCH_DURATION));
|
||||
return anim;
|
||||
}
|
||||
|
||||
@@ -181,6 +183,7 @@ final class AppToOverviewAnimationProvider<T extends BaseDraggingActivity> exten
|
||||
transaction.apply();
|
||||
});
|
||||
}
|
||||
anim.play(valueAnimator);
|
||||
return anim;
|
||||
}
|
||||
|
||||
|
||||
@@ -31,7 +31,6 @@ import android.graphics.PointF;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.RectF;
|
||||
import android.os.Build;
|
||||
import android.util.Log;
|
||||
import android.util.Pair;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
@@ -46,7 +45,6 @@ import com.android.launcher3.R;
|
||||
import com.android.launcher3.Utilities;
|
||||
import com.android.launcher3.anim.AnimationSuccessListener;
|
||||
import com.android.launcher3.anim.AnimatorPlaybackController;
|
||||
import com.android.launcher3.testing.TestProtocol;
|
||||
import com.android.launcher3.touch.PagedOrientationHandler;
|
||||
import com.android.launcher3.util.VibratorWrapper;
|
||||
import com.android.launcher3.views.FloatingIconView;
|
||||
@@ -133,13 +131,19 @@ public abstract class BaseSwipeUpHandler<T extends BaseDraggingActivity, Q exten
|
||||
mDeviceState = deviceState;
|
||||
mGestureState = gestureState;
|
||||
mActivityInterface = gestureState.getActivityInterface();
|
||||
mActivityInitListener =
|
||||
mActivityInterface.createActivityInitListener(this::onActivityInit);
|
||||
mActivityInitListener = mActivityInterface.createActivityInitListener(this::onActivityInit);
|
||||
mInputConsumer = inputConsumer;
|
||||
mAppWindowAnimationHelper = new AppWindowAnimationHelper(context);
|
||||
mPageSpacing = context.getResources().getDimensionPixelSize(R.dimen.recents_page_spacing);
|
||||
}
|
||||
|
||||
/**
|
||||
* To be called at the end of constructor of subclasses. This calls various methods which can
|
||||
* depend on proper class initialization.
|
||||
*/
|
||||
protected void initAfterSubclassConstructor() {
|
||||
initTransitionEndpoints(InvariantDeviceProfile.INSTANCE.get(mContext)
|
||||
.getDeviceProfile(mContext));
|
||||
.getDeviceProfile(mContext));
|
||||
}
|
||||
|
||||
protected void performHapticFeedback() {
|
||||
@@ -244,6 +248,10 @@ public abstract class BaseSwipeUpHandler<T extends BaseDraggingActivity, Q exten
|
||||
return mRecentsAnimationTargets != null && mRecentsAnimationTargets.hasTargets();
|
||||
}
|
||||
|
||||
protected void updateSource(Rect stackBounds, RemoteAnimationTargetCompat runningTarget) {
|
||||
mAppWindowAnimationHelper.updateSource(stackBounds, runningTarget);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRecentsAnimationStart(RecentsAnimationController recentsAnimationController,
|
||||
RecentsAnimationTargets targets) {
|
||||
@@ -267,7 +275,7 @@ public abstract class BaseSwipeUpHandler<T extends BaseDraggingActivity, Q exten
|
||||
dp.updateInsets(targets.homeContentInsets);
|
||||
dp.updateIsSeascape(mContext);
|
||||
if (runningTaskTarget != null) {
|
||||
mAppWindowAnimationHelper.updateSource(overviewStackBounds, runningTaskTarget);
|
||||
updateSource(overviewStackBounds, runningTaskTarget);
|
||||
}
|
||||
|
||||
mAppWindowAnimationHelper.prepareAnimation(dp, false /* isOpening */);
|
||||
@@ -317,6 +325,7 @@ public abstract class BaseSwipeUpHandler<T extends BaseDraggingActivity, Q exten
|
||||
|
||||
mTransitionDragLength = mActivityInterface.getSwipeUpDestinationAndLength(
|
||||
dp, mContext, TEMP_RECT);
|
||||
|
||||
if (!dp.isMultiWindowMode) {
|
||||
// When updating the target rect, also update the home bounds since the location on
|
||||
// screen of the launcher window may be stale (position is not updated until first
|
||||
@@ -325,13 +334,14 @@ public abstract class BaseSwipeUpHandler<T extends BaseDraggingActivity, Q exten
|
||||
mAppWindowAnimationHelper.updateHomeBounds(getStackBounds(dp));
|
||||
}
|
||||
int displayRotation = 0;
|
||||
if (mOrientedState != null) {
|
||||
if (mOrientedState != null && !mOrientedState.areMultipleLayoutOrientationsDisabled()) {
|
||||
// TODO(b/150300347): The first recents animation after launcher is started with the
|
||||
// foreground app not in landscape will look funky until that bug is fixed
|
||||
displayRotation = mOrientedState.getDisplayRotation();
|
||||
|
||||
RectF tempRectF = new RectF(TEMP_RECT);
|
||||
mOrientedState.mapRectFromNormalOrientation(tempRectF, dp.widthPx, dp.heightPx);
|
||||
mOrientedState.mapRectFromRotation(displayRotation,
|
||||
tempRectF, dp.widthPx, dp.heightPx);
|
||||
tempRectF.roundOut(TEMP_RECT);
|
||||
}
|
||||
mAppWindowAnimationHelper.updateTargetRect(TEMP_RECT);
|
||||
@@ -395,11 +405,15 @@ public abstract class BaseSwipeUpHandler<T extends BaseDraggingActivity, Q exten
|
||||
|
||||
public void setIsLikelyToStartNewTask(boolean isLikelyToStartNewTask) { }
|
||||
|
||||
public void initWhenReady() {
|
||||
/**
|
||||
* Registers a callback to run when the activity is ready.
|
||||
* @param intent The intent that will be used to start the activity if it doesn't exist already.
|
||||
*/
|
||||
public void initWhenReady(Intent intent) {
|
||||
// Preload the plan
|
||||
RecentsModel.INSTANCE.get(mContext).getTasks(null);
|
||||
|
||||
mActivityInitListener.register();
|
||||
mActivityInitListener.register(intent);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -407,11 +421,12 @@ public abstract class BaseSwipeUpHandler<T extends BaseDraggingActivity, Q exten
|
||||
*/
|
||||
protected void applyTransformUnchecked() {
|
||||
float shift = mCurrentShift.value;
|
||||
float offset = mRecentsView == null ? 0 : mRecentsView.getScrollOffset();
|
||||
float offset = mRecentsView == null ? 0 : mRecentsView.getScrollOffsetScaled();
|
||||
float taskSize = getOrientationHandler()
|
||||
.getPrimarySize(mAppWindowAnimationHelper.getTargetRect());
|
||||
float offsetScale = getTaskCurveScaleForOffset(offset, taskSize);
|
||||
mTransformParams.setProgress(shift)
|
||||
mTransformParams
|
||||
.setProgress(shift)
|
||||
.setOffset(offset)
|
||||
.setOffsetScale(offsetScale)
|
||||
.setTargetSet(mRecentsAnimationTargets)
|
||||
@@ -457,6 +472,7 @@ public abstract class BaseSwipeUpHandler<T extends BaseDraggingActivity, Q exten
|
||||
FloatingIconView fiv = (FloatingIconView) floatingView;
|
||||
anim.addAnimatorListener(fiv);
|
||||
fiv.setOnTargetChangeListener(anim::onTargetPositionChanged);
|
||||
fiv.setFastFinishRunnable(anim::end);
|
||||
}
|
||||
|
||||
AnimatorPlaybackController homeAnim = homeAnimationFactory.createActivityAnimationToHome();
|
||||
|
||||
@@ -129,6 +129,7 @@ public class FallbackSwipeHandler extends BaseSwipeUpHandler<RecentsActivity, Fa
|
||||
mEndTargetAnimationParams.put(LAST_TASK, new EndTargetAnimationParams(0, 150, 1));
|
||||
mEndTargetAnimationParams.put(NEW_TASK, new EndTargetAnimationParams(0, 150, 1));
|
||||
|
||||
initAfterSubclassConstructor();
|
||||
initStateCallbacks();
|
||||
}
|
||||
|
||||
@@ -188,10 +189,10 @@ public class FallbackSwipeHandler extends BaseSwipeUpHandler<RecentsActivity, Fa
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initWhenReady() {
|
||||
public void initWhenReady(Intent intent) {
|
||||
if (mInQuickSwitchMode) {
|
||||
// Only init if we are in quickswitch mode
|
||||
super.initWhenReady();
|
||||
super.initWhenReady(intent);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -42,9 +42,10 @@ import java.util.function.Supplier;
|
||||
public class ImageActionsApi {
|
||||
|
||||
private static final String TAG = BuildConfig.APPLICATION_ID + "ImageActionsApi";
|
||||
private final Context mContext;
|
||||
private final Supplier<Bitmap> mBitmapSupplier;
|
||||
private final SystemUiProxy mSystemUiProxy;
|
||||
|
||||
protected final Context mContext;
|
||||
protected final Supplier<Bitmap> mBitmapSupplier;
|
||||
protected final SystemUiProxy mSystemUiProxy;
|
||||
|
||||
public ImageActionsApi(Context context, Supplier<Bitmap> bitmapSupplier) {
|
||||
mContext = context;
|
||||
|
||||
+24
-86
@@ -15,8 +15,6 @@
|
||||
*/
|
||||
package com.android.quickstep;
|
||||
|
||||
import static android.view.View.TRANSLATION_Y;
|
||||
|
||||
import static com.android.launcher3.LauncherAnimUtils.SCALE_PROPERTY;
|
||||
import static com.android.launcher3.LauncherAppTransitionManagerImpl.INDEX_RECENTS_FADE_ANIM;
|
||||
import static com.android.launcher3.LauncherAppTransitionManagerImpl.INDEX_RECENTS_TRANSLATE_X_ANIM;
|
||||
@@ -25,15 +23,14 @@ import static com.android.launcher3.LauncherState.BACKGROUND_APP;
|
||||
import static com.android.launcher3.LauncherState.NORMAL;
|
||||
import static com.android.launcher3.LauncherState.OVERVIEW;
|
||||
import static com.android.launcher3.anim.Interpolators.ACCEL_2;
|
||||
import static com.android.launcher3.anim.Interpolators.ACCEL_DEACCEL;
|
||||
import static com.android.launcher3.anim.Interpolators.INSTANT;
|
||||
import static com.android.launcher3.anim.Interpolators.LINEAR;
|
||||
import static com.android.quickstep.LauncherSwipeHandler.RECENTS_ATTACH_DURATION;
|
||||
import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_OFFSET;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorSet;
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.animation.TimeInterpolator;
|
||||
import android.content.Context;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.RectF;
|
||||
@@ -57,7 +54,6 @@ import com.android.launcher3.anim.AnimatorPlaybackController;
|
||||
import com.android.launcher3.appprediction.PredictionUiStateManager;
|
||||
import com.android.launcher3.statehandlers.DepthController;
|
||||
import com.android.launcher3.statehandlers.DepthController.ClampedDepthProperty;
|
||||
import com.android.launcher3.touch.PagedOrientationHandler;
|
||||
import com.android.launcher3.userevent.nano.LauncherLogProto;
|
||||
import com.android.launcher3.views.FloatingIconView;
|
||||
import com.android.quickstep.SysUINavigationMode.Mode;
|
||||
@@ -81,7 +77,6 @@ import java.util.function.Predicate;
|
||||
*/
|
||||
public final class LauncherActivityInterface implements BaseActivityInterface<Launcher> {
|
||||
|
||||
private Runnable mAdjustInterpolatorsRunnable;
|
||||
private Pair<Float, Float> mSwipeUpPullbackStartAndMaxProgress =
|
||||
BaseActivityInterface.super.getSwipeUpPullbackStartAndMaxProgress();
|
||||
|
||||
@@ -242,14 +237,6 @@ public final class LauncherActivityInterface implements BaseActivityInterface<La
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void adjustActivityControllerInterpolators() {
|
||||
if (mAdjustInterpolatorsRunnable != null) {
|
||||
mAdjustInterpolatorsRunnable.run();
|
||||
mAdjustInterpolatorsRunnable = null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTransitionCancelled() {
|
||||
launcher.getStateManager().goToState(startState, false /* animate */);
|
||||
@@ -272,42 +259,24 @@ public final class LauncherActivityInterface implements BaseActivityInterface<La
|
||||
.createStateElementAnimation(
|
||||
INDEX_RECENTS_FADE_ANIM, attached ? 1 : 0);
|
||||
|
||||
int runningTaskIndex = recentsView.getRunningTaskIndex();
|
||||
if (runningTaskIndex == recentsView.getTaskViewStartIndex()) {
|
||||
// If we are on the first task (we haven't quick switched), translate recents in
|
||||
// from the side. Calculate the start translation based on current scale/scroll.
|
||||
float currScale = recentsView.getScaleX();
|
||||
float scrollOffsetX = recentsView.getScrollOffset();
|
||||
float offscreenX = recentsView.getOffscreenTranslationX(currScale);
|
||||
|
||||
float fromTranslation = attached ? offscreenX - scrollOffsetX : 0;
|
||||
float toTranslation = attached ? 0 : offscreenX - scrollOffsetX;
|
||||
launcher.getStateManager()
|
||||
.cancelStateElementAnimation(INDEX_RECENTS_TRANSLATE_X_ANIM);
|
||||
|
||||
PagedOrientationHandler pagedOrientationHandler =
|
||||
recentsView.getPagedViewOrientedState().getOrientationHandler();
|
||||
if (!recentsView.isShown() && animate) {
|
||||
pagedOrientationHandler
|
||||
.getPrimaryViewTranslate().set(recentsView, fromTranslation);
|
||||
} else {
|
||||
fromTranslation =
|
||||
pagedOrientationHandler.getPrimaryViewTranslate().get(recentsView);
|
||||
}
|
||||
|
||||
if (!animate) {
|
||||
pagedOrientationHandler
|
||||
.getPrimaryViewTranslate().set(recentsView, toTranslation);
|
||||
} else {
|
||||
launcher.getStateManager().createStateElementAnimation(
|
||||
INDEX_RECENTS_TRANSLATE_X_ANIM,
|
||||
fromTranslation, toTranslation).start();
|
||||
}
|
||||
|
||||
fadeAnim.setInterpolator(attached ? INSTANT : ACCEL_2);
|
||||
float fromTranslation = attached ? 1 : 0;
|
||||
float toTranslation = attached ? 0 : 1;
|
||||
launcher.getStateManager()
|
||||
.cancelStateElementAnimation(INDEX_RECENTS_TRANSLATE_X_ANIM);
|
||||
if (!recentsView.isShown() && animate) {
|
||||
ADJACENT_PAGE_OFFSET.set(recentsView, fromTranslation);
|
||||
} else {
|
||||
fadeAnim.setInterpolator(ACCEL_DEACCEL);
|
||||
fromTranslation = ADJACENT_PAGE_OFFSET.get(recentsView);
|
||||
}
|
||||
if (!animate) {
|
||||
ADJACENT_PAGE_OFFSET.set(recentsView, toTranslation);
|
||||
} else {
|
||||
launcher.getStateManager().createStateElementAnimation(
|
||||
INDEX_RECENTS_TRANSLATE_X_ANIM,
|
||||
fromTranslation, toTranslation).start();
|
||||
}
|
||||
|
||||
fadeAnim.setInterpolator(attached ? INSTANT : ACCEL_2);
|
||||
fadeAnim.setDuration(animate ? RECENTS_ATTACH_DURATION : 0).start();
|
||||
}
|
||||
};
|
||||
@@ -365,51 +334,20 @@ public final class LauncherActivityInterface implements BaseActivityInterface<La
|
||||
return;
|
||||
}
|
||||
|
||||
LauncherState.ScaleAndTranslation fromScaleAndTranslation
|
||||
= fromState.getOverviewScaleAndTranslation(launcher);
|
||||
LauncherState.ScaleAndTranslation endScaleAndTranslation
|
||||
= endState.getOverviewScaleAndTranslation(launcher);
|
||||
float fromTranslationY = fromScaleAndTranslation.translationY;
|
||||
float endTranslationY = endScaleAndTranslation.translationY;
|
||||
float fromFullscreenProgress = fromState.getOverviewFullscreenProgress();
|
||||
float endFullscreenProgress = endState.getOverviewFullscreenProgress();
|
||||
|
||||
Animator scale = ObjectAnimator.ofFloat(recentsView, SCALE_PROPERTY,
|
||||
fromScaleAndTranslation.scale, endScaleAndTranslation.scale);
|
||||
Animator translateY = ObjectAnimator.ofFloat(recentsView, TRANSLATION_Y,
|
||||
fromTranslationY, endTranslationY);
|
||||
float fromScale = fromState.getOverviewScaleAndOffset(launcher)[0];
|
||||
float endScale = endState.getOverviewScaleAndOffset(launcher)[0];
|
||||
|
||||
Animator scale = ObjectAnimator.ofFloat(recentsView, SCALE_PROPERTY, fromScale, endScale);
|
||||
Animator applyFullscreenProgress = ObjectAnimator.ofFloat(recentsView,
|
||||
RecentsView.FULLSCREEN_PROGRESS, fromFullscreenProgress, endFullscreenProgress);
|
||||
anim.playTogether(scale, translateY, applyFullscreenProgress);
|
||||
|
||||
mAdjustInterpolatorsRunnable = () -> {
|
||||
// Adjust the translateY interpolator to account for the running task's top inset.
|
||||
// When progress <= 1, this is handled by each task view as they set their fullscreen
|
||||
// progress. However, once we go to progress > 1, fullscreen progress stays at 0, so
|
||||
// recents as a whole needs to translate further to keep up with the app window.
|
||||
TaskView runningTaskView = recentsView.getRunningTaskView();
|
||||
if (runningTaskView == null) {
|
||||
runningTaskView = recentsView.getCurrentPageTaskView();
|
||||
if (runningTaskView == null) {
|
||||
// There are no task views in LockTask mode when Overview is enabled.
|
||||
return;
|
||||
}
|
||||
}
|
||||
TimeInterpolator oldInterpolator = translateY.getInterpolator();
|
||||
Rect fallbackInsets = launcher.getDeviceProfile().getInsets();
|
||||
float extraTranslationY = runningTaskView.getThumbnail().getInsets(fallbackInsets).top;
|
||||
float normalizedTranslationY = extraTranslationY / (fromTranslationY - endTranslationY);
|
||||
translateY.setInterpolator(t -> {
|
||||
float newT = oldInterpolator.getInterpolation(t);
|
||||
return newT <= 1f ? newT : newT + normalizedTranslationY * (newT - 1);
|
||||
});
|
||||
};
|
||||
anim.playTogether(scale, applyFullscreenProgress);
|
||||
|
||||
// Start pulling back when RecentsView scale is 0.75f, and let it go down to 0.5f.
|
||||
float pullbackStartProgress = (0.75f - fromScaleAndTranslation.scale)
|
||||
/ (endScaleAndTranslation.scale - fromScaleAndTranslation.scale);
|
||||
float pullbackMaxProgress = (0.5f - fromScaleAndTranslation.scale)
|
||||
/ (endScaleAndTranslation.scale - fromScaleAndTranslation.scale);
|
||||
float pullbackStartProgress = (0.75f - fromScale) / (endScale - fromScale);
|
||||
float pullbackMaxProgress = (0.5f - fromScale) / (endScale - fromScale);
|
||||
mSwipeUpPullbackStartAndMaxProgress = new Pair<>(
|
||||
pullbackStartProgress, pullbackMaxProgress);
|
||||
}
|
||||
|
||||
+54
-17
@@ -17,6 +17,8 @@ package com.android.quickstep;
|
||||
|
||||
import static com.android.launcher3.BaseActivity.INVISIBLE_BY_STATE_HANDLER;
|
||||
import static com.android.launcher3.BaseActivity.STATE_HANDLER_INVISIBILITY_FLAGS;
|
||||
import static com.android.launcher3.LauncherState.BACKGROUND_APP;
|
||||
import static com.android.launcher3.LauncherState.OVERVIEW;
|
||||
import static com.android.launcher3.anim.Interpolators.DEACCEL;
|
||||
import static com.android.launcher3.anim.Interpolators.LINEAR;
|
||||
import static com.android.launcher3.anim.Interpolators.OVERSHOOT_1_2;
|
||||
@@ -39,16 +41,17 @@ import static com.android.quickstep.views.RecentsView.UPDATE_SYSUI_FLAGS_THRESHO
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorSet;
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.animation.TimeInterpolator;
|
||||
import android.animation.ValueAnimator;
|
||||
import android.annotation.TargetApi;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.graphics.PointF;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.RectF;
|
||||
import android.os.Build;
|
||||
import android.os.SystemClock;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.view.View.OnApplyWindowInsetsListener;
|
||||
import android.view.ViewTreeObserver.OnDrawListener;
|
||||
@@ -67,7 +70,6 @@ import com.android.launcher3.anim.AnimationSuccessListener;
|
||||
import com.android.launcher3.anim.AnimatorPlaybackController;
|
||||
import com.android.launcher3.anim.Interpolators;
|
||||
import com.android.launcher3.logging.UserEventDispatcher;
|
||||
import com.android.launcher3.testing.TestProtocol;
|
||||
import com.android.launcher3.userevent.nano.LauncherLogProto.Action.Direction;
|
||||
import com.android.launcher3.userevent.nano.LauncherLogProto.Action.Touch;
|
||||
import com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType;
|
||||
@@ -78,9 +80,11 @@ import com.android.quickstep.GestureState.GestureEndTarget;
|
||||
import com.android.quickstep.inputconsumers.OverviewInputConsumer;
|
||||
import com.android.quickstep.util.ActiveGestureLog;
|
||||
import com.android.quickstep.util.AppWindowAnimationHelper.TargetAlphaProvider;
|
||||
import com.android.quickstep.util.LayoutUtils;
|
||||
import com.android.quickstep.util.RectFSpringAnim;
|
||||
import com.android.quickstep.util.ShelfPeekAnim;
|
||||
import com.android.quickstep.util.ShelfPeekAnim.ShelfAnimState;
|
||||
import com.android.quickstep.util.TaskViewSimulator;
|
||||
import com.android.quickstep.views.LiveTileOverlay;
|
||||
import com.android.quickstep.views.RecentsView;
|
||||
import com.android.quickstep.views.TaskView;
|
||||
@@ -177,6 +181,9 @@ public class LauncherSwipeHandler<T extends BaseDraggingActivity>
|
||||
private AnimatorPlaybackController mLauncherTransitionController;
|
||||
private boolean mHasLauncherTransitionControllerStarted;
|
||||
|
||||
private final TaskViewSimulator mTaskViewSimulator;
|
||||
private AnimatorPlaybackController mWindowTransitionController;
|
||||
|
||||
private AnimationFactory mAnimationFactory = (t) -> { };
|
||||
|
||||
private boolean mWasLauncherAlreadyVisible;
|
||||
@@ -201,6 +208,9 @@ public class LauncherSwipeHandler<T extends BaseDraggingActivity>
|
||||
mTaskAnimationManager = taskAnimationManager;
|
||||
mTouchTimeMs = touchTimeMs;
|
||||
mContinuingLastGesture = continuingLastGesture;
|
||||
mTaskViewSimulator = new TaskViewSimulator(context, LayoutUtils::calculateLauncherTaskSize);
|
||||
|
||||
initAfterSubclassConstructor();
|
||||
initStateCallbacks();
|
||||
}
|
||||
|
||||
@@ -473,23 +483,11 @@ public class LauncherSwipeHandler<T extends BaseDraggingActivity>
|
||||
} else if (mContinuingLastGesture
|
||||
&& mRecentsView.getRunningTaskIndex() != mRecentsView.getNextPage()) {
|
||||
recentsAttachedToAppWindow = true;
|
||||
animate = false;
|
||||
} else if (runningTaskTarget != null && isNotInRecents(runningTaskTarget)) {
|
||||
// The window is going away so make sure recents is always visible in this case.
|
||||
recentsAttachedToAppWindow = true;
|
||||
animate = false;
|
||||
} else {
|
||||
recentsAttachedToAppWindow = mIsShelfPeeking || mIsLikelyToStartNewTask;
|
||||
if (animate) {
|
||||
// Only animate if an adjacent task view is visible on screen.
|
||||
TaskView adjacentTask1 = mRecentsView.getNextTaskView();
|
||||
TaskView adjacentTask2 = mRecentsView.getPreviousTaskView();
|
||||
float prevTranslationX = mRecentsView.getTranslationX();
|
||||
mRecentsView.setTranslationX(0);
|
||||
animate = (adjacentTask1 != null && adjacentTask1.getGlobalVisibleRect(TEMP_RECT))
|
||||
|| (adjacentTask2 != null && adjacentTask2.getGlobalVisibleRect(TEMP_RECT));
|
||||
mRecentsView.setTranslationX(prevTranslationX);
|
||||
}
|
||||
}
|
||||
mAnimationFactory.setRecentsAttachedToAppWindow(recentsAttachedToAppWindow, animate);
|
||||
}
|
||||
@@ -523,6 +521,34 @@ public class LauncherSwipeHandler<T extends BaseDraggingActivity>
|
||||
mAnimationFactory.createActivityInterface(mTransitionDragLength);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateSource(Rect stackBounds, RemoteAnimationTargetCompat runningTarget) {
|
||||
super.updateSource(stackBounds, runningTarget);
|
||||
mTaskViewSimulator.setPreview(runningTarget, mRecentsAnimationTargets);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initTransitionEndpoints(DeviceProfile dp) {
|
||||
super.initTransitionEndpoints(dp);
|
||||
mTaskViewSimulator.setDp(dp, false /* isOpening */);
|
||||
mTaskViewSimulator.setLayoutRotation(
|
||||
mDeviceState.getCurrentActiveRotation(),
|
||||
mDeviceState.getDisplayRotation());
|
||||
|
||||
AnimatorSet anim = new AnimatorSet();
|
||||
anim.setDuration(mTransitionDragLength * 2);
|
||||
anim.setInterpolator(t -> t * mDragLengthFactor);
|
||||
anim.play(ObjectAnimator.ofFloat(mTaskViewSimulator.recentsViewScale,
|
||||
AnimatedFloat.VALUE,
|
||||
mTaskViewSimulator.getFullScreenScale(), 1));
|
||||
anim.play(ObjectAnimator.ofFloat(mTaskViewSimulator.fullScreenProgress,
|
||||
AnimatedFloat.VALUE,
|
||||
BACKGROUND_APP.getOverviewFullscreenProgress(),
|
||||
OVERVIEW.getOverviewFullscreenProgress()));
|
||||
mWindowTransitionController =
|
||||
AnimatorPlaybackController.wrap(anim, mTransitionDragLength * 2);
|
||||
}
|
||||
|
||||
/**
|
||||
* We don't want to change mLauncherTransitionController if mGestureState.getEndTarget() == HOME
|
||||
* (it has its own animation) or if we're already animating the current controller.
|
||||
@@ -542,7 +568,6 @@ public class LauncherSwipeHandler<T extends BaseDraggingActivity>
|
||||
private void onAnimatorPlaybackControllerCreated(AnimatorPlaybackController anim) {
|
||||
mLauncherTransitionController = anim;
|
||||
mLauncherTransitionController.dispatchSetInterpolator(t -> t * mDragLengthFactor);
|
||||
mAnimationFactory.adjustActivityControllerInterpolators();
|
||||
mLauncherTransitionController.dispatchOnStart();
|
||||
updateLauncherTransitionProgress();
|
||||
}
|
||||
@@ -555,7 +580,9 @@ public class LauncherSwipeHandler<T extends BaseDraggingActivity>
|
||||
@Override
|
||||
public void updateFinalShift() {
|
||||
if (mRecentsAnimationTargets != null) {
|
||||
applyTransformUnchecked();
|
||||
// Base class expects applyTransformUnchecked to be called here.
|
||||
// TODO: Remove this dependency for swipe-up animation.
|
||||
// applyTransformUnchecked();
|
||||
updateSysUiFlags(mCurrentShift.value);
|
||||
}
|
||||
|
||||
@@ -575,6 +602,16 @@ public class LauncherSwipeHandler<T extends BaseDraggingActivity>
|
||||
}
|
||||
}
|
||||
|
||||
if (mWindowTransitionController != null) {
|
||||
float progress = mCurrentShift.value / mDragLengthFactor;
|
||||
mWindowTransitionController.setPlayFraction(progress);
|
||||
mTransformParams
|
||||
.setTargetSet(mRecentsAnimationTargets)
|
||||
.setLauncherOnTop(true);
|
||||
|
||||
mTaskViewSimulator.setScroll(mRecentsView == null ? 0 : mRecentsView.getScrollOffset());
|
||||
mTaskViewSimulator.apply(mTransformParams);
|
||||
}
|
||||
updateLauncherTransitionProgress();
|
||||
}
|
||||
|
||||
@@ -1020,7 +1057,6 @@ public class LauncherSwipeHandler<T extends BaseDraggingActivity>
|
||||
mLauncherTransitionController.dispatchSetInterpolator(t -> end);
|
||||
} else {
|
||||
mLauncherTransitionController.dispatchSetInterpolator(adjustedInterpolator);
|
||||
mAnimationFactory.adjustActivityControllerInterpolators();
|
||||
}
|
||||
mLauncherTransitionController.getAnimationPlayer().setDuration(Math.max(0, duration));
|
||||
|
||||
@@ -1296,6 +1332,7 @@ public class LauncherSwipeHandler<T extends BaseDraggingActivity>
|
||||
|
||||
private void setTargetAlphaProvider(TargetAlphaProvider provider) {
|
||||
mAppWindowAnimationHelper.setTaskAlphaCallback(provider);
|
||||
mTaskViewSimulator.setTaskAlphaCallback(provider);
|
||||
updateFinalShift();
|
||||
}
|
||||
|
||||
|
||||
@@ -71,6 +71,7 @@ public final class RecentsActivity extends BaseRecentsActivity {
|
||||
mRecentsRootView = findViewById(R.id.drag_layer);
|
||||
mFallbackRecentsView = findViewById(R.id.overview_panel);
|
||||
mRecentsRootView.recreateControllers();
|
||||
mFallbackRecentsView.init(findViewById(R.id.overview_actions_view));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
package com.android.quickstep;
|
||||
|
||||
import static com.android.launcher3.config.FeatureFlags.ENABLE_OVERVIEW_ACTIONS;
|
||||
import static com.android.launcher3.util.MainThreadInitializedObject.forOverride;
|
||||
|
||||
import android.content.Context;
|
||||
@@ -84,47 +83,47 @@ public class TaskOverlayFactory implements ResourceBasedOverride {
|
||||
/**
|
||||
* Overlay on each task handling Overview Action Buttons.
|
||||
*/
|
||||
public static class TaskOverlay {
|
||||
public static class TaskOverlay<T extends OverviewActionsView> {
|
||||
|
||||
private final Context mApplicationContext;
|
||||
private OverviewActionsView mActionsView;
|
||||
private final TaskThumbnailView mThumbnailView;
|
||||
protected final TaskThumbnailView mThumbnailView;
|
||||
|
||||
private T mActionsView;
|
||||
|
||||
protected TaskOverlay(TaskThumbnailView taskThumbnailView) {
|
||||
mApplicationContext = taskThumbnailView.getContext().getApplicationContext();
|
||||
mThumbnailView = taskThumbnailView;
|
||||
}
|
||||
|
||||
protected T getActionsView() {
|
||||
if (mActionsView == null) {
|
||||
mActionsView = BaseActivity.fromContext(mThumbnailView.getContext()).findViewById(
|
||||
R.id.overview_actions_view);
|
||||
}
|
||||
return mActionsView;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when the current task is interactive for the user
|
||||
*/
|
||||
public void initOverlay(Task task, ThumbnailData thumbnail, Matrix matrix) {
|
||||
ImageActionsApi imageApi = new ImageActionsApi(
|
||||
mApplicationContext, mThumbnailView::getThumbnail);
|
||||
getActionsView().setCallbacks(new OverlayUICallbacks() {
|
||||
@Override
|
||||
public void onShare() {
|
||||
imageApi.startShareActivity();
|
||||
}
|
||||
|
||||
if (mActionsView == null && ENABLE_OVERVIEW_ACTIONS.get()
|
||||
&& SysUINavigationMode.removeShelfFromOverview(mApplicationContext)) {
|
||||
mActionsView = BaseActivity.fromContext(mThumbnailView.getContext()).findViewById(
|
||||
R.id.overview_actions_view);
|
||||
}
|
||||
if (mActionsView != null) {
|
||||
mActionsView.setListener(new OverviewActionsView.Listener() {
|
||||
@Override
|
||||
public void onShare() {
|
||||
imageApi.startShareActivity();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onScreenshot() {
|
||||
imageApi.saveScreenshot(mThumbnailView.getThumbnail(),
|
||||
getTaskSnapshotBounds(), getTaskSnapshotInsets(), task.key.id);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onScreenshot() {
|
||||
imageApi.saveScreenshot(mThumbnailView.getThumbnail(),
|
||||
getTaskSnapshotBounds(), getTaskSnapshotInsets(), task.key.id);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Called when the overlay is no longer used.
|
||||
*/
|
||||
@@ -161,4 +160,16 @@ public class TaskOverlayFactory implements ResourceBasedOverride {
|
||||
return Insets.of(0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Callbacks the Ui can generate. This is the only way for a Ui to call methods on the
|
||||
* controller.
|
||||
*/
|
||||
public interface OverlayUICallbacks {
|
||||
/** User has indicated they want to share the current task. */
|
||||
void onShare();
|
||||
|
||||
/** User has indicated they want to screenshot the current task. */
|
||||
void onScreenshot();
|
||||
}
|
||||
}
|
||||
|
||||
+10
-26
@@ -90,7 +90,6 @@ import com.android.systemui.shared.system.ActivityManagerWrapper;
|
||||
import com.android.systemui.shared.system.InputChannelCompat.InputEventReceiver;
|
||||
import com.android.systemui.shared.system.InputConsumerController;
|
||||
import com.android.systemui.shared.system.InputMonitorCompat;
|
||||
import com.android.systemui.shared.system.RecentsAnimationListener;
|
||||
import com.android.systemui.shared.tracing.ProtoTraceable;
|
||||
|
||||
import java.io.FileDescriptor;
|
||||
@@ -299,9 +298,6 @@ public class TouchInteractionService extends Service implements PluginListener<O
|
||||
if (mInputEventReceiver != null) {
|
||||
mInputEventReceiver.dispose();
|
||||
mInputEventReceiver = null;
|
||||
if (TestProtocol.sDebugTracing) {
|
||||
Log.d(TestProtocol.NO_BACKGROUND_TO_OVERVIEW_TAG, "disposeEventHandlers");
|
||||
}
|
||||
}
|
||||
if (mInputMonitorCompat != null) {
|
||||
mInputMonitorCompat.dispose();
|
||||
@@ -310,25 +306,16 @@ public class TouchInteractionService extends Service implements PluginListener<O
|
||||
}
|
||||
|
||||
private void initInputMonitor() {
|
||||
if (TestProtocol.sDebugTracing) {
|
||||
Log.d(TestProtocol.NO_BACKGROUND_TO_OVERVIEW_TAG, "initInputMonitor 1");
|
||||
}
|
||||
disposeEventHandlers();
|
||||
if (mDeviceState.isButtonNavMode() || !SystemUiProxy.INSTANCE.get(this).isActive()) {
|
||||
return;
|
||||
}
|
||||
if (TestProtocol.sDebugTracing) {
|
||||
Log.d(TestProtocol.NO_BACKGROUND_TO_OVERVIEW_TAG, "initInputMonitor 2");
|
||||
}
|
||||
|
||||
Bundle bundle = SystemUiProxy.INSTANCE.get(this).monitorGestureInput("swipe-up",
|
||||
mDeviceState.getDisplayId());
|
||||
mInputMonitorCompat = InputMonitorCompat.fromBundle(bundle, KEY_EXTRA_INPUT_MONITOR);
|
||||
mInputEventReceiver = mInputMonitorCompat.getInputReceiver(Looper.getMainLooper(),
|
||||
mMainChoreographer, this::onInputEvent);
|
||||
if (TestProtocol.sDebugTracing) {
|
||||
Log.d(TestProtocol.NO_BACKGROUND_TO_OVERVIEW_TAG, "initInputMonitor 3");
|
||||
}
|
||||
|
||||
mDeviceState.updateGestureTouchRegions();
|
||||
}
|
||||
@@ -453,9 +440,6 @@ public class TouchInteractionService extends Service implements PluginListener<O
|
||||
}
|
||||
|
||||
private void onInputEvent(InputEvent ev) {
|
||||
if (TestProtocol.sDebugTracing) {
|
||||
Log.d(TestProtocol.NO_BACKGROUND_TO_OVERVIEW_TAG, "onInputEvent " + ev);
|
||||
}
|
||||
if (!(ev instanceof MotionEvent)) {
|
||||
Log.e(TAG, "Unknown event " + ev);
|
||||
return;
|
||||
@@ -514,7 +498,10 @@ public class TouchInteractionService extends Service implements PluginListener<O
|
||||
}
|
||||
}
|
||||
|
||||
ActiveGestureLog.INSTANCE.addLog("onMotionEvent", event.getActionMasked());
|
||||
if (mUncheckedConsumer != InputConsumer.NO_OP) {
|
||||
ActiveGestureLog.INSTANCE.addLog("onMotionEvent", event.getActionMasked());
|
||||
}
|
||||
|
||||
boolean cleanUpConsumer = (action == ACTION_UP || action == ACTION_CANCEL)
|
||||
&& mConsumer != null
|
||||
&& !mConsumer.getActiveConsumerInHierarchy().isConsumerDetachedFromGesture();
|
||||
@@ -754,12 +741,14 @@ public class TouchInteractionService extends Service implements PluginListener<O
|
||||
|
||||
final BaseActivityInterface<BaseDraggingActivity> activityInterface =
|
||||
mOverviewComponentObserver.getActivityInterface();
|
||||
final Intent overviewIntent = new Intent(
|
||||
mOverviewComponentObserver.getOverviewIntentIgnoreSysUiState());
|
||||
if (activityInterface.getCreatedActivity() == null) {
|
||||
// Make sure that UI states will be initialized.
|
||||
activityInterface.createActivityInitListener((wasVisible) -> {
|
||||
AppLaunchTracker.INSTANCE.get(TouchInteractionService.this);
|
||||
return false;
|
||||
}).register();
|
||||
}).register(overviewIntent);
|
||||
} else if (fromInit) {
|
||||
// The activity has been created before the initialization of overview service. It is
|
||||
// usually happens when booting or launcher is the top activity, so we should already
|
||||
@@ -767,8 +756,7 @@ public class TouchInteractionService extends Service implements PluginListener<O
|
||||
return;
|
||||
}
|
||||
|
||||
mTaskAnimationManager.preloadRecentsAnimation(
|
||||
mOverviewComponentObserver.getOverviewIntentIgnoreSysUiState());
|
||||
mTaskAnimationManager.preloadRecentsAnimation(overviewIntent);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -817,6 +805,7 @@ public class TouchInteractionService extends Service implements PluginListener<O
|
||||
if (mGestureState != null) {
|
||||
mGestureState.dump(pw);
|
||||
}
|
||||
SysUINavigationMode.INSTANCE.get(this).dump(pw);
|
||||
pw.println("TouchState:");
|
||||
BaseDraggingActivity createdOverviewActivity = mOverviewComponentObserver == null ? null
|
||||
: mOverviewComponentObserver.getActivityInterface().getCreatedActivity();
|
||||
@@ -847,7 +836,7 @@ public class TouchInteractionService extends Service implements PluginListener<O
|
||||
|
||||
private BaseSwipeUpHandler createLauncherSwipeHandler(GestureState gestureState,
|
||||
long touchTimeMs, boolean continuingLastGesture, boolean isLikelyToStartNewTask) {
|
||||
return new LauncherSwipeHandler(this, mDeviceState, mTaskAnimationManager,
|
||||
return new LauncherSwipeHandler(this, mDeviceState, mTaskAnimationManager,
|
||||
gestureState, touchTimeMs, continuingLastGesture, mInputConsumer);
|
||||
}
|
||||
|
||||
@@ -873,11 +862,6 @@ public class TouchInteractionService extends Service implements PluginListener<O
|
||||
}
|
||||
}
|
||||
|
||||
public static void startRecentsActivityAsync(Intent intent, RecentsAnimationListener listener) {
|
||||
UI_HELPER_EXECUTOR.execute(() -> ActivityManagerWrapper.getInstance()
|
||||
.startRecentsActivity(intent, null, listener, null, null));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPluginConnected(OverscrollPlugin overscrollPlugin, Context context) {
|
||||
mOverscrollPlugin = overscrollPlugin;
|
||||
|
||||
+8
-8
@@ -26,10 +26,10 @@ import android.util.FloatProperty;
|
||||
import android.view.View;
|
||||
|
||||
import com.android.launcher3.DeviceProfile;
|
||||
import com.android.launcher3.LauncherState.ScaleAndTranslation;
|
||||
import com.android.launcher3.Utilities;
|
||||
import com.android.quickstep.RecentsActivity;
|
||||
import com.android.quickstep.util.LayoutUtils;
|
||||
import com.android.quickstep.views.OverviewActionsView;
|
||||
import com.android.quickstep.views.RecentsView;
|
||||
import com.android.quickstep.views.TaskView;
|
||||
import com.android.systemui.shared.recents.model.Task;
|
||||
@@ -57,7 +57,6 @@ public class FallbackRecentsView extends RecentsView<RecentsActivity> {
|
||||
private boolean mInOverviewState = true;
|
||||
|
||||
private float mZoomScale = 1f;
|
||||
private float mZoomTranslationY = 0f;
|
||||
|
||||
private RunningTaskInfo mRunningTaskInfo;
|
||||
|
||||
@@ -67,6 +66,11 @@ public class FallbackRecentsView extends RecentsView<RecentsActivity> {
|
||||
|
||||
public FallbackRecentsView(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||
super(context, attrs, defStyleAttr);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(OverviewActionsView actionsView) {
|
||||
super.init(actionsView);
|
||||
setOverviewStateEnabled(true);
|
||||
setOverlayEnabled(true);
|
||||
}
|
||||
@@ -139,14 +143,11 @@ public class FallbackRecentsView extends RecentsView<RecentsActivity> {
|
||||
|
||||
if (getTaskViewCount() == 0) {
|
||||
mZoomScale = 1f;
|
||||
mZoomTranslationY = 0f;
|
||||
} else {
|
||||
TaskView dummyTask = getTaskViewAt(0);
|
||||
ScaleAndTranslation sat = getTempAppWindowAnimationHelper()
|
||||
mZoomScale = getTempAppWindowAnimationHelper()
|
||||
.updateForFullscreenOverview(dummyTask)
|
||||
.getScaleAndTranslation();
|
||||
mZoomScale = sat.scale;
|
||||
mZoomTranslationY = sat.translationY;
|
||||
.getSrcToTargetScale();
|
||||
}
|
||||
|
||||
setZoomProgress(mZoomInProgress);
|
||||
@@ -155,7 +156,6 @@ public class FallbackRecentsView extends RecentsView<RecentsActivity> {
|
||||
public void setZoomProgress(float progress) {
|
||||
mZoomInProgress = progress;
|
||||
SCALE_PROPERTY.set(this, Utilities.mapRange(mZoomInProgress, 1, mZoomScale));
|
||||
TRANSLATION_Y.set(this, Utilities.mapRange(mZoomInProgress, 0, mZoomTranslationY));
|
||||
FULLSCREEN_PROGRESS.set(this, mZoomInProgress);
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -333,7 +333,8 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC
|
||||
mTaskAnimationManager.isRecentsAnimationRunning(), isLikelyToStartNewTask);
|
||||
mInteractionHandler.setGestureEndCallback(this::onInteractionGestureFinished);
|
||||
mMotionPauseDetector.setOnMotionPauseListener(mInteractionHandler::onMotionPauseChanged);
|
||||
mInteractionHandler.initWhenReady();
|
||||
Intent intent = new Intent(mInteractionHandler.getLaunchIntent());
|
||||
mInteractionHandler.initWhenReady(intent);
|
||||
|
||||
if (mTaskAnimationManager.isRecentsAnimationRunning()) {
|
||||
mActiveCallbacks = mTaskAnimationManager.continueRecentsAnimation(mGestureState);
|
||||
@@ -341,7 +342,6 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC
|
||||
mTaskAnimationManager.notifyRecentsAnimationState(mInteractionHandler);
|
||||
notifyGestureStarted();
|
||||
} else {
|
||||
Intent intent = mInteractionHandler.getLaunchIntent();
|
||||
intent.putExtra(INTENT_EXTRA_LOG_TRACE_ID, mGestureState.getGestureId());
|
||||
mActiveCallbacks = mTaskAnimationManager.startRecentsAnimation(mGestureState, intent,
|
||||
mInteractionHandler);
|
||||
|
||||
+11
-17
@@ -36,17 +36,14 @@ import com.android.launcher3.BaseDraggingActivity;
|
||||
import com.android.launcher3.R;
|
||||
import com.android.quickstep.GestureState;
|
||||
import com.android.quickstep.InputConsumer;
|
||||
import com.android.quickstep.views.LauncherRecentsView;
|
||||
import com.android.quickstep.views.RecentsView;
|
||||
import com.android.systemui.plugins.OverscrollPlugin;
|
||||
import com.android.systemui.shared.system.InputMonitorCompat;
|
||||
|
||||
/**
|
||||
* Input consumer for handling events to pass to an {@code OverscrollPlugin}.
|
||||
*
|
||||
* @param <T> Draggable activity subclass used by RecentsView
|
||||
*/
|
||||
public class OverscrollInputConsumer<T extends BaseDraggingActivity> extends DelegateInputConsumer {
|
||||
public class OverscrollInputConsumer extends DelegateInputConsumer {
|
||||
|
||||
private static final String TAG = "OverscrollInputConsumer";
|
||||
|
||||
@@ -61,12 +58,12 @@ public class OverscrollInputConsumer<T extends BaseDraggingActivity> extends Del
|
||||
|
||||
private final float mSquaredSlop;
|
||||
|
||||
private final Context mContext;
|
||||
private final GestureState mGestureState;
|
||||
@Nullable
|
||||
private final OverscrollPlugin mPlugin;
|
||||
private final GestureDetector mGestureDetector;
|
||||
|
||||
@Nullable
|
||||
private RecentsView mRecentsView;
|
||||
|
||||
public OverscrollInputConsumer(Context context, GestureState gestureState,
|
||||
@@ -77,7 +74,6 @@ public class OverscrollInputConsumer<T extends BaseDraggingActivity> extends Del
|
||||
.getInteger(R.integer.assistant_gesture_corner_deg_threshold);
|
||||
mFlingThresholdPx = context.getResources()
|
||||
.getDimension(R.dimen.gestures_overscroll_fling_threshold);
|
||||
mContext = context;
|
||||
mGestureState = gestureState;
|
||||
mPlugin = plugin;
|
||||
|
||||
@@ -85,9 +81,6 @@ public class OverscrollInputConsumer<T extends BaseDraggingActivity> extends Del
|
||||
|
||||
mSquaredSlop = slop * slop;
|
||||
mGestureDetector = new GestureDetector(context, new FlingGestureListener());
|
||||
|
||||
gestureState.getActivityInterface().createActivityInitListener(this::onActivityInit)
|
||||
.register();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -95,12 +88,6 @@ public class OverscrollInputConsumer<T extends BaseDraggingActivity> extends Del
|
||||
return TYPE_OVERSCROLL | mDelegate.getType();
|
||||
}
|
||||
|
||||
private boolean onActivityInit(Boolean alreadyOnHome) {
|
||||
mRecentsView = mGestureState.getActivityInterface().getCreatedActivity().getOverviewPanel();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMotionEvent(MotionEvent ev) {
|
||||
switch (ev.getActionMasked()) {
|
||||
@@ -191,10 +178,17 @@ public class OverscrollInputConsumer<T extends BaseDraggingActivity> extends Del
|
||||
}
|
||||
|
||||
private boolean isOverscrolled() {
|
||||
if (mRecentsView == null) {
|
||||
BaseDraggingActivity activity = mGestureState.getActivityInterface()
|
||||
.getCreatedActivity();
|
||||
if (activity != null) {
|
||||
mRecentsView = activity.getOverviewPanel();
|
||||
}
|
||||
}
|
||||
|
||||
// Make sure there isn't an app to quick switch to on our right
|
||||
int maxIndex = 0;
|
||||
if ((mRecentsView instanceof LauncherRecentsView)
|
||||
&& ((LauncherRecentsView) mRecentsView).hasRecentsExtraCard()) {
|
||||
if (mRecentsView != null && mRecentsView.hasRecentsExtraCard()) {
|
||||
maxIndex = 1;
|
||||
}
|
||||
|
||||
|
||||
+7
-21
@@ -30,13 +30,11 @@ import android.graphics.Matrix.ScaleToFit;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.RectF;
|
||||
import android.os.Build;
|
||||
import android.view.Surface;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.android.launcher3.BaseDraggingActivity;
|
||||
import com.android.launcher3.DeviceProfile;
|
||||
import com.android.launcher3.LauncherState;
|
||||
import com.android.launcher3.R;
|
||||
import com.android.launcher3.Utilities;
|
||||
import com.android.launcher3.anim.Interpolators;
|
||||
@@ -60,7 +58,7 @@ import com.android.systemui.shared.system.WindowManagerWrapper;
|
||||
public class AppWindowAnimationHelper {
|
||||
|
||||
// The bounds of the source app in device coordinates
|
||||
private final Rect mSourceStackBounds = new Rect();
|
||||
private final RectF mSourceStackBounds = new RectF();
|
||||
// The insets of the source app
|
||||
private final Rect mSourceInsets = new Rect();
|
||||
// The source app bounds with the source insets applied, in the device coordinates
|
||||
@@ -159,14 +157,10 @@ public class AppWindowAnimationHelper {
|
||||
mSourceRect.set(scaledTargetRect);
|
||||
}
|
||||
|
||||
private float getSrcToTargetScale() {
|
||||
if (mOrientedState == null ||
|
||||
(mOrientedState.getDisplayRotation() == Surface.ROTATION_0
|
||||
|| mOrientedState.getDisplayRotation() == Surface.ROTATION_180)) {
|
||||
return mSourceRect.width() / mTargetRect.width();
|
||||
} else {
|
||||
return mSourceRect.height() / mTargetRect.height();
|
||||
}
|
||||
public float getSrcToTargetScale() {
|
||||
return LayoutUtils.getTaskScale(mOrientedState,
|
||||
mSourceRect.width(), mSourceRect.height(),
|
||||
mTargetRect.width(), mTargetRect.height());
|
||||
}
|
||||
|
||||
public void prepareAnimation(DeviceProfile dp, boolean isOpening) {
|
||||
@@ -277,8 +271,9 @@ public class AppWindowAnimationHelper {
|
||||
mCurrentRect.offset(params.mOffset, 0);
|
||||
} else {
|
||||
int displayRotation = mOrientedState.getDisplayRotation();
|
||||
int launcherRotation = mOrientedState.getLauncherRotation();
|
||||
mOrientedState.getOrientationHandler().offsetTaskRect(mCurrentRect,
|
||||
params.mOffset, displayRotation);
|
||||
params.mOffset, displayRotation, launcherRotation);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -377,15 +372,6 @@ public class AppWindowAnimationHelper {
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The source rect's scale and translation relative to the target rect.
|
||||
*/
|
||||
public LauncherState.ScaleAndTranslation getScaleAndTranslation() {
|
||||
float scale = getSrcToTargetScale();
|
||||
float translationY = mSourceRect.centerY() - mSourceRect.top - mTargetRect.centerY();
|
||||
return new LauncherState.ScaleAndTranslation(scale, 0, translationY);
|
||||
}
|
||||
|
||||
private void updateStackBoundsToMultiWindowTaskSize(BaseDraggingActivity activity) {
|
||||
SystemUiProxy proxy = SystemUiProxy.INSTANCE.get(activity);
|
||||
if (proxy.isActive()) {
|
||||
|
||||
@@ -207,9 +207,23 @@ public class RectFSpringAnim {
|
||||
mRectScaleAnim.skipToEnd();
|
||||
}
|
||||
}
|
||||
mRectXAnimEnded = true;
|
||||
mRectYAnimEnded = true;
|
||||
mRectScaleAnimEnded = true;
|
||||
maybeOnEnd();
|
||||
}
|
||||
|
||||
private boolean isEnded() {
|
||||
return mRectXAnimEnded && mRectYAnimEnded && mRectScaleAnimEnded;
|
||||
}
|
||||
|
||||
private void onUpdate() {
|
||||
if (isEnded()) {
|
||||
// Prevent further updates from being called. This can happen between callbacks for
|
||||
// ending the x/y/scale animations.
|
||||
return;
|
||||
}
|
||||
|
||||
if (!mOnUpdateListeners.isEmpty()) {
|
||||
float currentWidth = Utilities.mapRange(mCurrentScaleProgress, mStartRect.width(),
|
||||
mTargetRect.width());
|
||||
@@ -229,7 +243,7 @@ public class RectFSpringAnim {
|
||||
}
|
||||
|
||||
private void maybeOnEnd() {
|
||||
if (mAnimsStarted && mRectXAnimEnded && mRectYAnimEnded && mRectScaleAnimEnded) {
|
||||
if (mAnimsStarted && isEnded()) {
|
||||
mAnimsStarted = false;
|
||||
for (Animator.AnimatorListener animatorListener : mAnimatorListeners) {
|
||||
animatorListener.onAnimationEnd(null);
|
||||
|
||||
+2
-1
@@ -21,6 +21,7 @@ import static com.android.launcher3.LauncherState.NORMAL;
|
||||
import static com.android.launcher3.anim.Interpolators.ACCEL_DEACCEL;
|
||||
import static com.android.launcher3.anim.Interpolators.LINEAR;
|
||||
import static com.android.launcher3.states.StateAnimationConfig.ANIM_ALL_COMPONENTS;
|
||||
import static com.android.launcher3.states.StateAnimationConfig.SKIP_DEPTH_CONTROLLER;
|
||||
import static com.android.launcher3.states.StateAnimationConfig.SKIP_OVERVIEW;
|
||||
|
||||
import android.animation.Animator;
|
||||
@@ -146,7 +147,7 @@ public class StaggeredWorkspaceAnim {
|
||||
*/
|
||||
private void prepareToAnimate(Launcher launcher) {
|
||||
StateAnimationConfig config = new StateAnimationConfig();
|
||||
config.animFlags = ANIM_ALL_COMPONENTS | SKIP_OVERVIEW;
|
||||
config.animFlags = ANIM_ALL_COMPONENTS | SKIP_OVERVIEW | SKIP_DEPTH_CONTROLLER;
|
||||
config.duration = 0;
|
||||
// setRecentsAttachedToAppWindow() will animate recents out.
|
||||
launcher.getStateManager().createAtomicAnimation(BACKGROUND_APP, NORMAL, config).start();
|
||||
|
||||
@@ -0,0 +1,284 @@
|
||||
/*
|
||||
* Copyright (C) 2020 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.android.quickstep.util;
|
||||
|
||||
import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
|
||||
import static com.android.launcher3.touch.PagedOrientationHandler.MATRIX_POST_TRANSLATE;
|
||||
import static com.android.quickstep.util.AppWindowAnimationHelper.applySurfaceParams;
|
||||
import static com.android.quickstep.util.RecentsOrientedState.postDisplayRotation;
|
||||
import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_CLOSING;
|
||||
import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_OPENING;
|
||||
import static com.android.systemui.shared.system.WindowManagerWrapper.WINDOWING_MODE_FULLSCREEN;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Matrix;
|
||||
import android.graphics.PointF;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.RectF;
|
||||
|
||||
import com.android.launcher3.DeviceProfile;
|
||||
import com.android.launcher3.R;
|
||||
import com.android.launcher3.Utilities;
|
||||
import com.android.launcher3.anim.Interpolators;
|
||||
import com.android.launcher3.config.FeatureFlags;
|
||||
import com.android.launcher3.touch.PagedOrientationHandler;
|
||||
import com.android.quickstep.AnimatedFloat;
|
||||
import com.android.quickstep.RecentsAnimationTargets;
|
||||
import com.android.quickstep.util.AppWindowAnimationHelper.TargetAlphaProvider;
|
||||
import com.android.quickstep.util.AppWindowAnimationHelper.TransformParams;
|
||||
import com.android.quickstep.views.RecentsView.ScrollState;
|
||||
import com.android.quickstep.views.TaskThumbnailView.PreviewPositionHelper;
|
||||
import com.android.quickstep.views.TaskView;
|
||||
import com.android.quickstep.views.TaskView.FullscreenDrawParams;
|
||||
import com.android.systemui.shared.recents.model.ThumbnailData;
|
||||
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
|
||||
import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat.SurfaceParams;
|
||||
|
||||
/**
|
||||
* A utility class which emulates the layout behavior of TaskView and RecentsView
|
||||
*/
|
||||
public class TaskViewSimulator {
|
||||
|
||||
private final Rect mTmpCropRect = new Rect();
|
||||
private final RectF mTempRectF = new RectF();
|
||||
|
||||
private final RecentsOrientedState mOrientationState;
|
||||
private final Context mContext;
|
||||
private final TaskSizeProvider mSizeProvider;
|
||||
|
||||
private final Rect mTaskRect = new Rect();
|
||||
private final PointF mPivot = new PointF();
|
||||
private DeviceProfile mDp;
|
||||
|
||||
private final Matrix mMatrix = new Matrix();
|
||||
private RemoteAnimationTargetCompat mRunningTarget;
|
||||
private RecentsAnimationTargets mAllTargets;
|
||||
|
||||
// Whether to boost the opening animation target layers, or the closing
|
||||
private int mBoostModeTargetLayers = -1;
|
||||
private TargetAlphaProvider mTaskAlphaCallback = (t, a) -> a;
|
||||
|
||||
// Thumbnail view properties
|
||||
private final Rect mThumbnailPosition = new Rect();
|
||||
private final ThumbnailData mThumbnailData = new ThumbnailData();
|
||||
private final PreviewPositionHelper mPositionHelper;
|
||||
private final Matrix mInversePositionMatrix = new Matrix();
|
||||
|
||||
// TaskView properties
|
||||
private final FullscreenDrawParams mCurrentFullscreenParams;
|
||||
private float mCurveScale = 1;
|
||||
|
||||
// RecentsView properties
|
||||
public final AnimatedFloat recentsViewScale = new AnimatedFloat(() -> { });
|
||||
public final AnimatedFloat fullScreenProgress = new AnimatedFloat(() -> { });
|
||||
private final ScrollState mScrollState = new ScrollState();
|
||||
private final int mPageSpacing;
|
||||
|
||||
// Cached calculations
|
||||
private boolean mLayoutValid = false;
|
||||
private boolean mScrollValid = false;
|
||||
|
||||
public TaskViewSimulator(Context context, TaskSizeProvider sizeProvider) {
|
||||
mContext = context;
|
||||
mSizeProvider = sizeProvider;
|
||||
mPositionHelper = new PreviewPositionHelper(context);
|
||||
mOrientationState = new RecentsOrientedState(context);
|
||||
|
||||
mCurrentFullscreenParams = new FullscreenDrawParams(context);
|
||||
mPageSpacing = context.getResources().getDimensionPixelSize(R.dimen.recents_page_spacing);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the device profile for the current state
|
||||
*/
|
||||
public void setDp(DeviceProfile dp, boolean isOpening) {
|
||||
mDp = dp;
|
||||
mBoostModeTargetLayers = isOpening ? MODE_OPENING : MODE_CLOSING;
|
||||
mLayoutValid = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see com.android.quickstep.views.RecentsView#setLayoutRotation(int, int)
|
||||
*/
|
||||
public void setLayoutRotation(int touchRotation, int displayRotation) {
|
||||
if (!FeatureFlags.ENABLE_FIXED_ROTATION_TRANSFORM.get()) {
|
||||
return;
|
||||
}
|
||||
mOrientationState.update(touchRotation, displayRotation,
|
||||
mOrientationState.getLauncherRotation());
|
||||
mLayoutValid = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see com.android.quickstep.views.RecentsView#FULLSCREEN_PROGRESS
|
||||
*/
|
||||
public float getFullScreenScale() {
|
||||
if (mDp == null) {
|
||||
return 1;
|
||||
}
|
||||
mSizeProvider.calculateTaskSize(mContext, mDp, mTaskRect);
|
||||
return mOrientationState.getFullScreenScaleAndPivot(mTaskRect, mDp, mPivot);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the targets which the simulator will control
|
||||
*/
|
||||
public void setPreview(
|
||||
RemoteAnimationTargetCompat runningTarget, RecentsAnimationTargets allTargets) {
|
||||
mRunningTarget = runningTarget;
|
||||
mAllTargets = allTargets;
|
||||
|
||||
mThumbnailData.insets.set(mRunningTarget.contentInsets);
|
||||
// TODO: What is this?
|
||||
mThumbnailData.windowingMode = WINDOWING_MODE_FULLSCREEN;
|
||||
|
||||
mThumbnailPosition.set(runningTarget.screenSpaceBounds);
|
||||
// TODO: Should sourceContainerBounds already have this offset?
|
||||
mThumbnailPosition.offsetTo(mRunningTarget.position.x, mRunningTarget.position.y);
|
||||
|
||||
mLayoutValid = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the scroll for RecentsView
|
||||
*/
|
||||
public void setScroll(int scroll) {
|
||||
if (mScrollState.scroll != scroll) {
|
||||
mScrollState.scroll = scroll;
|
||||
mScrollValid = false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets an alternate function which can be used to control the alpha
|
||||
*/
|
||||
public void setTaskAlphaCallback(TargetAlphaProvider callback) {
|
||||
mTaskAlphaCallback = callback;
|
||||
}
|
||||
|
||||
/**
|
||||
* Applies the target to the previously set parameters
|
||||
*/
|
||||
public void apply(TransformParams params) {
|
||||
if (mDp == null || mRunningTarget == null) {
|
||||
return;
|
||||
}
|
||||
if (!mLayoutValid) {
|
||||
mLayoutValid = true;
|
||||
|
||||
getFullScreenScale();
|
||||
mThumbnailData.rotation = FeatureFlags.ENABLE_FIXED_ROTATION_TRANSFORM.get()
|
||||
? mOrientationState.getDisplayRotation() : mPositionHelper.getCurrentRotation();
|
||||
|
||||
mPositionHelper.updateThumbnailMatrix(mThumbnailPosition, mThumbnailData,
|
||||
mDp.isMultiWindowMode, mTaskRect.width(), mTaskRect.height());
|
||||
|
||||
mPositionHelper.getMatrix().invert(mInversePositionMatrix);
|
||||
|
||||
PagedOrientationHandler poh = mOrientationState.getOrientationHandler();
|
||||
mScrollState.halfPageSize =
|
||||
poh.getPrimaryValue(mTaskRect.width(), mTaskRect.height()) / 2;
|
||||
mScrollState.halfScreenSize = poh.getPrimaryValue(mDp.widthPx, mDp.heightPx) / 2;
|
||||
mScrollValid = false;
|
||||
}
|
||||
|
||||
if (!mScrollValid) {
|
||||
mScrollValid = true;
|
||||
int start = mOrientationState.getOrientationHandler()
|
||||
.getPrimaryValue(mTaskRect.left, mTaskRect.top);
|
||||
mScrollState.screenCenter = start + mScrollState.scroll + mScrollState.halfPageSize;
|
||||
mScrollState.updateInterpolation(start, mPageSpacing);
|
||||
mCurveScale = TaskView.getCurveScaleForInterpolation(mScrollState.linearInterpolation);
|
||||
}
|
||||
|
||||
float progress = Utilities.boundToRange(fullScreenProgress.value, 0, 1);
|
||||
mCurrentFullscreenParams.setProgress(
|
||||
progress, recentsViewScale.value, mTaskRect.width(), mDp, mPositionHelper);
|
||||
|
||||
// Apply thumbnail matrix
|
||||
RectF insets = mCurrentFullscreenParams.mCurrentDrawnInsets;
|
||||
float scale = mCurrentFullscreenParams.mScale;
|
||||
float taskWidth = mTaskRect.width();
|
||||
float taskHeight = mTaskRect.height();
|
||||
|
||||
mMatrix.set(mPositionHelper.getMatrix());
|
||||
mMatrix.postScale(scale, scale);
|
||||
mMatrix.postTranslate(insets.left, insets.top);
|
||||
|
||||
// Apply TaskView matrix: scale, translate, scroll
|
||||
mMatrix.postScale(mCurveScale, mCurveScale, taskWidth / 2, taskHeight / 2);
|
||||
mMatrix.postTranslate(mTaskRect.left, mTaskRect.top);
|
||||
mOrientationState.getOrientationHandler().set(
|
||||
mMatrix, MATRIX_POST_TRANSLATE, mScrollState.scroll);
|
||||
|
||||
// Apply recensView matrix
|
||||
mMatrix.postScale(recentsViewScale.value, recentsViewScale.value, mPivot.x, mPivot.y);
|
||||
postDisplayRotation(mOrientationState.getDisplayRotation(),
|
||||
mDp.widthPx, mDp.heightPx, mMatrix);
|
||||
|
||||
// Crop rect is the inverse of thumbnail matrix
|
||||
mTempRectF.set(-insets.left, -insets.top,
|
||||
taskWidth + insets.right, taskHeight + insets.bottom);
|
||||
mInversePositionMatrix.mapRect(mTempRectF);
|
||||
mTempRectF.roundOut(mTmpCropRect);
|
||||
|
||||
SurfaceParams[] surfaceParams = new SurfaceParams[mAllTargets.unfilteredApps.length];
|
||||
for (int i = 0; i < mAllTargets.unfilteredApps.length; i++) {
|
||||
RemoteAnimationTargetCompat app = mAllTargets.unfilteredApps[i];
|
||||
SurfaceParams.Builder builder = new SurfaceParams.Builder(app.leash)
|
||||
.withLayer(RemoteAnimationProvider.getLayer(app, mBoostModeTargetLayers));
|
||||
|
||||
if (app.mode == mAllTargets.targetMode) {
|
||||
float alpha = mTaskAlphaCallback.getAlpha(app, params.getTargetAlpha());
|
||||
if (app.activityType != RemoteAnimationTargetCompat.ACTIVITY_TYPE_HOME) {
|
||||
// Fade out Assistant overlay.
|
||||
if (app.activityType == RemoteAnimationTargetCompat.ACTIVITY_TYPE_ASSISTANT
|
||||
&& app.isNotInRecents) {
|
||||
alpha = Interpolators.ACCEL_2.getInterpolation(fullScreenProgress.value);
|
||||
}
|
||||
|
||||
builder.withAlpha(alpha)
|
||||
.withMatrix(mMatrix)
|
||||
.withWindowCrop(mTmpCropRect)
|
||||
.withCornerRadius(mCurrentFullscreenParams.mCurrentDrawnCornerRadius);
|
||||
} else if (params.getTargetSet().hasRecents) {
|
||||
// If home has a different target then recents, reverse anim the home target.
|
||||
builder.withAlpha(fullScreenProgress.value * params.getTargetAlpha());
|
||||
}
|
||||
} else {
|
||||
builder.withAlpha(1);
|
||||
if (ENABLE_QUICKSTEP_LIVE_TILE.get() && params.isLauncherOnTop()) {
|
||||
builder.withLayer(Integer.MAX_VALUE);
|
||||
}
|
||||
}
|
||||
surfaceParams[i] = builder.build();
|
||||
}
|
||||
|
||||
applySurfaceParams(params.getSyncTransactionApplier(), surfaceParams);
|
||||
}
|
||||
|
||||
/**
|
||||
* Interface for calculating taskSize
|
||||
*/
|
||||
public interface TaskSizeProvider {
|
||||
|
||||
/**
|
||||
* Sets the outRect to the expected taskSize
|
||||
*/
|
||||
void calculateTaskSize(Context context, DeviceProfile dp, Rect outRect);
|
||||
}
|
||||
|
||||
}
|
||||
+6
-29
@@ -47,7 +47,6 @@ import com.android.launcher3.appprediction.PredictionUiStateManager;
|
||||
import com.android.launcher3.appprediction.PredictionUiStateManager.Client;
|
||||
import com.android.launcher3.config.FeatureFlags;
|
||||
import com.android.launcher3.statehandlers.DepthController;
|
||||
import com.android.launcher3.states.RotationHelper;
|
||||
import com.android.launcher3.uioverrides.plugins.PluginManagerWrapper;
|
||||
import com.android.launcher3.util.TraceHelper;
|
||||
import com.android.launcher3.views.ScrimView;
|
||||
@@ -88,10 +87,6 @@ public class LauncherRecentsView extends RecentsView<BaseQuickstepLauncher>
|
||||
}
|
||||
};
|
||||
|
||||
private RotationHelper.ForcedRotationChangedListener mForcedRotationChangedListener =
|
||||
isForcedRotation -> LauncherRecentsView.this
|
||||
.disableMultipleLayoutRotations(!isForcedRotation);
|
||||
|
||||
public LauncherRecentsView(Context context) {
|
||||
this(context, null);
|
||||
}
|
||||
@@ -102,10 +97,15 @@ public class LauncherRecentsView extends RecentsView<BaseQuickstepLauncher>
|
||||
|
||||
public LauncherRecentsView(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||
super(context, attrs, defStyleAttr);
|
||||
setContentAlpha(0);
|
||||
mActivity.getStateManager().addStateListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(OverviewActionsView actionsView) {
|
||||
super.init(actionsView);
|
||||
setContentAlpha(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startHome() {
|
||||
if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
|
||||
@@ -183,27 +183,6 @@ public class LauncherRecentsView extends RecentsView<BaseQuickstepLauncher>
|
||||
LayoutUtils.calculateLauncherTaskSize(getContext(), dp, outRect);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The translationX to apply to this view so that the first task is just offscreen.
|
||||
*/
|
||||
public float getOffscreenTranslationX(float recentsScale) {
|
||||
LauncherState.ScaleAndTranslation overviewScaleAndTranslation =
|
||||
NORMAL.getOverviewScaleAndTranslation(mActivity);
|
||||
float offscreen = mOrientationHandler.getTranslationValue(overviewScaleAndTranslation);
|
||||
// Offset since scale pushes tasks outwards.
|
||||
getTaskSize(sTempRect);
|
||||
int taskSize = mOrientationHandler.getPrimarySize(sTempRect);
|
||||
offscreen += taskSize * (recentsScale - 1) / 2;
|
||||
if (mRunningTaskTileHidden) {
|
||||
// The first task is hidden, so offset by its width.
|
||||
offscreen -= (taskSize + getPageSpacing()) * recentsScale;
|
||||
}
|
||||
if (isRtl()) {
|
||||
offscreen = -offscreen;
|
||||
}
|
||||
return offscreen;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onTaskLaunchAnimationUpdate(float progress, TaskView tv) {
|
||||
if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
|
||||
@@ -344,7 +323,6 @@ public class LauncherRecentsView extends RecentsView<BaseQuickstepLauncher>
|
||||
super.onAttachedToWindow();
|
||||
PluginManagerWrapper.INSTANCE.get(getContext()).addPluginListener(
|
||||
mRecentsExtraCardPluginListener, RecentsExtraCard.class);
|
||||
mActivity.getRotationHelper().addForcedRotationCallback(mForcedRotationChangedListener);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -352,7 +330,6 @@ public class LauncherRecentsView extends RecentsView<BaseQuickstepLauncher>
|
||||
super.onDetachedFromWindow();
|
||||
PluginManagerWrapper.INSTANCE.get(getContext()).removePluginListener(
|
||||
mRecentsExtraCardPluginListener);
|
||||
mActivity.getRotationHelper().removeForcedRotationCallback(mForcedRotationChangedListener);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+87
-26
@@ -16,34 +16,59 @@
|
||||
|
||||
package com.android.quickstep.views;
|
||||
|
||||
import static com.android.launcher3.config.FeatureFlags.ENABLE_OVERVIEW_ACTIONS;
|
||||
import static com.android.quickstep.SysUINavigationMode.removeShelfFromOverview;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
import androidx.annotation.IntDef;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.android.launcher3.R;
|
||||
import com.android.launcher3.util.MultiValueAlpha;
|
||||
import com.android.launcher3.util.MultiValueAlpha.AlphaProperty;
|
||||
import com.android.quickstep.TaskOverlayFactory.OverlayUICallbacks;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
|
||||
/**
|
||||
* View for showing action buttons in Overview
|
||||
*/
|
||||
public class OverviewActionsView extends FrameLayout {
|
||||
public class OverviewActionsView<T extends OverlayUICallbacks> extends FrameLayout
|
||||
implements OnClickListener {
|
||||
|
||||
private final View mScreenshotButton;
|
||||
private final View mShareButton;
|
||||
@IntDef(flag = true, value = {
|
||||
HIDDEN_UNSUPPORTED_NAVIGATION,
|
||||
HIDDEN_DISABLED_FEATURE,
|
||||
HIDDEN_NON_ZERO_ROTATION,
|
||||
HIDDEN_NO_TASKS,
|
||||
HIDDEN_GESTURE_RUNNING,
|
||||
HIDDEN_NO_RECENTS})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface ActionsHiddenFlags { }
|
||||
|
||||
/**
|
||||
* Listener for taps on the various actions.
|
||||
*/
|
||||
public interface Listener {
|
||||
/** User has initiated the share actions. */
|
||||
void onShare();
|
||||
public static final int HIDDEN_UNSUPPORTED_NAVIGATION = 1 << 0;
|
||||
public static final int HIDDEN_DISABLED_FEATURE = 1 << 1;
|
||||
public static final int HIDDEN_NON_ZERO_ROTATION = 1 << 2;
|
||||
public static final int HIDDEN_NO_TASKS = 1 << 3;
|
||||
public static final int HIDDEN_GESTURE_RUNNING = 1 << 4;
|
||||
public static final int HIDDEN_NO_RECENTS = 1 << 5;
|
||||
|
||||
/** User has initiated the screenshot action. */
|
||||
void onScreenshot();
|
||||
}
|
||||
private static final int INDEX_CONTENT_ALPHA = 0;
|
||||
private static final int INDEX_VISIBILITY_ALPHA = 1;
|
||||
private static final int INDEX_HIDDEN_FLAGS_ALPHA = 2;
|
||||
|
||||
private final MultiValueAlpha mMultiValueAlpha;
|
||||
|
||||
@ActionsHiddenFlags
|
||||
private int mHiddenFlags;
|
||||
|
||||
protected T mCallbacks;
|
||||
|
||||
public OverviewActionsView(Context context) {
|
||||
this(context, null);
|
||||
@@ -54,26 +79,62 @@ public class OverviewActionsView extends FrameLayout {
|
||||
}
|
||||
|
||||
public OverviewActionsView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
|
||||
this(context, attrs, defStyleAttr, 0);
|
||||
super(context, attrs, defStyleAttr, 0);
|
||||
mMultiValueAlpha = new MultiValueAlpha(this, 3);
|
||||
}
|
||||
|
||||
public OverviewActionsView(Context context, AttributeSet attrs, int defStyleAttr,
|
||||
int defStyleRes) {
|
||||
super(context, attrs, defStyleAttr, defStyleRes);
|
||||
LayoutInflater.from(context).inflate(R.layout.overview_actions, this, true);
|
||||
mShareButton = findViewById(R.id.action_share);
|
||||
mScreenshotButton = findViewById(R.id.action_screenshot);
|
||||
@Override
|
||||
protected void onFinishInflate() {
|
||||
super.onFinishInflate();
|
||||
findViewById(R.id.action_share).setOnClickListener(this);
|
||||
findViewById(R.id.action_screenshot).setOnClickListener(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set listener for callbacks on action button taps.
|
||||
*
|
||||
* @param listener for callbacks, or {@code null} to clear the listener.
|
||||
* @param callbacks for callbacks, or {@code null} to clear the listener.
|
||||
*/
|
||||
public void setListener(@Nullable OverviewActionsView.Listener listener) {
|
||||
mShareButton.setOnClickListener(
|
||||
listener == null ? null : view -> listener.onShare());
|
||||
mScreenshotButton.setOnClickListener(
|
||||
listener == null ? null : view -> listener.onScreenshot());
|
||||
public void setCallbacks(T callbacks) {
|
||||
mCallbacks = callbacks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
if (mCallbacks == null) {
|
||||
return;
|
||||
}
|
||||
int id = view.getId();
|
||||
if (id == R.id.action_share) {
|
||||
mCallbacks.onShare();
|
||||
} else if (id == R.id.action_screenshot) {
|
||||
mCallbacks.onScreenshot();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onAttachedToWindow() {
|
||||
super.onAttachedToWindow();
|
||||
updateHiddenFlags(HIDDEN_DISABLED_FEATURE, !ENABLE_OVERVIEW_ACTIONS.get());
|
||||
updateHiddenFlags(HIDDEN_UNSUPPORTED_NAVIGATION, !removeShelfFromOverview(getContext()));
|
||||
}
|
||||
|
||||
public void updateHiddenFlags(@ActionsHiddenFlags int visibilityFlags, boolean enable) {
|
||||
if (enable) {
|
||||
mHiddenFlags |= visibilityFlags;
|
||||
} else {
|
||||
mHiddenFlags &= ~visibilityFlags;
|
||||
}
|
||||
boolean isHidden = mHiddenFlags != 0;
|
||||
mMultiValueAlpha.getProperty(INDEX_HIDDEN_FLAGS_ALPHA).setValue(isHidden ? 0 : 1);
|
||||
setVisibility(isHidden ? INVISIBLE : VISIBLE);
|
||||
}
|
||||
|
||||
public AlphaProperty getContentAlpha() {
|
||||
return mMultiValueAlpha.getProperty(INDEX_CONTENT_ALPHA);
|
||||
}
|
||||
|
||||
public AlphaProperty getVisibilityAlpha() {
|
||||
return mMultiValueAlpha.getProperty(INDEX_VISIBILITY_ALPHA);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,6 @@ import static com.android.launcher3.anim.Interpolators.ACCEL;
|
||||
import static com.android.launcher3.anim.Interpolators.ACCEL_2;
|
||||
import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN;
|
||||
import static com.android.launcher3.anim.Interpolators.LINEAR;
|
||||
import static com.android.launcher3.config.FeatureFlags.ENABLE_OVERVIEW_ACTIONS;
|
||||
import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
|
||||
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.TASK_DISMISS_SWIPE_UP;
|
||||
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.TASK_LAUNCH_SWIPE_DOWN;
|
||||
@@ -39,6 +38,10 @@ import static com.android.launcher3.userevent.nano.LauncherLogProto.ControlType.
|
||||
import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
|
||||
import static com.android.launcher3.util.SystemUiController.UI_STATE_OVERVIEW;
|
||||
import static com.android.quickstep.TaskUtils.checkCurrentOrManagedUserId;
|
||||
import static com.android.quickstep.views.OverviewActionsView.HIDDEN_GESTURE_RUNNING;
|
||||
import static com.android.quickstep.views.OverviewActionsView.HIDDEN_NON_ZERO_ROTATION;
|
||||
import static com.android.quickstep.views.OverviewActionsView.HIDDEN_NO_RECENTS;
|
||||
import static com.android.quickstep.views.OverviewActionsView.HIDDEN_NO_TASKS;
|
||||
|
||||
import android.animation.AnimatorSet;
|
||||
import android.animation.LayoutTransition;
|
||||
@@ -50,8 +53,10 @@ import android.app.ActivityManager;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Configuration;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Point;
|
||||
import android.graphics.PointF;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.RectF;
|
||||
import android.graphics.Typeface;
|
||||
@@ -66,12 +71,12 @@ import android.util.AttributeSet;
|
||||
import android.util.FloatProperty;
|
||||
import android.util.Property;
|
||||
import android.util.SparseBooleanArray;
|
||||
import android.view.Gravity;
|
||||
import android.view.HapticFeedbackConstants;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.OrientationEventListener;
|
||||
import android.view.Surface;
|
||||
import android.view.View;
|
||||
import android.view.ViewDebug;
|
||||
import android.view.ViewGroup;
|
||||
@@ -85,9 +90,7 @@ import androidx.annotation.Nullable;
|
||||
import com.android.launcher3.BaseActivity;
|
||||
import com.android.launcher3.DeviceProfile;
|
||||
import com.android.launcher3.Insettable;
|
||||
import com.android.launcher3.InsettableFrameLayout;
|
||||
import com.android.launcher3.InvariantDeviceProfile;
|
||||
import com.android.launcher3.LauncherState;
|
||||
import com.android.launcher3.PagedView;
|
||||
import com.android.launcher3.R;
|
||||
import com.android.launcher3.Utilities;
|
||||
@@ -115,19 +118,18 @@ import com.android.quickstep.RecentsAnimationController;
|
||||
import com.android.quickstep.RecentsAnimationTargets;
|
||||
import com.android.quickstep.RecentsModel;
|
||||
import com.android.quickstep.RecentsModel.TaskVisualsChangeListener;
|
||||
import com.android.quickstep.SysUINavigationMode;
|
||||
import com.android.quickstep.SystemUiProxy;
|
||||
import com.android.quickstep.TaskThumbnailCache;
|
||||
import com.android.quickstep.TaskUtils;
|
||||
import com.android.quickstep.ViewUtils;
|
||||
import com.android.quickstep.util.AppWindowAnimationHelper;
|
||||
import com.android.quickstep.util.LayoutUtils;
|
||||
import com.android.quickstep.util.RecentsOrientedState;
|
||||
import com.android.systemui.plugins.ResourceProvider;
|
||||
import com.android.systemui.shared.recents.IPinnedStackAnimationListener;
|
||||
import com.android.systemui.shared.recents.model.Task;
|
||||
import com.android.systemui.shared.recents.model.ThumbnailData;
|
||||
import com.android.systemui.shared.system.ActivityManagerWrapper;
|
||||
import com.android.systemui.shared.system.ConfigurationCompat;
|
||||
import com.android.systemui.shared.system.LauncherEventUtil;
|
||||
import com.android.systemui.shared.system.PackageManagerWrapper;
|
||||
import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat;
|
||||
@@ -172,8 +174,23 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
}
|
||||
};
|
||||
|
||||
protected final RecentsOrientedState mOrientationState = new RecentsOrientedState();
|
||||
public static final FloatProperty<RecentsView> ADJACENT_PAGE_OFFSET =
|
||||
new FloatProperty<RecentsView>("adjacentPageOffset") {
|
||||
@Override
|
||||
public void setValue(RecentsView recentsView, float v) {
|
||||
if (recentsView.mAdjacentPageOffset != v) {
|
||||
recentsView.mAdjacentPageOffset = v;
|
||||
recentsView.updateAdjacentPageOffset();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Float get(RecentsView recentsView) {
|
||||
return recentsView.mAdjacentPageOffset;
|
||||
}
|
||||
};
|
||||
|
||||
protected final RecentsOrientedState mOrientationState;
|
||||
private OrientationEventListener mOrientationListener;
|
||||
private int mPreviousRotation;
|
||||
protected RecentsAnimationController mRecentsAnimationController;
|
||||
@@ -185,6 +202,7 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
protected boolean mEnableDrawingLiveTile = false;
|
||||
protected final Rect mTempRect = new Rect();
|
||||
protected final RectF mTempRectF = new RectF();
|
||||
private final PointF mTempPointF = new PointF();
|
||||
|
||||
private static final int DISMISS_TASK_DURATION = 300;
|
||||
private static final int ADDITION_TASK_DURATION = 200;
|
||||
@@ -195,7 +213,6 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
private final float mFastFlingVelocity;
|
||||
private final RecentsModel mModel;
|
||||
private final int mTaskTopMargin;
|
||||
private final int mTaskBottomMargin;
|
||||
private final ClearAllButton mClearAllButton;
|
||||
private final Rect mClearAllButtonDeadZoneRect = new Rect();
|
||||
private final Rect mTaskViewDeadZoneRect = new Rect();
|
||||
@@ -214,6 +231,8 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
private boolean mOverlayEnabled;
|
||||
protected boolean mFreezeViewVisibility;
|
||||
|
||||
private float mAdjacentPageOffset = 0;
|
||||
|
||||
/**
|
||||
* TODO: Call reloadIdNeeded in onTaskStackChanged.
|
||||
*/
|
||||
@@ -282,6 +301,9 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
}
|
||||
};
|
||||
|
||||
private final RecentsOrientedState.SystemRotationChangeListener mSystemRotationChangeListener =
|
||||
enabled -> toggleOrientationEventListener();
|
||||
|
||||
private final PinnedStackAnimationListener mIPinnedStackAnimationListener =
|
||||
new PinnedStackAnimationListener();
|
||||
|
||||
@@ -328,8 +350,7 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
|
||||
// Keeps track of the index where the first TaskView should be
|
||||
private int mTaskViewStartIndex = 0;
|
||||
private View mActionsView;
|
||||
private boolean mGestureRunning = false;
|
||||
private OverviewActionsView mActionsView;
|
||||
|
||||
private BaseActivity.MultiWindowModeChangedListener mMultiWindowModeChangedListener =
|
||||
(inMultiWindowMode) -> {
|
||||
@@ -343,10 +364,11 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
super(context, attrs, defStyleAttr);
|
||||
setPageSpacing(getResources().getDimensionPixelSize(R.dimen.recents_page_spacing));
|
||||
setEnableFreeScroll(true);
|
||||
mOrientationState = new RecentsOrientedState(context);
|
||||
|
||||
mFastFlingVelocity = getResources()
|
||||
.getDimensionPixelSize(R.dimen.recents_fast_fling_velocity);
|
||||
mActivity = (T) BaseActivity.fromContext(context);
|
||||
mActivity = BaseActivity.fromContext(context);
|
||||
mModel = RecentsModel.INSTANCE.get(context);
|
||||
mIdp = InvariantDeviceProfile.INSTANCE.get(context);
|
||||
mTempAppWindowAnimationHelper =
|
||||
@@ -362,7 +384,6 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
setLayoutDirection(mIsRtl ? View.LAYOUT_DIRECTION_RTL : View.LAYOUT_DIRECTION_LTR);
|
||||
mTaskTopMargin = getResources()
|
||||
.getDimensionPixelSize(R.dimen.task_thumbnail_top_margin);
|
||||
mTaskBottomMargin = LayoutUtils.thumbnailBottomMargin(context);
|
||||
mSquaredTouchSlop = squaredTouchSlop(context);
|
||||
|
||||
mEmptyIcon = context.getDrawable(R.drawable.ic_empty_recents);
|
||||
@@ -389,11 +410,6 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
int rotation = RecentsOrientedState.getRotationForUserDegreesRotated(i);
|
||||
if (mPreviousRotation != rotation) {
|
||||
animateRecentsRotationInPlace(rotation);
|
||||
if (rotation == 0) {
|
||||
showActionsView();
|
||||
} else {
|
||||
hideActionsView();
|
||||
}
|
||||
mPreviousRotation = rotation;
|
||||
}
|
||||
}
|
||||
@@ -468,6 +484,10 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
reset();
|
||||
}
|
||||
|
||||
public void init(OverviewActionsView actionsView) {
|
||||
mActionsView = actionsView;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onAttachedToWindow() {
|
||||
super.onAttachedToWindow();
|
||||
@@ -481,7 +501,8 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
mIPinnedStackAnimationListener.setActivity(mActivity);
|
||||
SystemUiProxy.INSTANCE.get(getContext()).setPinnedStackAnimationListener(
|
||||
mIPinnedStackAnimationListener);
|
||||
setActionsView();
|
||||
mOrientationState.init();
|
||||
mOrientationState.addSystemRotationChangeListener(mSystemRotationChangeListener);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -496,6 +517,8 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
mIdp.removeOnChangeListener(this);
|
||||
SystemUiProxy.INSTANCE.get(getContext()).setPinnedStackAnimationListener(null);
|
||||
mIPinnedStackAnimationListener.setActivity(null);
|
||||
mOrientationState.removeSystemRotationChangeListener(mSystemRotationChangeListener);
|
||||
mOrientationState.destroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -507,6 +530,7 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
TaskView taskView = (TaskView) child;
|
||||
mHasVisibleTaskData.delete(taskView.getTask().key.id);
|
||||
mTaskViewPool.recycle(taskView);
|
||||
mActionsView.updateHiddenFlags(HIDDEN_NO_TASKS, getTaskViewCount() == 0);
|
||||
}
|
||||
updateTaskStartIndex(child);
|
||||
}
|
||||
@@ -519,6 +543,7 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
// child direction back to match system settings.
|
||||
child.setLayoutDirection(mIsRtl ? View.LAYOUT_DIRECTION_LTR : View.LAYOUT_DIRECTION_RTL);
|
||||
updateTaskStartIndex(child);
|
||||
mActionsView.updateHiddenFlags(HIDDEN_NO_TASKS, false);
|
||||
}
|
||||
|
||||
private void updateTaskStartIndex(View affectingView) {
|
||||
@@ -549,15 +574,6 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
}
|
||||
|
||||
public void setOverviewStateEnabled(boolean enabled) {
|
||||
if (supportsVerticalLandscape()
|
||||
&& !TestProtocol.sDisableSensorRotation // Ignore hardware dependency for tests
|
||||
&& mOrientationListener.canDetectOrientation()) {
|
||||
if (enabled) {
|
||||
mOrientationListener.enable();
|
||||
} else {
|
||||
mOrientationListener.disable();
|
||||
}
|
||||
}
|
||||
mOverviewStateEnabled = enabled;
|
||||
updateTaskStackListenerState();
|
||||
if (!enabled) {
|
||||
@@ -565,6 +581,26 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
// its thumbnail
|
||||
mTmpRunningTask = null;
|
||||
}
|
||||
toggleOrientationEventListener();
|
||||
}
|
||||
|
||||
private void toggleOrientationEventListener() {
|
||||
boolean canEnable = canEnableOverviewRotationAnimation() && mOverviewStateEnabled;
|
||||
UI_HELPER_EXECUTOR.execute(() -> {
|
||||
if (canEnable) {
|
||||
mOrientationListener.enable();
|
||||
} else {
|
||||
mOrientationListener.disable();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private boolean canEnableOverviewRotationAnimation() {
|
||||
return supportsVerticalLandscape() // not 3P launcher
|
||||
&& !TestProtocol.sDisableSensorRotation // Ignore hardware dependency for tests..
|
||||
&& mOrientationListener.canDetectOrientation() // ..but does the hardware even work?
|
||||
&& (mOrientationState.isSystemRotationAllowed() &&
|
||||
!mOrientationState.canLauncherRotate()); // launcher is going to rotate itself
|
||||
}
|
||||
|
||||
public void onDigitalWellbeingToastShown() {
|
||||
@@ -584,6 +620,15 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onConfigurationChanged(Configuration newConfig) {
|
||||
super.onConfigurationChanged(newConfig);
|
||||
int windowConfigurationRotation = ConfigurationCompat
|
||||
.getWindowConfigurationRotation(getResources().getConfiguration());
|
||||
setLayoutInternal(mOrientationState.getTouchRotation(),
|
||||
mOrientationState.getDisplayRotation(), windowConfigurationRotation);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onTouchEvent(MotionEvent ev) {
|
||||
super.onTouchEvent(ev);
|
||||
@@ -668,7 +713,6 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
if (getTaskViewCount() != requiredTaskCount) {
|
||||
if (indexOfChild(mClearAllButton) != -1) {
|
||||
removeView(mClearAllButton);
|
||||
hideActionsView();
|
||||
}
|
||||
for (int i = getTaskViewCount(); i < requiredTaskCount; i++) {
|
||||
addView(mTaskViewPool.getView());
|
||||
@@ -678,7 +722,6 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
}
|
||||
if (requiredTaskCount > 0) {
|
||||
addView(mClearAllButton);
|
||||
showActionsView();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -718,7 +761,6 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
if (indexOfChild(mClearAllButton) != -1) {
|
||||
removeView(mClearAllButton);
|
||||
}
|
||||
hideActionsView();
|
||||
}
|
||||
|
||||
public int getTaskViewCount() {
|
||||
@@ -778,7 +820,7 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
for (int i = 0; i < taskCount; i++) {
|
||||
getTaskViewAt(i).setFullscreenProgress(mFullscreenProgress);
|
||||
}
|
||||
if (mActionsView != null) {
|
||||
if (mActionsView != null && mOrientationState.getLauncherRotation() == Surface.ROTATION_0) {
|
||||
mActionsView.setVisibility(fullscreenProgress == 0 ? VISIBLE : INVISIBLE);
|
||||
}
|
||||
}
|
||||
@@ -803,7 +845,6 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
mTaskHeight = mTempRect.height();
|
||||
|
||||
mTempRect.top -= mTaskTopMargin;
|
||||
mTempRect.bottom += mTaskBottomMargin;
|
||||
setPadding(mTempRect.left - mInsets.left, mTempRect.top - mInsets.top,
|
||||
dp.widthPx - mInsets.right - mTempRect.right,
|
||||
dp.heightPx - mInsets.bottom - mTempRect.bottom);
|
||||
@@ -980,7 +1021,7 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
setEnableDrawingLiveTile(false);
|
||||
setRunningTaskHidden(true);
|
||||
setRunningTaskIconScaledDown(true);
|
||||
mGestureRunning = true;
|
||||
mActionsView.updateHiddenFlags(HIDDEN_GESTURE_RUNNING, true);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1046,7 +1087,7 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
}
|
||||
setRunningTaskHidden(false);
|
||||
animateUpRunningTaskIconScale();
|
||||
mGestureRunning = false;
|
||||
mActionsView.updateHiddenFlags(HIDDEN_GESTURE_RUNNING, false);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1057,13 +1098,12 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
*/
|
||||
public void showCurrentTask(int runningTaskId) {
|
||||
if (getTaskView(runningTaskId) == null) {
|
||||
boolean wasEmpty = getTaskViewCount() == 0;
|
||||
boolean wasEmpty = getChildCount() == 0;
|
||||
// Add an empty view for now until the task plan is loaded and applied
|
||||
final TaskView taskView = mTaskViewPool.getView();
|
||||
addView(taskView, mTaskViewStartIndex);
|
||||
if (wasEmpty) {
|
||||
addView(mClearAllButton);
|
||||
showActionsView();
|
||||
}
|
||||
// The temporary running task is only used for the duration between the start of the
|
||||
// gesture and the task list is loaded and applied
|
||||
@@ -1387,7 +1427,6 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
|
||||
if (getTaskViewCount() == 0) {
|
||||
removeViewInLayout(mClearAllButton);
|
||||
hideActionsView();
|
||||
startHome();
|
||||
} else {
|
||||
snapToPageImmediately(pageToSnapTo);
|
||||
@@ -1530,14 +1569,12 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
int alphaInt = Math.round(alpha * 255);
|
||||
mEmptyMessagePaint.setAlpha(alphaInt);
|
||||
mEmptyIcon.setAlpha(alphaInt);
|
||||
mActionsView.getContentAlpha().setValue(mContentAlpha);
|
||||
|
||||
if (alpha > 0) {
|
||||
setVisibility(VISIBLE);
|
||||
if (!mGestureRunning) {
|
||||
showActionsView();
|
||||
}
|
||||
} else if (!mFreezeViewVisibility) {
|
||||
setVisibility(GONE);
|
||||
hideActionsView();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1548,24 +1585,33 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
public void setFreezeViewVisibility(boolean freezeViewVisibility) {
|
||||
if (mFreezeViewVisibility != freezeViewVisibility) {
|
||||
mFreezeViewVisibility = freezeViewVisibility;
|
||||
|
||||
if (!mFreezeViewVisibility) {
|
||||
setVisibility(mContentAlpha > 0 ? VISIBLE : GONE);
|
||||
if (mContentAlpha > 0) {
|
||||
showActionsView();
|
||||
} else {
|
||||
hideActionsView();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setVisibility(int visibility) {
|
||||
super.setVisibility(visibility);
|
||||
if (mActionsView != null) {
|
||||
mActionsView.updateHiddenFlags(HIDDEN_NO_RECENTS, visibility != VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
public void setLayoutRotation(int touchRotation, int displayRotation) {
|
||||
if (mOrientationState.update(touchRotation, displayRotation)) {
|
||||
int launcherRotation = mOrientationState.getLauncherRotation();
|
||||
setLayoutInternal(touchRotation, displayRotation, launcherRotation);
|
||||
}
|
||||
|
||||
private void setLayoutInternal(int touchRotation, int displayRotation, int launcherRotation) {
|
||||
if (mOrientationState.update(touchRotation, displayRotation, launcherRotation)) {
|
||||
mOrientationHandler = mOrientationState.getOrientationHandler();
|
||||
mIsRtl = mOrientationHandler.getRecentsRtlSetting(getResources());
|
||||
setLayoutDirection(mIsRtl ? View.LAYOUT_DIRECTION_RTL : View.LAYOUT_DIRECTION_LTR);
|
||||
mClearAllButton.setRotation(mOrientationHandler.getDegreesRotated());
|
||||
mActivity.getDragLayer().recreateControllers();
|
||||
mActionsView.updateHiddenFlags(HIDDEN_NON_ZERO_ROTATION, touchRotation != 0);
|
||||
requestLayout();
|
||||
}
|
||||
}
|
||||
@@ -1589,11 +1635,6 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
return getTaskViewAtByAbsoluteIndex(getRunningTaskIndex() + 1);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public TaskView getPreviousTaskView() {
|
||||
return getTaskViewAtByAbsoluteIndex(getRunningTaskIndex() - 1);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public TaskView getCurrentPageTaskView() {
|
||||
return getTaskViewAtByAbsoluteIndex(getCurrentPage());
|
||||
@@ -1653,11 +1694,29 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
|
||||
updateEmptyStateUi(changed);
|
||||
|
||||
// Set the pivot points to match the task preview center
|
||||
setPivotY(((mInsets.top + getPaddingTop() + mTaskTopMargin)
|
||||
+ (getHeight() - mInsets.bottom - getPaddingBottom() - mTaskBottomMargin)) / 2);
|
||||
setPivotX(((mInsets.left + getPaddingLeft())
|
||||
+ (getWidth() - mInsets.right - getPaddingRight())) / 2);
|
||||
// Update the pivots such that when the task is scaled, it fills the full page
|
||||
getTaskSize(mTempRect);
|
||||
getPagedViewOrientedState().getFullScreenScaleAndPivot(
|
||||
mTempRect, mActivity.getDeviceProfile(), mTempPointF);
|
||||
setPivotX(mTempPointF.x);
|
||||
setPivotY(mTempPointF.y);
|
||||
updateAdjacentPageOffset();
|
||||
}
|
||||
|
||||
private void updateAdjacentPageOffset() {
|
||||
float offset = mAdjacentPageOffset * getWidth();
|
||||
if (mIsRtl) {
|
||||
offset = -offset;
|
||||
}
|
||||
int count = getChildCount();
|
||||
|
||||
TaskView runningTask = mRunningTaskId == -1 ? null : getTaskView(mRunningTaskId);
|
||||
int midPoint = runningTask == null ? -1 : indexOfChild(runningTask);
|
||||
|
||||
for (int i = 0; i < count; i++) {
|
||||
getChildAt(i).setTranslationX(i == midPoint ? 0 : (i < midPoint ? -offset : offset));
|
||||
}
|
||||
updateCurveProperties();
|
||||
}
|
||||
|
||||
private void updateDeadZoneRects() {
|
||||
@@ -1739,14 +1798,10 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
int centerTaskIndex = getCurrentPage();
|
||||
boolean launchingCenterTask = taskIndex == centerTaskIndex;
|
||||
|
||||
LauncherState.ScaleAndTranslation toScaleAndTranslation = appWindowAnimationHelper
|
||||
.getScaleAndTranslation();
|
||||
float toScale = toScaleAndTranslation.scale;
|
||||
float toTranslationY = toScaleAndTranslation.translationY;
|
||||
float toScale = appWindowAnimationHelper.getSrcToTargetScale();
|
||||
if (launchingCenterTask) {
|
||||
RecentsView recentsView = tv.getRecentsView();
|
||||
anim.play(ObjectAnimator.ofFloat(recentsView, SCALE_PROPERTY, toScale));
|
||||
anim.play(ObjectAnimator.ofFloat(recentsView, TRANSLATION_Y, toTranslationY));
|
||||
anim.play(ObjectAnimator.ofFloat(recentsView, FULLSCREEN_PROGRESS, 1));
|
||||
} else {
|
||||
// We are launching an adjacent task, so parallax the center and other adjacent task.
|
||||
@@ -2006,23 +2061,30 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
return mClearAllButton;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return How many pixels the running task is offset on the x-axis due to the current scrollX.
|
||||
*/
|
||||
public float getScrollOffset() {
|
||||
public int getScrollOffset() {
|
||||
if (getRunningTaskIndex() == -1) {
|
||||
return 0;
|
||||
}
|
||||
int startScroll = getScrollForPage(getRunningTaskIndex());
|
||||
int offsetX = startScroll - mOrientationHandler.getPrimaryScroll(this);
|
||||
offsetX *= mOrientationHandler.getPrimaryScale(this);
|
||||
return offsetX;
|
||||
return getScrollForPage(getRunningTaskIndex()) - mOrientationHandler.getPrimaryScroll(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return How many pixels the running task is offset on the x-axis due to the current scrollX
|
||||
* and parent scale.
|
||||
*/
|
||||
public float getScrollOffsetScaled() {
|
||||
return getScrollOffset() * mOrientationHandler.getPrimaryScale(this);
|
||||
}
|
||||
|
||||
public Consumer<MotionEvent> getEventDispatcher(float navbarRotation) {
|
||||
float degreesRotated;
|
||||
if (navbarRotation == 0) {
|
||||
degreesRotated = mOrientationState.getTouchRotationDegrees();
|
||||
degreesRotated = mOrientationState.areMultipleLayoutOrientationsDisabled() ? 0 :
|
||||
mOrientationHandler.getDegreesRotated();
|
||||
} else {
|
||||
degreesRotated = -navbarRotation;
|
||||
}
|
||||
@@ -2035,7 +2097,8 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
// PagedOrientationHandler
|
||||
return e -> {
|
||||
if (navbarRotation != 0
|
||||
&& !mOrientationState.areMultipleLayoutOrientationsDisabled()) {
|
||||
&& !mOrientationState.areMultipleLayoutOrientationsDisabled()
|
||||
&& !mOrientationState.getOrientationHandler().isLayoutNaturalToLauncher()) {
|
||||
mOrientationState.flipVertical(e);
|
||||
super.onTouchEvent(e);
|
||||
mOrientationState.flipVertical(e);
|
||||
@@ -2122,36 +2185,4 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
mActivity.clearForceInvisibleFlag(STATE_HANDLER_INVISIBILITY_FLAGS);
|
||||
}
|
||||
}
|
||||
|
||||
private void showActionsView() {
|
||||
if (mActionsView != null && getTaskViewCount() > 0) {
|
||||
mActionsView.setVisibility(VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
private void hideActionsView() {
|
||||
if (mActionsView != null) {
|
||||
mActionsView.setVisibility(GONE);
|
||||
}
|
||||
}
|
||||
|
||||
private void setActionsView() {
|
||||
if (mActionsView == null && ENABLE_OVERVIEW_ACTIONS.get()
|
||||
&& SysUINavigationMode.removeShelfFromOverview(mActivity)) {
|
||||
mActionsView = ((ViewGroup) getParent()).findViewById(R.id.overview_actions_view);
|
||||
if (mActionsView != null) {
|
||||
InsettableFrameLayout.LayoutParams layoutParams =
|
||||
new InsettableFrameLayout.LayoutParams(LayoutParams.MATCH_PARENT,
|
||||
getResources().getDimensionPixelSize(
|
||||
R.dimen.overview_actions_height));
|
||||
layoutParams.gravity = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL;
|
||||
int margin = getResources().getDimensionPixelSize(
|
||||
R.dimen.overview_actions_horizontal_margin);
|
||||
layoutParams.setMarginStart(margin);
|
||||
layoutParams.setMarginEnd(margin);
|
||||
mActionsView.setLayoutParams(layoutParams);
|
||||
showActionsView();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+179
-131
@@ -36,11 +36,9 @@ import android.graphics.RectF;
|
||||
import android.graphics.Shader;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.FloatProperty;
|
||||
import android.util.Log;
|
||||
import android.util.Property;
|
||||
import android.view.Surface;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.android.launcher3.BaseActivity;
|
||||
import com.android.launcher3.R;
|
||||
@@ -50,7 +48,7 @@ import com.android.launcher3.util.SystemUiController;
|
||||
import com.android.launcher3.util.Themes;
|
||||
import com.android.quickstep.TaskOverlayFactory;
|
||||
import com.android.quickstep.TaskOverlayFactory.TaskOverlay;
|
||||
import com.android.quickstep.util.TaskCornerRadius;
|
||||
import com.android.quickstep.views.TaskView.FullscreenDrawParams;
|
||||
import com.android.systemui.plugins.OverviewScreenshotActions;
|
||||
import com.android.systemui.plugins.PluginListener;
|
||||
import com.android.systemui.shared.recents.model.Task;
|
||||
@@ -66,6 +64,8 @@ public class TaskThumbnailView extends View implements PluginListener<OverviewSc
|
||||
private static final ColorMatrix SATURATION_COLOR_MATRIX = new ColorMatrix();
|
||||
private static final RectF EMPTY_RECT_F = new RectF();
|
||||
|
||||
private static final FullscreenDrawParams TEMP_PARAMS = new FullscreenDrawParams();
|
||||
|
||||
public static final Property<TaskThumbnailView, Float> DIM_ALPHA =
|
||||
new FloatProperty<TaskThumbnailView>("dimAlpha") {
|
||||
@Override
|
||||
@@ -87,12 +87,11 @@ public class TaskThumbnailView extends View implements PluginListener<OverviewSc
|
||||
private final Paint mClearPaint = new Paint();
|
||||
private final Paint mDimmingPaintAfterClearing = new Paint();
|
||||
|
||||
private final Matrix mMatrix = new Matrix();
|
||||
|
||||
private float mClipBottom = -1;
|
||||
// Contains the portion of the thumbnail that is clipped when fullscreen progress = 0.
|
||||
private RectF mClippedInsets = new RectF();
|
||||
private TaskView.FullscreenDrawParams mFullscreenParams;
|
||||
private final Rect mPreviewRect = new Rect();
|
||||
private final PreviewPositionHelper mPreviewPositionHelper;
|
||||
// Initialize with dummy value. It is overridden later by TaskView
|
||||
private TaskView.FullscreenDrawParams mFullscreenParams = TEMP_PARAMS;
|
||||
|
||||
private Task mTask;
|
||||
private ThumbnailData mThumbnailData;
|
||||
@@ -103,7 +102,6 @@ public class TaskThumbnailView extends View implements PluginListener<OverviewSc
|
||||
private float mSaturation = 1f;
|
||||
|
||||
private boolean mOverlayEnabled;
|
||||
private boolean mIsOrientationChanged;
|
||||
private OverviewScreenshotActions mOverviewScreenshotActionsPlugin;
|
||||
|
||||
public TaskThumbnailView(Context context) {
|
||||
@@ -123,7 +121,7 @@ public class TaskThumbnailView extends View implements PluginListener<OverviewSc
|
||||
mDimmingPaintAfterClearing.setColor(Color.BLACK);
|
||||
mActivity = BaseActivity.fromContext(context);
|
||||
mIsDarkTextTheme = Themes.getAttrBoolean(mActivity, R.attr.isWorkspaceDarkText);
|
||||
mFullscreenParams = new TaskView.FullscreenDrawParams(TaskCornerRadius.get(context));
|
||||
mPreviewPositionHelper = new PreviewPositionHelper(context);
|
||||
}
|
||||
|
||||
public void bind(Task task) {
|
||||
@@ -172,8 +170,7 @@ public class TaskThumbnailView extends View implements PluginListener<OverviewSc
|
||||
mOverlay.reset();
|
||||
}
|
||||
if (mOverviewScreenshotActionsPlugin != null) {
|
||||
mOverviewScreenshotActionsPlugin
|
||||
.setupActions((ViewGroup) getTaskView(), getThumbnail(), mActivity);
|
||||
mOverviewScreenshotActionsPlugin.setupActions(getTaskView(), getThumbnail(), mActivity);
|
||||
}
|
||||
updateThumbnailPaintFilter();
|
||||
}
|
||||
@@ -270,9 +267,8 @@ public class TaskThumbnailView extends View implements PluginListener<OverviewSc
|
||||
PluginManagerWrapper.INSTANCE.get(getContext()).removePluginListener(this);
|
||||
}
|
||||
|
||||
public RectF getInsetsToDrawInFullscreen(boolean isMultiWindowMode) {
|
||||
// Don't show insets in multi window mode.
|
||||
return isMultiWindowMode ? EMPTY_RECT_F : mClippedInsets;
|
||||
public PreviewPositionHelper getPreviewPositionHelper() {
|
||||
return mPreviewPositionHelper;
|
||||
}
|
||||
|
||||
public void setFullscreenParams(TaskView.FullscreenDrawParams fullscreenParams) {
|
||||
@@ -294,16 +290,17 @@ public class TaskThumbnailView extends View implements PluginListener<OverviewSc
|
||||
// Draw the background in all cases, except when the thumbnail data is opaque
|
||||
final boolean drawBackgroundOnly = mTask == null || mTask.isLocked || mBitmapShader == null
|
||||
|| mThumbnailData == null;
|
||||
if (drawBackgroundOnly || mClipBottom > 0 || mThumbnailData.isTranslucent) {
|
||||
if (drawBackgroundOnly || mPreviewPositionHelper.mClipBottom > 0
|
||||
|| mThumbnailData.isTranslucent) {
|
||||
canvas.drawRoundRect(x, y, width, height, cornerRadius, cornerRadius, mBackgroundPaint);
|
||||
if (drawBackgroundOnly) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (mClipBottom > 0) {
|
||||
if (mPreviewPositionHelper.mClipBottom > 0) {
|
||||
canvas.save();
|
||||
canvas.clipRect(x, y, width, mClipBottom);
|
||||
canvas.clipRect(x, y, width, mPreviewPositionHelper.mClipBottom);
|
||||
canvas.drawRoundRect(x, y, width, height, cornerRadius, cornerRadius, mPaint);
|
||||
canvas.restore();
|
||||
} else {
|
||||
@@ -324,8 +321,9 @@ public class TaskThumbnailView extends View implements PluginListener<OverviewSc
|
||||
|
||||
private void updateOverlay() {
|
||||
// The overlay doesn't really work when the screenshot is rotated, so don't add it.
|
||||
if (mOverlayEnabled && !mIsOrientationChanged && mBitmapShader != null && mThumbnailData != null) {
|
||||
mOverlay.initOverlay(mTask, mThumbnailData, mMatrix);
|
||||
if (mOverlayEnabled && !mPreviewPositionHelper.mIsOrientationChanged
|
||||
&& mBitmapShader != null && mThumbnailData != null) {
|
||||
mOverlay.initOverlay(mTask, mThumbnailData, mPreviewPositionHelper.mMatrix);
|
||||
} else {
|
||||
mOverlay.reset();
|
||||
}
|
||||
@@ -346,76 +344,17 @@ public class TaskThumbnailView extends View implements PluginListener<OverviewSc
|
||||
}
|
||||
|
||||
private void updateThumbnailMatrix() {
|
||||
boolean isRotated = false;
|
||||
boolean isOrientationDifferent = false;
|
||||
mClipBottom = -1;
|
||||
mPreviewPositionHelper.mClipBottom = -1;
|
||||
mPreviewPositionHelper.mIsOrientationChanged = false;
|
||||
if (mBitmapShader != null && mThumbnailData != null) {
|
||||
float scale = mThumbnailData.scale;
|
||||
Rect thumbnailInsets = mThumbnailData.insets;
|
||||
final float thumbnailWidth = mThumbnailData.thumbnail.getWidth() -
|
||||
(thumbnailInsets.left + thumbnailInsets.right) * scale;
|
||||
final float thumbnailHeight = mThumbnailData.thumbnail.getHeight() -
|
||||
(thumbnailInsets.top + thumbnailInsets.bottom) * scale;
|
||||
mPreviewRect.set(0, 0, mThumbnailData.thumbnail.getWidth(),
|
||||
mThumbnailData.thumbnail.getHeight());
|
||||
mPreviewPositionHelper.updateThumbnailMatrix(mPreviewRect, mThumbnailData,
|
||||
mActivity.isInMultiWindowMode(), getMeasuredWidth(), getMeasuredHeight());
|
||||
|
||||
final float thumbnailScale;
|
||||
int thumbnailRotation = mThumbnailData.rotation;
|
||||
int currentRotation = ConfigurationCompat.getWindowConfigurationRotation(
|
||||
getResources().getConfiguration());
|
||||
int deltaRotate = getRotationDelta(currentRotation, thumbnailRotation);
|
||||
// Landscape vs portrait change
|
||||
boolean windowingModeSupportsRotation = !mActivity.isInMultiWindowMode()
|
||||
&& mThumbnailData.windowingMode == WINDOWING_MODE_FULLSCREEN;
|
||||
isOrientationDifferent = isOrientationChange(deltaRotate)
|
||||
&& windowingModeSupportsRotation;
|
||||
if (getMeasuredWidth() == 0) {
|
||||
// If we haven't measured , skip the thumbnail drawing and only draw the background
|
||||
// color
|
||||
thumbnailScale = 0f;
|
||||
} else {
|
||||
// Rotate the screenshot if not in multi-window mode
|
||||
isRotated = deltaRotate > 0 && windowingModeSupportsRotation;
|
||||
// Scale the screenshot to always fit the width of the card.
|
||||
|
||||
thumbnailScale = isOrientationDifferent
|
||||
? getMeasuredWidth() / thumbnailHeight
|
||||
: getMeasuredWidth() / thumbnailWidth;
|
||||
}
|
||||
|
||||
if (!isRotated) {
|
||||
// No Rotation
|
||||
mClippedInsets.offsetTo(thumbnailInsets.left * scale,
|
||||
thumbnailInsets.top * scale);
|
||||
mMatrix.setTranslate(-mClippedInsets.left, -mClippedInsets.top);
|
||||
} else {
|
||||
setThumbnailRotation(deltaRotate, thumbnailInsets, scale);
|
||||
}
|
||||
|
||||
final float widthWithInsets;
|
||||
final float heightWithInsets;
|
||||
if (isOrientationDifferent) {
|
||||
widthWithInsets = mThumbnailData.thumbnail.getHeight() * thumbnailScale;
|
||||
heightWithInsets = mThumbnailData.thumbnail.getWidth() * thumbnailScale;
|
||||
} else {
|
||||
widthWithInsets = mThumbnailData.thumbnail.getWidth() * thumbnailScale;
|
||||
heightWithInsets = mThumbnailData.thumbnail.getHeight() * thumbnailScale;
|
||||
}
|
||||
mClippedInsets.left *= thumbnailScale;
|
||||
mClippedInsets.top *= thumbnailScale;
|
||||
mClippedInsets.right = widthWithInsets - mClippedInsets.left - getMeasuredWidth();
|
||||
mClippedInsets.bottom = heightWithInsets - mClippedInsets.top - getMeasuredHeight();
|
||||
|
||||
mMatrix.postScale(thumbnailScale, thumbnailScale);
|
||||
mBitmapShader.setLocalMatrix(mMatrix);
|
||||
|
||||
float bitmapHeight = Math.max((isOrientationDifferent ? thumbnailWidth : thumbnailHeight)
|
||||
* thumbnailScale, 0);
|
||||
if (Math.round(bitmapHeight) < getMeasuredHeight()) {
|
||||
mClipBottom = bitmapHeight;
|
||||
}
|
||||
mBitmapShader.setLocalMatrix(mPreviewPositionHelper.mMatrix);
|
||||
mPaint.setShader(mBitmapShader);
|
||||
}
|
||||
|
||||
mIsOrientationChanged = isOrientationDifferent;
|
||||
invalidate();
|
||||
|
||||
// Update can be called from {@link #onSizeChanged} during layout, post handling of overlay
|
||||
@@ -423,51 +362,6 @@ public class TaskThumbnailView extends View implements PluginListener<OverviewSc
|
||||
post(this::updateOverlay);
|
||||
}
|
||||
|
||||
private int getRotationDelta(int oldRotation, int newRotation) {
|
||||
int delta = newRotation - oldRotation;
|
||||
if (delta < 0) delta += 4;
|
||||
return delta;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param deltaRotation the number of 90 degree turns from the current orientation
|
||||
* @return {@code true} if the change in rotation results in a shift from landscape to portrait
|
||||
* or vice versa, {@code false} otherwise
|
||||
*/
|
||||
private boolean isOrientationChange(int deltaRotation) {
|
||||
return deltaRotation == Surface.ROTATION_90 || deltaRotation == Surface.ROTATION_270;
|
||||
}
|
||||
|
||||
private void setThumbnailRotation(int deltaRotate, Rect thumbnailInsets, float scale) {
|
||||
int newLeftInset = 0;
|
||||
int newTopInset = 0;
|
||||
int translateX = 0;
|
||||
int translateY = 0;
|
||||
|
||||
mMatrix.setRotate(90 * deltaRotate);
|
||||
switch (deltaRotate) { /* Counter-clockwise */
|
||||
case Surface.ROTATION_90:
|
||||
newLeftInset = thumbnailInsets.bottom;
|
||||
newTopInset = thumbnailInsets.left;
|
||||
translateX = mThumbnailData.thumbnail.getHeight();
|
||||
break;
|
||||
case Surface.ROTATION_270:
|
||||
newLeftInset = thumbnailInsets.top;
|
||||
newTopInset = thumbnailInsets.right;
|
||||
translateY = mThumbnailData.thumbnail.getWidth();
|
||||
break;
|
||||
case Surface.ROTATION_180:
|
||||
newLeftInset = -thumbnailInsets.top;
|
||||
newTopInset = -thumbnailInsets.left;
|
||||
translateX = mThumbnailData.thumbnail.getWidth();
|
||||
translateY = mThumbnailData.thumbnail.getHeight();
|
||||
break;
|
||||
}
|
||||
mClippedInsets.offsetTo(newLeftInset * scale, newTopInset * scale);
|
||||
mMatrix.postTranslate(translateX - mClippedInsets.left,
|
||||
translateY - mClippedInsets.top);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
|
||||
super.onSizeChanged(w, h, oldw, oldh);
|
||||
@@ -511,4 +405,158 @@ public class TaskThumbnailView extends View implements PluginListener<OverviewSc
|
||||
}
|
||||
return mThumbnailData.thumbnail;
|
||||
}
|
||||
|
||||
/**
|
||||
* Utility class to position the thumbnail in the TaskView
|
||||
*/
|
||||
public static class PreviewPositionHelper {
|
||||
|
||||
// Contains the portion of the thumbnail that is clipped when fullscreen progress = 0.
|
||||
private final RectF mClippedInsets = new RectF();
|
||||
private final Matrix mMatrix = new Matrix();
|
||||
private float mClipBottom = -1;
|
||||
private boolean mIsOrientationChanged;
|
||||
|
||||
private final Context mContext;
|
||||
|
||||
public PreviewPositionHelper(Context context) {
|
||||
mContext = context;
|
||||
}
|
||||
|
||||
public int getCurrentRotation() {
|
||||
return ConfigurationCompat.getWindowConfigurationRotation(
|
||||
mContext.getResources().getConfiguration());
|
||||
}
|
||||
|
||||
public Matrix getMatrix() {
|
||||
return mMatrix;
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the matrix based on the provided parameters
|
||||
*/
|
||||
public void updateThumbnailMatrix(Rect thumbnailPosition, ThumbnailData thumbnailData,
|
||||
boolean isInMultiWindowMode, int canvasWidth, int canvasHeight) {
|
||||
boolean isRotated = false;
|
||||
boolean isOrientationDifferent;
|
||||
mClipBottom = -1;
|
||||
|
||||
float scale = thumbnailData.scale;
|
||||
Rect thumbnailInsets = thumbnailData.insets;
|
||||
final float thumbnailWidth = thumbnailPosition.width()
|
||||
- (thumbnailInsets.left + thumbnailInsets.right) * scale;
|
||||
final float thumbnailHeight = thumbnailPosition.height()
|
||||
- (thumbnailInsets.top + thumbnailInsets.bottom) * scale;
|
||||
|
||||
final float thumbnailScale;
|
||||
int thumbnailRotation = thumbnailData.rotation;
|
||||
int currentRotation = getCurrentRotation();
|
||||
int deltaRotate = getRotationDelta(currentRotation, thumbnailRotation);
|
||||
|
||||
// Landscape vs portrait change
|
||||
boolean windowingModeSupportsRotation = !isInMultiWindowMode
|
||||
&& thumbnailData.windowingMode == WINDOWING_MODE_FULLSCREEN;
|
||||
isOrientationDifferent = isOrientationChange(deltaRotate)
|
||||
&& windowingModeSupportsRotation;
|
||||
if (canvasWidth == 0) {
|
||||
// If we haven't measured , skip the thumbnail drawing and only draw the background
|
||||
// color
|
||||
thumbnailScale = 0f;
|
||||
} else {
|
||||
// Rotate the screenshot if not in multi-window mode
|
||||
isRotated = deltaRotate > 0 && windowingModeSupportsRotation;
|
||||
// Scale the screenshot to always fit the width of the card.
|
||||
thumbnailScale = isOrientationDifferent
|
||||
? canvasWidth / thumbnailHeight
|
||||
: canvasWidth / thumbnailWidth;
|
||||
}
|
||||
|
||||
if (!isRotated) {
|
||||
// No Rotation
|
||||
mClippedInsets.offsetTo(thumbnailInsets.left * scale,
|
||||
thumbnailInsets.top * scale);
|
||||
mMatrix.setTranslate(-mClippedInsets.left, -mClippedInsets.top);
|
||||
} else {
|
||||
setThumbnailRotation(deltaRotate, thumbnailInsets, scale, thumbnailPosition);
|
||||
}
|
||||
mMatrix.postTranslate(-thumbnailPosition.left, -thumbnailPosition.top);
|
||||
|
||||
final float widthWithInsets;
|
||||
final float heightWithInsets;
|
||||
if (isOrientationDifferent) {
|
||||
widthWithInsets = thumbnailPosition.height() * thumbnailScale;
|
||||
heightWithInsets = thumbnailPosition.width() * thumbnailScale;
|
||||
} else {
|
||||
widthWithInsets = thumbnailPosition.width() * thumbnailScale;
|
||||
heightWithInsets = thumbnailPosition.height() * thumbnailScale;
|
||||
}
|
||||
mClippedInsets.left *= thumbnailScale;
|
||||
mClippedInsets.top *= thumbnailScale;
|
||||
mClippedInsets.right = widthWithInsets - mClippedInsets.left - canvasWidth;
|
||||
mClippedInsets.bottom = heightWithInsets - mClippedInsets.top - canvasHeight;
|
||||
|
||||
mMatrix.postScale(thumbnailScale, thumbnailScale);
|
||||
|
||||
float bitmapHeight = Math.max(0,
|
||||
(isOrientationDifferent ? thumbnailWidth : thumbnailHeight) * thumbnailScale);
|
||||
if (Math.round(bitmapHeight) < canvasHeight) {
|
||||
mClipBottom = bitmapHeight;
|
||||
}
|
||||
mIsOrientationChanged = isOrientationDifferent;
|
||||
}
|
||||
|
||||
private int getRotationDelta(int oldRotation, int newRotation) {
|
||||
int delta = newRotation - oldRotation;
|
||||
if (delta < 0) delta += 4;
|
||||
return delta;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param deltaRotation the number of 90 degree turns from the current orientation
|
||||
* @return {@code true} if the change in rotation results in a shift from landscape to
|
||||
* portrait or vice versa, {@code false} otherwise
|
||||
*/
|
||||
private boolean isOrientationChange(int deltaRotation) {
|
||||
return deltaRotation == Surface.ROTATION_90 || deltaRotation == Surface.ROTATION_270;
|
||||
}
|
||||
|
||||
private void setThumbnailRotation(int deltaRotate, Rect thumbnailInsets, float scale,
|
||||
Rect thumbnailPosition) {
|
||||
int newLeftInset = 0;
|
||||
int newTopInset = 0;
|
||||
int translateX = 0;
|
||||
int translateY = 0;
|
||||
|
||||
mMatrix.setRotate(90 * deltaRotate);
|
||||
switch (deltaRotate) { /* Counter-clockwise */
|
||||
case Surface.ROTATION_90:
|
||||
newLeftInset = thumbnailInsets.bottom;
|
||||
newTopInset = thumbnailInsets.left;
|
||||
translateX = thumbnailPosition.height();
|
||||
break;
|
||||
case Surface.ROTATION_270:
|
||||
newLeftInset = thumbnailInsets.top;
|
||||
newTopInset = thumbnailInsets.right;
|
||||
translateY = thumbnailPosition.width();
|
||||
break;
|
||||
case Surface.ROTATION_180:
|
||||
newLeftInset = -thumbnailInsets.top;
|
||||
newTopInset = -thumbnailInsets.left;
|
||||
translateX = thumbnailPosition.width();
|
||||
translateY = thumbnailPosition.height();
|
||||
break;
|
||||
}
|
||||
mClippedInsets.offsetTo(newLeftInset * scale, newTopInset * scale);
|
||||
mMatrix.postTranslate(translateX - mClippedInsets.left,
|
||||
translateY - mClippedInsets.top);
|
||||
}
|
||||
|
||||
/**
|
||||
* Insets to used for clipping the thumbnail (in case it is drawing outside its own space)
|
||||
*/
|
||||
public RectF getInsetsToDrawInFullscreen(boolean isMultiWindowMode) {
|
||||
// Don't show insets in multi window mode.
|
||||
return isMultiWindowMode ? EMPTY_RECT_F : mClippedInsets;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,6 +56,7 @@ import android.widget.FrameLayout;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.android.launcher3.BaseDraggingActivity;
|
||||
import com.android.launcher3.DeviceProfile;
|
||||
import com.android.launcher3.R;
|
||||
import com.android.launcher3.Utilities;
|
||||
import com.android.launcher3.anim.AnimatorPlaybackController;
|
||||
@@ -77,11 +78,11 @@ import com.android.quickstep.TaskIconCache;
|
||||
import com.android.quickstep.TaskOverlayFactory;
|
||||
import com.android.quickstep.TaskThumbnailCache;
|
||||
import com.android.quickstep.TaskUtils;
|
||||
import com.android.quickstep.util.LayoutUtils;
|
||||
import com.android.quickstep.util.RecentsOrientedState;
|
||||
import com.android.quickstep.util.TaskCornerRadius;
|
||||
import com.android.quickstep.views.RecentsView.PageCallbacks;
|
||||
import com.android.quickstep.views.RecentsView.ScrollState;
|
||||
import com.android.quickstep.views.TaskThumbnailView.PreviewPositionHelper;
|
||||
import com.android.systemui.shared.recents.model.Task;
|
||||
import com.android.systemui.shared.system.ActivityManagerWrapper;
|
||||
import com.android.systemui.shared.system.ActivityOptionsCompat;
|
||||
@@ -157,8 +158,6 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
|
||||
private float mCurveScale;
|
||||
private float mFullscreenProgress;
|
||||
private final FullscreenDrawParams mCurrentFullscreenParams;
|
||||
private final float mCornerRadius;
|
||||
private final float mWindowCornerRadius;
|
||||
private final BaseDraggingActivity mActivity;
|
||||
|
||||
private ObjectAnimator mIconAndDimAnimator;
|
||||
@@ -211,9 +210,8 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
|
||||
TaskUtils.getLaunchComponentKeyForTask(getTask().key));
|
||||
mActivity.getStatsLogManager().log(TASK_LAUNCH_TAP, buildProto());
|
||||
});
|
||||
mCornerRadius = TaskCornerRadius.get(context);
|
||||
mWindowCornerRadius = QuickStepContract.getWindowCornerRadius(context.getResources());
|
||||
mCurrentFullscreenParams = new FullscreenDrawParams(mCornerRadius);
|
||||
|
||||
mCurrentFullscreenParams = new FullscreenDrawParams(context);
|
||||
mDigitalWellBeingToast = new DigitalWellBeingToast(mActivity, this);
|
||||
|
||||
mOutlineProvider = new TaskOutlineProvider(getContext(), mCurrentFullscreenParams);
|
||||
@@ -236,11 +234,6 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
|
||||
super.onFinishInflate();
|
||||
mSnapshotView = findViewById(R.id.snapshot);
|
||||
mIconView = findViewById(R.id.icon);
|
||||
final Context context = getContext();
|
||||
|
||||
TaskView.LayoutParams thumbnailParams = (LayoutParams) mSnapshotView.getLayoutParams();
|
||||
thumbnailParams.bottomMargin = LayoutUtils.thumbnailBottomMargin(context);
|
||||
mSnapshotView.setLayoutParams(thumbnailParams);
|
||||
}
|
||||
|
||||
public boolean isTaskOverlayModal() {
|
||||
@@ -473,8 +466,6 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
|
||||
int iconRotation = orientationState.getTouchRotation();
|
||||
PagedOrientationHandler orientationHandler = orientationState.getOrientationHandler();
|
||||
boolean isRtl = orientationHandler.getRecentsRtlSetting(getResources());
|
||||
LayoutParams snapshotParams = (LayoutParams) mSnapshotView.getLayoutParams();
|
||||
snapshotParams.bottomMargin = LayoutUtils.thumbnailBottomMargin(getContext());
|
||||
int thumbnailPadding = (int) getResources().getDimension(R.dimen.task_thumbnail_top_margin);
|
||||
LayoutParams iconParams = (LayoutParams) mIconView.getLayoutParams();
|
||||
int rotation = orientationState.getTouchRotationDegrees();
|
||||
@@ -501,7 +492,6 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
|
||||
iconParams.bottomMargin = 0;
|
||||
break;
|
||||
}
|
||||
mSnapshotView.setLayoutParams(snapshotParams);
|
||||
mIconView.setLayoutParams(iconParams);
|
||||
mIconView.setRotation(rotation);
|
||||
}
|
||||
@@ -699,21 +689,16 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
|
||||
return 1 - curveInterpolation * EDGE_SCALE_DOWN_FACTOR;
|
||||
}
|
||||
|
||||
public void setCurveScale(float curveScale) {
|
||||
private void setCurveScale(float curveScale) {
|
||||
mCurveScale = curveScale;
|
||||
onScaleChanged();
|
||||
setScaleX(mCurveScale);
|
||||
setScaleY(mCurveScale);
|
||||
}
|
||||
|
||||
public float getCurveScale() {
|
||||
return mCurveScale;
|
||||
}
|
||||
|
||||
private void onScaleChanged() {
|
||||
float scale = mCurveScale;
|
||||
setScaleX(scale);
|
||||
setScaleY(scale);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasOverlappingRendering() {
|
||||
// TODO: Clip-out the icon region from the thumbnail, since they are overlapping.
|
||||
@@ -723,13 +708,11 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
|
||||
private static final class TaskOutlineProvider extends ViewOutlineProvider {
|
||||
|
||||
private final int mMarginTop;
|
||||
private final int mMarginBottom;
|
||||
private FullscreenDrawParams mFullscreenParams;
|
||||
|
||||
TaskOutlineProvider(Context context, FullscreenDrawParams fullscreenParams) {
|
||||
mMarginTop = context.getResources().getDimensionPixelSize(
|
||||
R.dimen.task_thumbnail_top_margin);
|
||||
mMarginBottom = LayoutUtils.thumbnailBottomMargin(context);
|
||||
mFullscreenParams = fullscreenParams;
|
||||
}
|
||||
|
||||
@@ -744,7 +727,7 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
|
||||
outline.setRoundRect(0,
|
||||
(int) (mMarginTop * scale),
|
||||
(int) ((insets.left + view.getWidth() + insets.right) * scale),
|
||||
(int) ((insets.top + view.getHeight() + insets.bottom - mMarginBottom) * scale),
|
||||
(int) ((insets.top + view.getHeight() + insets.bottom) * scale),
|
||||
mFullscreenParams.mCurrentDrawnCornerRadius);
|
||||
}
|
||||
}
|
||||
@@ -917,23 +900,11 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
|
||||
setClipToPadding(!isFullscreen);
|
||||
|
||||
TaskThumbnailView thumbnail = getThumbnail();
|
||||
boolean isMultiWindowMode = mActivity.getDeviceProfile().isMultiWindowMode;
|
||||
RectF insets = thumbnail.getInsetsToDrawInFullscreen(isMultiWindowMode);
|
||||
float currentInsetsLeft = insets.left * mFullscreenProgress;
|
||||
float currentInsetsRight = insets.right * mFullscreenProgress;
|
||||
mCurrentFullscreenParams.setInsets(currentInsetsLeft,
|
||||
insets.top * mFullscreenProgress,
|
||||
currentInsetsRight,
|
||||
insets.bottom * mFullscreenProgress);
|
||||
float fullscreenCornerRadius = isMultiWindowMode ? 0 : mWindowCornerRadius;
|
||||
mCurrentFullscreenParams.setCornerRadius(Utilities.mapRange(mFullscreenProgress,
|
||||
mCornerRadius, fullscreenCornerRadius) / getRecentsView().getScaleX());
|
||||
// We scaled the thumbnail to fit the content (excluding insets) within task view width.
|
||||
// Now that we are drawing left/right insets again, we need to scale down to fit them.
|
||||
if (getWidth() > 0) {
|
||||
mCurrentFullscreenParams.setScale(getWidth()
|
||||
/ (getWidth() + currentInsetsLeft + currentInsetsRight));
|
||||
}
|
||||
mCurrentFullscreenParams.setProgress(
|
||||
mFullscreenProgress,
|
||||
getRecentsView().getScaleX(),
|
||||
getWidth(), mActivity.getDeviceProfile(),
|
||||
thumbnail.getPreviewPositionHelper());
|
||||
|
||||
if (!getRecentsView().isTaskIconScaledDown(this)) {
|
||||
// Some of the items in here are dependent on the current fullscreen params, but don't
|
||||
@@ -971,26 +942,51 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
|
||||
/**
|
||||
* We update and subsequently draw these in {@link #setFullscreenProgress(float)}.
|
||||
*/
|
||||
static class FullscreenDrawParams {
|
||||
RectF mCurrentDrawnInsets = new RectF();
|
||||
float mCurrentDrawnCornerRadius;
|
||||
public static class FullscreenDrawParams {
|
||||
|
||||
private final float mCornerRadius;
|
||||
private final float mWindowCornerRadius;
|
||||
|
||||
public RectF mCurrentDrawnInsets = new RectF();
|
||||
public float mCurrentDrawnCornerRadius;
|
||||
/** The current scale we apply to the thumbnail to adjust for new left/right insets. */
|
||||
float mScale = 1;
|
||||
public float mScale = 1;
|
||||
|
||||
public FullscreenDrawParams(float cornerRadius) {
|
||||
setCornerRadius(cornerRadius);
|
||||
public FullscreenDrawParams(Context context) {
|
||||
mCornerRadius = TaskCornerRadius.get(context);
|
||||
mWindowCornerRadius = QuickStepContract.getWindowCornerRadius(context.getResources());
|
||||
|
||||
mCurrentDrawnCornerRadius = mCornerRadius;
|
||||
}
|
||||
|
||||
public void setInsets(float left, float top, float right, float bottom) {
|
||||
mCurrentDrawnInsets.set(left, top, right, bottom);
|
||||
public FullscreenDrawParams() {
|
||||
mCurrentDrawnCornerRadius = mWindowCornerRadius = mCornerRadius = 0;
|
||||
}
|
||||
|
||||
public void setCornerRadius(float cornerRadius) {
|
||||
mCurrentDrawnCornerRadius = cornerRadius;
|
||||
/**
|
||||
* Sets the progress in range [0, 1]
|
||||
*/
|
||||
public void setProgress(float fullscreenProgress, float parentScale, int previewWidth,
|
||||
DeviceProfile dp, PreviewPositionHelper pph) {
|
||||
boolean isMultiWindowMode = dp.isMultiWindowMode;
|
||||
RectF insets = pph.getInsetsToDrawInFullscreen(isMultiWindowMode);
|
||||
|
||||
float currentInsetsLeft = insets.left * fullscreenProgress;
|
||||
float currentInsetsRight = insets.right * fullscreenProgress;
|
||||
mCurrentDrawnInsets.set(currentInsetsLeft, insets.top * fullscreenProgress,
|
||||
currentInsetsRight, insets.bottom * fullscreenProgress);
|
||||
float fullscreenCornerRadius = isMultiWindowMode ? 0 : mWindowCornerRadius;
|
||||
|
||||
mCurrentDrawnCornerRadius =
|
||||
Utilities.mapRange(fullscreenProgress, mCornerRadius, fullscreenCornerRadius)
|
||||
/ parentScale;
|
||||
|
||||
// We scaled the thumbnail to fit the content (excluding insets) within task view width.
|
||||
// Now that we are drawing left/right insets again, we need to scale down to fit them.
|
||||
if (previewWidth > 0) {
|
||||
mScale = previewWidth / (previewWidth + currentInsetsLeft + currentInsetsRight);
|
||||
}
|
||||
}
|
||||
|
||||
public void setScale(float scale) {
|
||||
mScale = scale;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -16,5 +16,5 @@
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<corners android:radius="?android:attr/dialogCornerRadius"/>
|
||||
<solid android:color="@color/back_gesture_tutorial_primary_color"/>
|
||||
<solid android:color="@color/gesture_tutorial_primary_color"/>
|
||||
</shape>
|
||||
+1
-1
@@ -16,5 +16,5 @@
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<corners android:radius="@dimen/default_dialog_corner_radius"/>
|
||||
<solid android:color="@color/back_gesture_tutorial_primary_color"/>
|
||||
<solid android:color="@color/gesture_tutorial_primary_color"/>
|
||||
</shape>
|
||||
@@ -0,0 +1,46 @@
|
||||
<!--
|
||||
Copyright (C) 2020 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<!-- Dummy translating rectangle until we have a proper animation. -->
|
||||
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt" >
|
||||
<aapt:attr name="android:drawable">
|
||||
<vector
|
||||
android:height="64dp"
|
||||
android:width="64dp"
|
||||
android:viewportHeight="600"
|
||||
android:viewportWidth="600" >
|
||||
<group
|
||||
android:name="translationGroup"
|
||||
android:pivotX="300.0"
|
||||
android:pivotY="300.0"
|
||||
android:rotation="180.0" >
|
||||
<path
|
||||
android:fillColor="#eeeeee"
|
||||
android:pathData="M300,70 l 0,-70 70,0 0,140 -70,0 z" />
|
||||
</group>
|
||||
</vector>
|
||||
</aapt:attr>
|
||||
|
||||
<target android:name="translationGroup">
|
||||
<aapt:attr name="android:animation">
|
||||
<objectAnimator
|
||||
android:duration="3000"
|
||||
android:propertyName="translateY"
|
||||
android:valueFrom="0"
|
||||
android:valueTo="-100" />
|
||||
</aapt:attr>
|
||||
</target>
|
||||
</animated-vector>
|
||||
@@ -1,119 +0,0 @@
|
||||
<!--
|
||||
Copyright (C) 2020 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/back_gesture_tutorial_background_color">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/back_gesture_tutorial_fragment_hand_coaching"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="centerCrop"/>
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/back_gesture_tutorial_fragment_close_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="18dp"
|
||||
android:layout_marginTop="30dp"
|
||||
android:layout_marginStart="4dp"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:background="@android:color/transparent"
|
||||
android:accessibilityTraversalAfter="@id/back_gesture_tutorial_fragment_titles_container"
|
||||
android:contentDescription="@string/back_gesture_tutorial_close_button_content_description"
|
||||
android:src="@drawable/back_gesture_tutorial_close_button"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginTop="70dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/back_gesture_tutorial_fragment_titles_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:focusable="true">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/back_gesture_tutorial_fragment_title_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginStart="@dimen/back_gesture_tutorial_title_margin_start_end"
|
||||
android:layout_marginEnd="@dimen/back_gesture_tutorial_title_margin_start_end"
|
||||
style="@style/TextAppearance.BackGestureTutorial.Title"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/back_gesture_tutorial_fragment_subtitle_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginStart="@dimen/back_gesture_tutorial_subtitle_margin_start_end"
|
||||
android:layout_marginEnd="@dimen/back_gesture_tutorial_subtitle_margin_start_end"
|
||||
style="@style/TextAppearance.BackGestureTutorial.Subtitle"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<Space
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginTop="48dp"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:gravity="center_horizontal"
|
||||
android:orientation="vertical"/>
|
||||
|
||||
<!-- android:stateListAnimator="@null" removes shadow and normal on click behavior (increase
|
||||
of elevation and shadow) which is replaced by ripple effect in android:foreground -->
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="46dp"
|
||||
android:layout_marginBottom="48dp"
|
||||
android:layout_gravity="center_horizontal">
|
||||
|
||||
<Button
|
||||
android:id="@+id/back_gesture_tutorial_fragment_action_button"
|
||||
android:layout_width="142dp"
|
||||
android:layout_height="49dp"
|
||||
android:layout_marginEnd="@dimen/back_gesture_tutorial_button_margin_start_end"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:stateListAnimator="@null"
|
||||
android:background="@drawable/back_gesture_tutorial_action_button_background"
|
||||
android:foreground="?android:attr/selectableItemBackgroundBorderless"
|
||||
style="@style/TextAppearance.BackGestureTutorial.ButtonLabel"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/back_gesture_tutorial_fragment_action_text_button"
|
||||
android:layout_width="142dp"
|
||||
android:layout_height="49dp"
|
||||
android:layout_marginStart="@dimen/back_gesture_tutorial_button_margin_start_end"
|
||||
android:layout_alignParentStart="true"
|
||||
android:stateListAnimator="@null"
|
||||
android:background="@null"
|
||||
android:foreground="?android:attr/selectableItemBackgroundBorderless"
|
||||
style="@style/TextAppearance.BackGestureTutorial.TextButtonLabel"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|
||||
+1
-1
@@ -14,6 +14,6 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/back_gesture_tutorial_fragment_container"
|
||||
android:id="@+id/gesture_tutorial_fragment_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"/>
|
||||
@@ -0,0 +1,96 @@
|
||||
<!--
|
||||
Copyright (C) 2020 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/gesture_tutorial_background_color">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/gesture_tutorial_fragment_hand_coaching"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="centerCrop"/>
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/gesture_tutorial_fragment_close_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="18dp"
|
||||
android:layout_marginTop="30dp"
|
||||
android:layout_marginStart="4dp"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:background="@android:color/transparent"
|
||||
android:accessibilityTraversalAfter="@id/gesture_tutorial_fragment_titles_container"
|
||||
android:contentDescription="@string/gesture_tutorial_close_button_content_description"
|
||||
android:src="@drawable/gesture_tutorial_close_button"/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/gesture_tutorial_fragment_titles_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="70dp"
|
||||
android:layout_alignParentTop="true"
|
||||
android:focusable="true"
|
||||
android:gravity="center_horizontal"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/gesture_tutorial_fragment_title_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/gesture_tutorial_title_margin_start_end"
|
||||
android:layout_marginEnd="@dimen/gesture_tutorial_title_margin_start_end"
|
||||
style="@style/TextAppearance.GestureTutorial.Title"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/gesture_tutorial_fragment_subtitle_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginStart="@dimen/gesture_tutorial_subtitle_margin_start_end"
|
||||
android:layout_marginEnd="@dimen/gesture_tutorial_subtitle_margin_start_end"
|
||||
style="@style/TextAppearance.GestureTutorial.Subtitle"/>
|
||||
</LinearLayout>
|
||||
|
||||
<!-- android:stateListAnimator="@null" removes shadow and normal on click behavior (increase
|
||||
of elevation and shadow) which is replaced by ripple effect in android:foreground -->
|
||||
<Button
|
||||
android:id="@+id/gesture_tutorial_fragment_action_button"
|
||||
android:layout_width="142dp"
|
||||
android:layout_height="49dp"
|
||||
android:layout_marginEnd="@dimen/gesture_tutorial_button_margin_start_end"
|
||||
android:layout_marginBottom="48dp"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:stateListAnimator="@null"
|
||||
android:background="@drawable/gesture_tutorial_action_button_background"
|
||||
android:foreground="?android:attr/selectableItemBackgroundBorderless"
|
||||
style="@style/TextAppearance.GestureTutorial.ButtonLabel"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/gesture_tutorial_fragment_action_text_button"
|
||||
android:layout_width="142dp"
|
||||
android:layout_height="49dp"
|
||||
android:layout_marginStart="@dimen/gesture_tutorial_button_margin_start_end"
|
||||
android:layout_marginBottom="48dp"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:stateListAnimator="@null"
|
||||
android:background="@null"
|
||||
android:foreground="?android:attr/selectableItemBackgroundBorderless"
|
||||
style="@style/TextAppearance.GestureTutorial.TextButtonLabel"/>
|
||||
</RelativeLayout>
|
||||
@@ -1,41 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<merge xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<LinearLayout
|
||||
android:id="@+id/action_buttons"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:orientation="horizontal">
|
||||
<Space
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="1dp"
|
||||
android:layout_weight="1" >
|
||||
</Space>
|
||||
<Button
|
||||
android:id="@+id/action_screenshot"
|
||||
style="@style/OverviewActionButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableTop="@drawable/ic_screenshot"
|
||||
android:text="@string/action_screenshot" />
|
||||
<Space
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="1dp"
|
||||
android:layout_weight="1" >
|
||||
</Space>
|
||||
|
||||
<Button
|
||||
android:id="@+id/action_share"
|
||||
style="@style/OverviewActionButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableTop="@drawable/ic_share"
|
||||
android:text="@string/action_share" />
|
||||
<Space
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="1dp"
|
||||
android:layout_weight="1" >
|
||||
</Space>
|
||||
</LinearLayout>
|
||||
|
||||
</merge>
|
||||
@@ -16,8 +16,48 @@
|
||||
-->
|
||||
<com.android.quickstep.views.OverviewActionsView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone">
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/overview_actions_height"
|
||||
android:layout_gravity="center_horizontal|bottom"
|
||||
android:layout_marginLeft="@dimen/overview_actions_horizontal_margin"
|
||||
android:layout_marginRight="@dimen/overview_actions_horizontal_margin" >
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/action_buttons"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:orientation="horizontal">
|
||||
<Space
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="1dp"
|
||||
android:layout_weight="1" >
|
||||
</Space>
|
||||
<Button
|
||||
android:id="@+id/action_screenshot"
|
||||
style="@style/OverviewActionButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableTop="@drawable/ic_screenshot"
|
||||
android:text="@string/action_screenshot" />
|
||||
<Space
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="1dp"
|
||||
android:layout_weight="1" >
|
||||
</Space>
|
||||
|
||||
<Button
|
||||
android:id="@+id/action_share"
|
||||
style="@style/OverviewActionButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableTop="@drawable/ic_share"
|
||||
android:text="@string/action_share" />
|
||||
<Space
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="1dp"
|
||||
android:layout_weight="1" >
|
||||
</Space>
|
||||
</LinearLayout>
|
||||
|
||||
</com.android.quickstep.views.OverviewActionsView>
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Verdeelde skerm"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Speld vas"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Vormvry"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Oorsig"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Geen onlangse items nie"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Maak toe"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Programgebruikinstellings"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Vee alles uit"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Onlangse programme"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Programvoorstelle"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Alle programme"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Jou voorspelde programme"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Kry maklik toegang tot jou mees gebruikte programme"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel voorspel watter programme jy volgende nodig sal hê, direk van jou tuisskerm af. Tik om op te stel."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Kry programvoorstelle in die onderste ry van jou tuisskerm"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Kry maklik toegang tot jou programme wat die meeste gebruik word, direk van die tuisskerm af. Voorstelle sal verander op grond van jou roetines. Programme in die onderste ry sal opskuif na jou tuisskerm."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Kry maklik toegang tot jou programme wat die meeste gebruik word, direk van die tuisskerm af. Voorstelle sal verander op grond van jou roetines. Programme in die onderste ry sal na \'n nuwe vouer toe skuif."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Kry programvoorstelle"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Nee, dankie"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Instellings"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Programme wat die meeste gebruik word, verskyn hier, en verander op grond van roetines"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Sleep programme van die onderste ry af om programvoorstelle te kry"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Programvoorstelle is in leë spasie bygevoeg"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Voorspelde program: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Deel"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Skermkiekie"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,16 +22,28 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"የተከፈለ ማያ ገጽ"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"ሰካ"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"ነጻ ቅጽ"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"ማጠቃለያ"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"ምንም የቅርብ ጊዜ ንጥሎች የሉም"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"ዝጋ"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"የመተግበሪያ አጠቃቀም ቅንብሮች"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"ሁሉንም አጽዳ"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"የቅርብ ጊዜ መተግበሪያዎች"</string>
|
||||
<string name="task_contents_description_with_remaining_time" msgid="4479688746574672685">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>፣ <xliff:g id="REMAINING_TIME">%2$s</xliff:g>"</string>
|
||||
<string name="shorter_duration_less_than_one_minute" msgid="4722015666335015336">"< 1 ደቂቃ"</string>
|
||||
<string name="time_left_for_app" msgid="3111996412933644358">"ዛሬ <xliff:g id="TIME">%1$s</xliff:g> ቀርቷል"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"የመተግበሪያ ጥቆማዎች"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"የመተግበሪያ አስተያየቶች"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"ሁሉም መተግበሪያዎች"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"የእርስዎ የሚገመቱ መተግበሪያዎች"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"በብዛት ስራ ላይ የዋሉ መተግበሪያዎችዎን በቀላሉ ይድረሱ"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel እርስዎ ቀጥለው የሚፈልጓቸውን መተግበሪያዎች ይገምታል፣ በዚያው በመነሻ ገጽዎ ላይ። ለማዋቀር መታ ያድርጉ።"</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"በመነሻ ገጽዎ ታችኛው ረድፍ ላይ የመተግበሪያ አስተያየት ጥቆማዎችን ያግኙ"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"በጣም ስራ ላይ የዋሉ መተግበሪያዎችዎን በቀላሉ ከመነሻ ገጹ ሆነው ይድረሱባቸው። የአስተያየት ጥቆማዎች በእርስዎ ዕለት ተዕለት ተግባራት ላይ በመመስረት ይቀየራሉ። በታችኛው ረድፍ ላይ ያሉ መተግበሪያዎች ወደ መነሻ ገጽዎ ይወሰዳሉ።"</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"በጣም ስራ ላይ የዋሉ መተግበሪያዎችዎን በቀላሉ ከመነሻ ገጹ ሆነው ይድረሱባቸው። የአስተያየት ጥቆማዎች በእርስዎ ዕለት ተዕለት ተግባራት ላይ በመመስረት ይቀየራሉ። በታችኛው ረድፍ ላይ ያሉ መተግበሪያዎች ወደ አዲስ አቃፊ ይወሰዳሉ።"</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"የመተግበሪያ አስተያየት ጥቆማዎችን አግኝ"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"አይ፣ አመሰግናለሁ"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"ቅንብሮች"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"በብዛት ስራ ላይ የዋሉ መተግበሪያዎች እዚህ ይመጣሉ፣ እና በዕለት ተዕለት ተግባራት ላይ በመመስረት ይቀየራሉ"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"የመተግበሪያ ጥቆማዎችን ለማግኘት መተግበሪያዎችን ከታችኛው ረድፍ ይጎትቱ"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"የመተግበሪያ አስተያየት ጥቆማዎች ወደ ባዶ ቦታ ታክለዋል"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"የተገመተው መተግበሪያ፦ <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"አጋራ"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"ቅጽበታዊ ገጽ እይታ"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,16 +22,28 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"تقسيم الشاشة"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"تثبيت"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"شكل مجاني"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"نظرة عامة"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"ليست هناك عناصر تم استخدامها مؤخرًا"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"إغلاق"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"إعدادات استخدام التطبيق"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"محو الكل"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"التطبيقات المستخدمة مؤخرًا"</string>
|
||||
<string name="task_contents_description_with_remaining_time" msgid="4479688746574672685">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>، <xliff:g id="REMAINING_TIME">%2$s</xliff:g>"</string>
|
||||
<string name="shorter_duration_less_than_one_minute" msgid="4722015666335015336">"أقل من دقيقة"</string>
|
||||
<string name="time_left_for_app" msgid="3111996412933644358">"يتبقى اليوم <xliff:g id="TIME">%1$s</xliff:g>."</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"اقتراحات التطبيقات"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"التطبيقات المقترحة"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"جميع التطبيقات"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"تطبيقاتك المتوقّعة"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"الوصول بسهولة إلى التطبيقات الأكثر استخدامًا"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"يتوقع هاتف Pixel التطبيقات التي ستحتاج إليها بعد ذلك من الشاشة الرئيسية مباشرةً. انقر للإعداد."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"تلقّي التطبيقات المقترحة من الصف الأسفل في الشاشة الرئيسية"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"يمكنك الوصول إلى التطبيقات الأكثر استخدامًا بسهولة من الشاشة الرئيسية مباشرةً. سيتم تغيير الاقتراحات استنادًا إلى سلاسل الإجراءات. سيتم نقل التطبيقات من الصف الأسفل للأعلى في الشاشة الرئيسية."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"يمكنك الوصول إلى التطبيقات الأكثر استخدامًا بسهولة من الشاشة الرئيسية مباشرةً. سيتم تغيير الاقتراحات استنادًا إلى سلاسل الإجراءات. سيتم نقل التطبيقات من الصف الأسفل إلى مجلد جديد."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"تلقّي اقتراحات عن تطبيقات"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"لا، شكرًا"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"الإعدادات"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"تظهر هنا التطبيقات الأكثر استخدامًا، ويستند التغيير إلى سلاسل الإجراءات."</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"يمكنك سحب التطبيقات من الصف الأسفل لتلقّي اقتراحات."</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"تمت إضافة التطبيقات المقترحة إلى مساحة فارغة."</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"التطبيق المتوقع: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"مشاركة"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"لقطة شاشة"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,16 +22,28 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"বিভাজিত স্ক্ৰীণ"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"পিন"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Freeform"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"অৱলোকন"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"কোনো শেহতীয়া বস্তু নাই"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"বন্ধ কৰক"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"এপে ব্যৱহাৰ কৰা ডেটাৰ ছেটিংসমূহ"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"সকলো মচক"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"শেহতীয়া এপসমূহ"</string>
|
||||
<string name="task_contents_description_with_remaining_time" msgid="4479688746574672685">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="REMAINING_TIME">%2$s</xliff:g>"</string>
|
||||
<string name="shorter_duration_less_than_one_minute" msgid="4722015666335015336">"< ১ মিনিট"</string>
|
||||
<string name="time_left_for_app" msgid="3111996412933644358">"আজি <xliff:g id="TIME">%1$s</xliff:g> বাকী আছ"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"এপৰ পৰামৰ্শসমূহ"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"এপ চাজেশ্বন"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"সকলো এপ্"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"আপোনাৰ অনুমানিক এপ্"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"আপোনাৰ সকলোতকৈ বেছিকৈ ব্যৱহৃত এপ্সমূহ সহজে এক্সেছ কৰক"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"আপোনাক আপোনাৰ গৃহ স্ক্ৰীনত পৰৱর্তী সময়ত কোনবোৰ এপ্ আৱশ্যক হ\'ব সেয়া Pixelএ অনুমান কৰে। ছেট আপ কৰিবলৈ টিপক।"</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"আপোনাৰ গৃহ স্ক্ৰীনৰ একেবাৰে তলৰ শাৰীটোত এপৰ পৰামর্শসমূহ পাওক"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"আপোনাৰ সকলোতকৈ বেছিকৈ ব্যৱহৃত এপ্সমূহ গৃহ স্ক্ৰীনতে সহজে এক্সেছ কৰক। আপোনাৰ ৰুটিনসমূহৰ ভিত্তিত পৰামর্শসমূহ সলনি হ\'ব। একেবাৰে তলৰ শাৰীটোত থকা এপ্সমূহ ওপৰৰ আপোনাৰ গৃহ স্ক্ৰীনলৈ যাব।"</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"আপোনাৰ সকলোতকৈ বেছিকৈ ব্যৱহৃত এপ্সমূহ গৃহ স্ক্ৰীনতে সহজে এক্সেছ কৰক। আপোনাৰ ৰুটিনসমূহৰ ভিত্তিত পৰামর্শসমূহ সলনি হ\'ব। একেবাৰে তলৰ শাৰীটোত থকা এপ্সমূহ এটা নতুন ফ\'ল্ডাৰলৈ যাব।"</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"এপৰ পৰামর্শসমূহ পাওক"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"নালাগে, ধন্যবাদ"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"ছেটিংসমূহ"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"সকলোতকৈ বেছিকৈ ব্যৱহৃত এপ্সমূহ ইয়াত প্ৰদর্শিত হয় আৰু ৰুটিনসমূহ ওপৰত ভিত্তি কৰি সলনি হয়"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"এপৰ পৰামর্শসমূহ পাবলৈ একেবাৰে তলৰ শাৰীত থকা এপ্সমূহ টানি আঁতৰাওক"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"খালী ঠাইত এপৰ পৰামর্শসমূহ যোগ কৰা হ\'ল"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"পূৰ্বানুমান কৰা এপ্: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"শ্বেয়াৰ কৰক"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"স্ক্ৰীনশ্বট"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Bölünmüş ekran"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Sancın"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Sərbəst rejim"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"İcmal"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Son elementlər yoxdur"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Bağlayın"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Tətbiq istifadə ayarları"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Hamısını silin"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Son tətbiqlər"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Tətbiq təklifləri"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Bütün tətbiqlər"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Təklif edilən tətbiqlər"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Ən çox istifadə etdiyiniz tətbiqlərə asanlıqla daxil olun"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel növbəti dəfə ehtiyacınız olacaq tətbiqləri birbaşa Ana ekranda proqnozlaşdırır. Ayarlamaq üçün toxunun."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Ana ekranın aşağı sırasında tətbiq təklifləri alın"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Birbaşa Ana ekrandan ən çox istifadə edilən tətbiqlərə asanlıqla daxil olun. Təkliflər rejimlərinizə uyğun olaraq dəyişəcək. Aşağı sıradakı tətbiqlər Ana ekrana köçürüləcək."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Birbaşa Əsas səhifədən ən çox istifadə edilən tətbiqlərə asanlıqla daxil olun. Təkliflər rejimlərinizə uyğun olaraq dəyişəcək. Aşağı sıradakı tətbiqlər yeni qovluğa köçürüləcək."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Tətbiq təklifləri əldə edin"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Xeyr, təşəkkür"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Ayarlar"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Ən çox istifadə edilən tətbiqlər burada görünür və rejimlərə uyğun olaraq dəyişir"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Tətbiq təklifləri əldə etmək üçün tətbiqləri aşağı sıradan kənara sürüşdürün"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Tətbiq təklifləri boş sahəyə əlavə edildi"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Proqnozlaşdırılan tətbiq: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Paylaşın"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Ekran şəkli"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Podeljeni ekran"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Zakači"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Slobodni oblik"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Pregled"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Nema nedavnih stavki"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Zatvori"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Podešavanja korišćenja aplikacije"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Obriši sve"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Nedavne aplikacije"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Predlozi aplikacija"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Sve aplikacije"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Predviđene aplikacije"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Lako pristupajte aplikacijama koje najčešće koristite"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel predviđa koje će vam aplikacije sledeće trebati i stavlja ih na početni ekran. Dodirnite da biste podesili."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Dobijajte predloge aplikacija u donjem redu početnog ekrana"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Lako pristupajte aplikacijama koje najčešće koristite direktno sa početnog ekrana. Predlozi se menjaju na osnovu upotrebe. Aplikacije iz donjeg reda se premeštaju nagore na početni ekran."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Lako pristupajte aplikacijama koje najčešće koristite direktno sa početnog ekrana. Predlozi se menjaju na osnovu upotrebe. Aplikacije iz donjeg reda se premeštaju u nov direktorijum."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Prikazuj predloge aplikacija"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Ne, hvala"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Podešavanja"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Ovde se prikazuju najčešće korišćene aplikacije i menjaju se u zavisnosti od upotrebe"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Prevucite aplikacije iz donjeg reda da biste dobili predloge"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Predlozi aplikacija se dodaju na prazno mesto"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Predviđamo aplikaciju: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Deli"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Napravi snimak ekrana"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Падзяліць экран"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Замацаваць"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Адвольная форма"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Агляд"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Няма новых элементаў"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Закрыць"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Налады выкарыстання праграмы"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Ачысціць усё"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Нядаўнія праграмы"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Прапановы праграм"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Усе праграмы"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Вашы праграмы з падказак"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Атрымлiвайце прамы доступ да праграм, якімі вы карыстаецеся найбольш часта"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel падказвае, якія праграмы могуць спатрэбіцца вам далей, і памяшчае іх на Галоўны экран. Дакраніцеся, каб наладзіць."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Атрымлівайце прапановы праграм у ніжнім радку на Галоўным экране."</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Атрымлiвайце доступ да праграм, якімі вы карыстаецеся найбольш часта, непасрэдна з Галоўнага экрана. Прапановы будуць змяняцца ў залежнасці ад вашых дзеянняў. Праграмы, якія знаходзяцца ў ніжнім радку, будуць перамешчаны на Галоўны экран."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Атрымлiвайце просты доступ да праграм, якімі вы карыстаецеся найбольш часта, непасрэдна з Галоўнага экрана. Прапановы будуць змяняцца ў залежнасці ад вашых дзеянняў. Праграмы, якія знаходзяцца ў ніжнім радку, будуць перамешчаны ў новую папку."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Атрымаць прапановы праграм"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Не, дзякуй"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Налады"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Тут з\'яўляюцца праграмы, якімі вы карыстаецеся найбольш часта. Гэты спіс змяняецца на падставе вашых дзеянняў"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Перацягніце праграмы з ніжняга радку, каб атрымаць прапановы праграм"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Прапановы праграм дададзены на свабоднае месца"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Праграма з падказкі: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Абагуліць"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Здымак экрана"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Разделен екран"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Фиксиране"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Свободна форма"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Общ преглед"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Няма скорошни елементи"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Затваряне"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Настройки за използването на приложенията"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Изчистване на всички"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Скорошни приложения"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Предложения за приложения"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Всички приложения"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Предвидени приложения"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Лесен достъп до най-използваните от вас приложения"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel предвижда кои приложения ще са ви нужни в следващия момент и ви ги показва директно на началния екран. Докоснете, за да настроите."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Получавайте предложения за приложения на най-долния ред на началния си екран"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Осъществявайте лесен достъп до най-използваните от вас приложения директно от началния екран. Предложенията ще се променят въз основа на поредиците ви. Приложенията на най-долния ред ще се преместят на началния ви екран."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Осъществявайте лесен достъп до най-използваните от вас приложения директно от началния екран. Предложенията ще се променят въз основа на поредиците ви. Приложенията на най-долния ред ще се преместят в нова папка."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Получаване на предложения за приложения"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Не, благодаря"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Настройки"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Най-използваните приложения се показват тук и се променят въз основа на поредиците"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"За да получавате предложения за приложения, с плъзгане премахнете приложенията от най-долния ред"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Предложенията за приложения са добавени на празното място"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Предвидено приложение: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Споделяне"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Екранна снимка"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"স্ক্রিন স্প্লিট করুন"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"পিন করুন"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"ফ্রি-ফর্ম"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"এক নজরে"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"কোনো সাম্প্রতিক আইটেম নেই"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"বন্ধ করুন"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"অ্যাপ ব্যবহারের সেটিংস"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"সবকিছু খালি করুন"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"সম্প্রতি ব্যবহৃত অ্যাপ"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"অ্যাপের সাজেশন"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"সব অ্যাপ"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"আপনার প্রয়োজন হতে পারে এমন অ্যাপ"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"আপনার সব থেকে ব্যবহার করা অ্যাপ সহজেই অ্যাক্সেস করুন"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel আপনার হোম স্ক্রিনে পরবর্তী প্রয়োজনীয় অ্যাপের পূর্বাভাস দেয়। সেট-আপ করতে ট্যাপ করুন।"</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"আপনার হোম স্ক্রিনের নিচে সারিতে অ্যাপ সাজেশন পান"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"হোম স্ক্রিনের পাশে সব থেকে ব্যবহার করা অ্যাপ সহজেই অ্যাক্সেস করুন। আপনার রুটিনের উপর ভিত্তি করে সাজেশন পরির্তন করা হবে। নিচের সারিতে থাকা অ্যাপ আপনার হোম স্ক্রিনে সরানো হবে।"</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"হোম স্ক্রিনের পাশে সব থেকে ব্যবহার করা অ্যাপ সহজেই অ্যাক্সেস করুন। আপনার রুটিনের উপর ভিত্তি করে সাজেশন পরির্তন করা হবে। নিচের সারিতে থাকা অ্যাপ নতুন ফোল্ডারে সরানো হবে।"</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"অ্যাপ সাজেশন পান"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"না থাক"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"সেটিংস"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"সব থেকে বেশি ব্যবহার করা অ্যাপ এখানে দেখানো হয় এবং রুটিনের উপর ভিত্তি করে পরিবর্তন হতে পারে"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"অ্যাপ সাজেশন পেতে নিচের সারিতে অ্যাপগুলি টেনে আনুন"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"খালি জায়গাতে অ্যাপ সাজেশন যোগ করা হয়েছে"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"আপনার প্রয়োজন হতে পারে এমন অ্যাপ: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"শেয়ার করুন"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"স্ক্রিনশট"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,16 +22,28 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Način rada podijeljenog ekrana"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Zakači"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Slobodan oblik"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Pregled"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Nema nedavnih stavki"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Zatvaranje"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Postavke korištenja aplikacije"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Obriši sve"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Nedavne aplikacije"</string>
|
||||
<string name="task_contents_description_with_remaining_time" msgid="4479688746574672685">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="REMAINING_TIME">%2$s</xliff:g>"</string>
|
||||
<string name="shorter_duration_less_than_one_minute" msgid="4722015666335015336">"< 1 min"</string>
|
||||
<string name="time_left_for_app" msgid="3111996412933644358">"Preostalo vrijeme: <xliff:g id="TIME">%1$s</xliff:g>"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Prijedlozi za aplikacije"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Prijedlozi aplikacija"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Sve aplikacije"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Predviđene aplikacije"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Jednostavno pristupite najčešće korištenim aplikacijama"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel predviđa koje će vam aplikacije trebati sljedeće, direktno na početnom ekranu. Dodirnite da postavite."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Primajte prijedloge aplikacija u donjem redu početnog ekrana"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Jednostavno pristupite najčešće korištenim aplikacijama direktno na početnom ekranu. Prijedlozi će se mijenjati na osnovu vaših rutina. Aplikacije koje se nalaze u donjem redu će se premjestiti na početni ekran."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Jednostavno pristupite najčešće korištenim aplikacijama, direktno na početnom ekranu. Prijedlozi će se mijenjati na osnovu vaših rutina. Aplikacije koje se nalaze u donjem redu će se premjestiti u novi folder."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Prikaži prijedloge aplikacija"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Ne, hvala"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Postavke"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Ovdje se prikazuju najčešće korištene aplikacije i njihov prikaz se mijenja na osnovu rutina"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Prevucite aplikacije iz donjeg reda da dobijete prijedloge aplikacija"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Prijedlozi aplikacija su dodani u prazan prostor"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Predviđena aplikacija: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Dijeli"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Snimak ekrana"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Pantalla dividida"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Fixa"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Format lliure"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Aplicacions recents"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"No hi ha cap element recent"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Tanca"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Configuració d\'ús d\'aplicacions"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Esborra-ho tot"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Aplicacions recents"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Suggeriments d\'aplicacions"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Totes les aplicacions"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Prediccions d\'aplicacions"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Accedeix fàcilment a les aplicacions que més utilitzes"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel prediu les aplicacions que necessitaràs a continuació, directament a la pantalla d\'inici. Toca per configurar."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Obtén suggeriments d\'aplicacions a la fila inferior de la pantalla d\'inici"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Accedeix fàcilment a les aplicacions que més utilitzes des de la pantalla d\'inici. Els suggeriments variaran en funció de la teva rutina. Les aplicacions de la fila inferior pujaran a la pantalla d\'inici."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Accedeix fàcilment a les aplicacions que més utilitzes des de la pantalla d\'inici. Els suggeriments variaran en funció de la teva rutina. Les aplicacions de la fila inferior es mouran a una carpeta nova."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Obtén suggeriments d\'aplicacions"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"No, gràcies"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Configuració"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Les aplicacions que més utilitzes apareixen aquí i poden variar en funció de la teva rutina"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Arrossega les aplicacions fora de la fila inferior per obtenir suggeriments d\'aplicacions"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"S\'han afegit suggeriments d\'aplicacions en un espai buit"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Predicció d\'aplicació: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Comparteix"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Captura de pantalla"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Rozdělená obrazovka"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"PIN"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Neomezený režim"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Přehled"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Žádné nedávné položky"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Zavřít"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Nastavení využití aplikací"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Vymazat vše"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Poslední aplikace"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Návrhy aplikací"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Všechny aplikace"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Vaše předpovídané aplikace"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Snadný přístup k nejpoužívanějším aplikacím"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Telefon Pixel předvídá, které aplikace budete potřebovat jako další, a zobrazuje je přímo na ploše. Klepnutím zahájíte nastavení."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Nechte si ve spodním řádku na ploše zobrazovat návrhy aplikací"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Mějte nejpoužívanější aplikace k dispozici přímo na ploše. Návrhy se budou měnit v závislosti na sledech činností. Aplikace ve spodním řádku se přesunou na vaši plochu."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Mějte nejpoužívanější aplikace k dispozici přímo na ploše. Návrhy se budou měnit v závislosti na sledech činností. Aplikace ve spodním řádku se přesunou do nové složky."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Zobrazovat návrhy aplikací"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Ne, díky"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Nastavení"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Zde se zobrazují nejpoužívanější aplikace (které se mění podle sledů činností)"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Chcete-li získat návrhy aplikací, přetáhněte aplikace z dolního řádku"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Volné místo bylo vyplněno návrhy aplikací"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Předpokládaná aplikace: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Sdílet"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Snímek obrazovky"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Opdel skærm"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Fastgør"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Frit format"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Oversigt"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Ingen nye elementer"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Luk"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Indstillinger for appforbrug"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Ryd alt"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Seneste apps"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Appforslag"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Alle apps"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Dine foreslåede apps"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Få nem adgang til dine mest brugte apps"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel forudser, hvilke apps du har brug for, direkte på din startskærm. Tryk for at konfigurere"</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Få appforslag på den nederste række af din startskærm"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Få nem adgang til dine mest brugte apps direkte fra startskærmen. Forslagene ændres ud fra dine vaner. Apps i nederste række bliver flyttet op til din startskærm."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Få nem adgang til dine mest brugte apps direkte fra startskærmen. Forslagene ændres ud fra dine vaner. Apps i nederste række bliver flyttet til en ny mappe."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Få appforslag"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Nej tak"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Indstillinger"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"De mest brugte apps vises her, og visningen ændres ud fra dine vaner"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Træk apps væk fra den nederste række for at få appforslag"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Appforslag blev føjet til tom plads"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"App, du forventes at skulle bruge: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Del"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Screenshot"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Splitscreen"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Anpinnen"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Freeform-Modus"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Übersicht"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Keine kürzlich verwendeten Elemente"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Schließen"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Einstellungen zur App-Nutzung"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Alle Apps schließen"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Zuletzt aktive Apps"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"App-Vorschläge"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Alle Apps"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"App-Vorschläge für dich"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Einfacher Zugriff auf deine meistverwendeten Apps"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Das Pixel prognostiziert, welche Apps du als nächste brauchst, und setzt diese direkt auf den Startbildschirm. Zum Einrichten tippen."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Lass dir in der unteren Reihe auf deinem Startbildschirm Vorschläge für Apps anzeigen"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Schneller Zugriff auf deine meistverwendeten Apps direkt über den Startbildschirm. Die Vorschläge richten sich nach deiner gewöhnlichen Nutzung. Apps in der unteren Reihe werden nach oben auf den Startbildschirm verschoben."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Schneller Zugriff auf deine meistverwendeten Apps direkt über den Startbildschirm. Die Vorschläge richten sich nach deiner gewöhnlichen Nutzung. Apps in der unteren Reihe werden in einen neuen Ordner verschoben."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"App-Vorschläge erhalten"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Nein danke"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Einstellungen"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Hier erscheinen die meistverwendeten Apps. Die Angaben können sich je nach deiner gewöhnlichen Nutzung ändern"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Ziehe Apps aus der unteren Reihe heraus, um Vorschläge für Apps zu bekommen"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"App-Vorschläge in freiem Bereich hinzugefügt"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"App-Vorhersage: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Teilen"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Screenshot"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,16 +22,28 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Διαχωρισμός οθόνης"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Καρφίτσωμα"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Ελεύθερη μορφή"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Επισκόπηση"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Δεν υπάρχουν πρόσφατα στοιχεία"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Κλείσιμο"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Ρυθμίσεις χρήσης εφαρμογής"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Διαγραφή όλων"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Πρόσφατες εφαρμογές"</string>
|
||||
<string name="task_contents_description_with_remaining_time" msgid="4479688746574672685">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="REMAINING_TIME">%2$s</xliff:g>"</string>
|
||||
<string name="shorter_duration_less_than_one_minute" msgid="4722015666335015336">"< 1 λ."</string>
|
||||
<string name="time_left_for_app" msgid="3111996412933644358">"Απομένουν <xliff:g id="TIME">%1$s</xliff:g> σήμερα"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Προτάσεις εφαρμογών"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Προτεινόμενες εφαρμογές"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Όλες οι εφαρμογές"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Προβλέψεις εφαρμογών"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Εύκολη πρόσβαση στις εφαρμογές που χρησιμοποιείτε περισσότερο"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Το Pixel προβλέπει τις εφαρμογές που θα χρειαστείτε μετά, απευθείας στην αρχική οθόνη. Πατήστε για ρύθμιση."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Δείτε τις προτεινόμενες εφαρμογές στην κάτω σειρά της αρχικής οθόνης"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Αποκτήστε εύκολα πρόσβαση στις εφαρμογές που χρησιμοποιείτε περισσότερο απευθείας από την αρχική οθόνη. Οι προτάσεις θα αλλάζουν με βάση τις ρουτίνες σας. Οι εφαρμογές στην κάτω σειρά θα μετακινηθούν προς τα επάνω στην αρχική οθόνη."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Αποκτήστε εύκολα πρόσβαση στις εφαρμογές που χρησιμοποιείτε περισσότερο, απευθείας από την αρχική οθόνη. Οι προτάσεις θα αλλάζουν με βάση τις ρουτίνες σας. Οι εφαρμογές στην κάτω σειρά θα μεταφερθούν σε νέο φάκελο."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Προβολή προτεινόμενων εφαρμογών"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Όχι, ευχαριστώ"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Ρυθμίσεις"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Οι εφαρμογές που χρησιμοποιείτε περισσότερο εμφανίζονται εδώ και αλλάζουν με βάση τις ρουτίνες"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Σύρετε εφαρμογές μακριά από την κάτω σειρά, για να δείτε τις προτεινόμενες εφαρμογές"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Οι προτεινόμενες εφαρμογές προστέθηκαν στον κενό χώρο"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Εφαρμογή από πρόβλεψη: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Κοινοποίηση"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Στιγμιότυπο οθόνης"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Split screen"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Pin"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Freeform"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Overview"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"No recent items"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Close"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"App usage settings"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Clear all"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Recent apps"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"App suggestions"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"All apps"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Your predicted apps"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Easily access your most-used apps"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel predicts apps that you\'ll need next directly from your home screen. Tap to set up."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Get app suggestions on the bottom row of your home screen"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Easily access your most-used apps directly from the home screen. Suggestions will change based on your routines. Apps on the bottom row will move up to your home screen."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Easily access your most-used apps directly from the home screen. Suggestions will change based on your routines. Apps on the bottom row will be moved to a new folder."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Get app suggestions"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"No, thanks"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Settings"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Most-used apps appear here, and change based on routines"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Drag apps off the bottom row to get app suggestions"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"App suggestions added to empty space"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Predicted app: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Share"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Screenshot"</string>
|
||||
</resources>
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
/*
|
||||
* Copyright (C) 2017 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Split screen"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Pin"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Freeform"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"No recent items"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"App usage settings"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Clear all"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Recent apps"</string>
|
||||
<string name="task_contents_description_with_remaining_time" msgid="4479688746574672685">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="REMAINING_TIME">%2$s</xliff:g>"</string>
|
||||
<string name="shorter_duration_less_than_one_minute" msgid="4722015666335015336">"< 1 minute"</string>
|
||||
<string name="time_left_for_app" msgid="3111996412933644358">"<xliff:g id="TIME">%1$s</xliff:g> left today"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"App suggestions"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"All apps"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Your predicted apps"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Easily access your most-used apps"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel predicts apps that you\'ll need next directly from your home screen. Tap to set up."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Get app suggestions on the bottom row of your home screen"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Easily access your most-used apps directly from the home screen. Suggestions will change based on your routines. Apps on the bottom row will move up to your home screen."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Easily access your most-used apps directly from the home screen. Suggestions will change based on your routines. Apps on the bottom row will be moved to a new folder."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Get app suggestions"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"No, thanks"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Settings"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Most-used apps appear here, and change based on routines"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Drag apps off the bottom row to get app suggestions"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"App suggestions added to empty space"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Predicted app: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Share"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Screenshot"</string>
|
||||
</resources>
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Split screen"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Pin"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Freeform"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Overview"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"No recent items"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Close"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"App usage settings"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Clear all"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Recent apps"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"App suggestions"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"All apps"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Your predicted apps"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Easily access your most-used apps"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel predicts apps that you\'ll need next directly from your home screen. Tap to set up."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Get app suggestions on the bottom row of your home screen"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Easily access your most-used apps directly from the home screen. Suggestions will change based on your routines. Apps on the bottom row will move up to your home screen."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Easily access your most-used apps directly from the home screen. Suggestions will change based on your routines. Apps on the bottom row will be moved to a new folder."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Get app suggestions"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"No, thanks"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Settings"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Most-used apps appear here, and change based on routines"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Drag apps off the bottom row to get app suggestions"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"App suggestions added to empty space"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Predicted app: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Share"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Screenshot"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Split screen"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Pin"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Freeform"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Overview"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"No recent items"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Close"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"App usage settings"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Clear all"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Recent apps"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"App suggestions"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"All apps"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Your predicted apps"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Easily access your most-used apps"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel predicts apps that you\'ll need next directly from your home screen. Tap to set up."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Get app suggestions on the bottom row of your home screen"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Easily access your most-used apps directly from the home screen. Suggestions will change based on your routines. Apps on the bottom row will move up to your home screen."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Easily access your most-used apps directly from the home screen. Suggestions will change based on your routines. Apps on the bottom row will be moved to a new folder."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Get app suggestions"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"No, thanks"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Settings"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Most-used apps appear here, and change based on routines"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Drag apps off the bottom row to get app suggestions"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"App suggestions added to empty space"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Predicted app: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Share"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Screenshot"</string>
|
||||
</resources>
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
/*
|
||||
* Copyright (C) 2017 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
-->
|
||||
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Split screen"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Pin"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Freeform"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"No recent items"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"App usage settings"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Clear all"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Recent apps"</string>
|
||||
<string name="task_contents_description_with_remaining_time" msgid="4479688746574672685">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="REMAINING_TIME">%2$s</xliff:g>"</string>
|
||||
<string name="shorter_duration_less_than_one_minute" msgid="4722015666335015336">"< 1 minute"</string>
|
||||
<string name="time_left_for_app" msgid="3111996412933644358">"<xliff:g id="TIME">%1$s</xliff:g> left today"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"App suggestions"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"All apps"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Your predicted apps"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Easily access your most-used apps"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel predicts apps youll need next, right on your Home screen. Tap to set up."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Get app suggestions on the bottom row of your Home screen"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Easily access your most-used apps right on the Home screen. Suggestions will change based on your routines. Apps on the bottom row will move up to your Home screen."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Easily access your most-used apps, right on the Home screen. Suggestions will change based on your routines. Apps on the bottom row will move to a new folder."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Get app suggestions"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"No thanks"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Settings"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Most-used apps appear here, and change based on routines"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Drag apps off the bottom row to get app suggestions"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"App suggestions added to empty space"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Predicted app: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Share"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Screenshot"</string>
|
||||
</resources>
|
||||
@@ -22,16 +22,28 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Pantalla dividida"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Fijar"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Formato libre"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Recientes"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"No hay elementos recientes"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Cerrar"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Configuración de uso de la app"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Borrar todo"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Apps recientes"</string>
|
||||
<string name="task_contents_description_with_remaining_time" msgid="4479688746574672685">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g> (<xliff:g id="REMAINING_TIME">%2$s</xliff:g>)"</string>
|
||||
<string name="shorter_duration_less_than_one_minute" msgid="4722015666335015336">"< 1 minuto"</string>
|
||||
<string name="time_left_for_app" msgid="3111996412933644358">"Tiempo restante: <xliff:g id="TIME">%1$s</xliff:g>"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Sugerencias de apps"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Sugerencias de aplicaciones"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Todas las apps"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Predicción de tus apps"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Accede fácilmente a las apps que más usas"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel predice las apps que usarás la próxima vez en la pantalla principal. Presiona para configurar esta opción."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Obtén sugerencias de aplicaciones en la fila inferior de la pantalla principal"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Accede fácilmente en la pantalla principal a las apps que más usas. Las sugerencias cambiarán según tus rutinas. Las apps de la fila inferior se moverán hacia arriba en la pantalla principal."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Accede fácilmente a las apps que más usas en la pantalla principal. Las sugerencias cambiarán según tus rutinas. Las apps de la fila inferior se moverán a una nueva carpeta."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Obtén sugerencias de aplicaciones"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"No, gracias"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Configuración"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Las apps que más se usan se muestran aquí y cambian según las rutinas"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Arrastra apps fuera de la fila inferior para obtener sugerencias"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Se agregaron sugerencias de aplicaciones a un espacio vacío"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Predicción de app: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Compartir"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Captura de pantalla"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Dividir pantalla"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Fijar"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Formato libre"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Aplicaciones recientes"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"No hay elementos recientes"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Cerrar"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"No hay nada reciente"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Ajustes de uso de la aplicación"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Borrar todo"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Aplicaciones recientes"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Sugerencias de aplicaciones"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Todas las aplicaciones"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Predicción de aplicaciones"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Accede fácilmente a las aplicaciones que más usas"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel predice qué aplicaciones necesitarás a continuación y las pone directamente en tu pantalla de inicio. Toca para configurar."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Haz que aparezcan sugerencias de aplicaciones en la fila inferior de la pantalla de inicio"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Accede fácilmente desde la pantalla de inicio a las aplicaciones que más usas. Las sugerencias cambiarán según tus rutinas. Las aplicaciones de la fila inferior pasarán a mostrarse en la pantalla de inicio."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Accede fácilmente desde la pantalla de inicio a las aplicaciones que más usas. Las sugerencias cambiarán según tus rutinas. Las aplicaciones de la fila inferior se pondrán en una carpeta nueva."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Ver sugerencias de aplicaciones"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"No, gracias"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Ajustes"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Las aplicaciones que más usas aparecen aquí, y van variando según tus rutinas"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Mueve aplicaciones de la fila inferior para ver sugerencias de aplicaciones"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Se han añadido sugerencias de aplicaciones a espacios vacíos"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Aplicación sugerida: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Compartir"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Hacer captura de pantalla"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Jagatud ekraan"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Kinnita"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Vabavorm"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Ülevaade"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Hiljutisi üksusi pole"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Sule"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Rakenduse kasutuse seaded"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Sule kõik"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Hiljutised rakendused"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Rakenduste soovitused"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Kõik rakendused"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Teie ennustatud rakendused"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Pääsete enim kasutatavatele rakendustele hõlpsasti juurde"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel ennustab otse avakuval, millist rakendust järgmisena kasutate. Puudutage funktsiooni seadistamiseks."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Hankige avakuva alumisel real rakenduste soovitusi"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Pääsete enim kasutatavatele rakendustele hõlpsasti juurde otse avakuvalt. Soovitused muutuvad olenevalt teie rutiinist. Alumisel real olevad rakendused teisaldatakse teie avakuvale."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Pääsete enim kasutatavatele rakendustele hõlpsasti juurde otse avakuvalt. Soovitused muutuvad olenevalt teie rutiinist. Alumisel real olevad rakendused teisaldatakse uude kausta."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Hangi rakenduste soovitusi"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Tänan, ei"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Seaded"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Siin kuvatakse enim kasutatavad rakendused, mis võivad olenevalt rutiinist muutuda."</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Rakenduste soovituste hankimiseks lohistage rakendused alumiselt realt ära"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Tühjale kohale lisati rakenduste soovitused"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Ennustatud rakendus: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Jaga"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Ekraanipilt"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,16 +22,28 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"تقسیم صفحه"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"پین"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Freeform"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"نمای کلی"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"بدون موارد اخیر"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"بستن"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"تنظیمات استفاده از برنامه"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"پاک کردن همه"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"برنامههای اخیر"</string>
|
||||
<string name="task_contents_description_with_remaining_time" msgid="4479688746574672685">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>، <xliff:g id="REMAINING_TIME">%2$s</xliff:g>"</string>
|
||||
<string name="shorter_duration_less_than_one_minute" msgid="4722015666335015336">"< ۱ دقیقه"</string>
|
||||
<string name="time_left_for_app" msgid="3111996412933644358">"<xliff:g id="TIME">%1$s</xliff:g> باقیمانده برای امروز"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"برنامههای پیشنهادی"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"پیشنهادهای برنامه"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"همه برنامهها"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"برنامههای پیشبینیشده"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"دسترسی آسان به پرکاربردترین برنامهها"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel برنامههایی را که بعداً نیاز خواهید داشت در صفحه اصلی پیشبینی میکند. برای راهاندازی ضربه بزنید."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"دریافت پیشنهادهای برنامه در ردیف پایین صفحه اصلی"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"بهراحتی در صفحه اصلی به پرکاربردترین برنامهها دسترسی داشته باشید. پیشنهادها براساس روالهایتان تغییر خواهد کرد. برنامههای ردیف پایین در صفحه اصلی به بالا منتقل خواهند شد."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"بهراحتی در صفحه اصلی به پرکاربردترین برنامهها دسترسی داشته باشید. پیشنهادها براساس روالهایتان تغییر خواهد کرد. برنامههای ردیف پایین به پوشه جدیدی منتقل خواهند شد."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"دریافت پیشنهادهای برنامه"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"نه متشکرم"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"تنظیمات"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"پرکاربردترین برنامهها اینجا ظاهر میشوند و براساس روالها تغییر میکنند"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"برای دریافت پیشنهادهای برنامه، برنامهها را به بیرون از ردیف پایین بکشید"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"پیشنهادهای برنامه به فضای خالی اضافه شد"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"برنامه پیشبینیشده: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"همرسانی"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"نماگرفت"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Jaettu näyttö"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Kiinnitä"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Vapaamuotoinen"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Viimeisimmät"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Ei viimeaikaisia kohteita"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Sulje"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Sovelluksen käyttöasetukset"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Poista kaikki"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Viimeisimmät sovellukset"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Sovellusehdotukset"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Kaikki sovellukset"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Sovellusennusteet"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Käytetyimpien sovellusten helppo avaaminen"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel ennakoi seuraavaksi tarvitsemasi sovellukset ja näyttää ne kätevästi aloitusnäytöllä. Ota käyttöön napauttamalla."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Näytä sovellusehdotuksia aloitusnäytön alimmaisella rivillä"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Voit avata käytetyimmät sovellukset kätevästi aloitusnäytöltä. Ehdotukset muuttuvat rutiiniesi perusteella. Alimmaisella rivillä olevat sovellukset siirretään aloitusnäytön yläosaan."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Voit avata käytetyimmät sovellukset kätevästi aloitusnäytöltä. Ehdotukset muuttuvat rutiiniesi perusteella. Alimmaisella rivillä olevat sovellukset siirretään uuteen kansioon."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Tilaa sovellusehdotukset"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Ei kiitos"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Asetukset"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Käytetyimmät sovellukset näkyvät täällä ja muuttuvat rutiiniesi perusteella"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Siirrä sovelluksia pois alimmaiselta riviltä, niin voit saada sovellusehdotuksia"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Sovellusehdotuksia lisätty tyhjään kohtaan"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Ennakoitu sovellus: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Jaa"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Kuvakaappaus"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Écran divisé"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Épingler"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Forme libre"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Aperçu"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Aucun élément récent"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Fermer"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Paramètres d\'utilisation de l\'application"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Tout effacer"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Applications récentes"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Suggestions d\'applications"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Toutes les applications"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Vos prédictions d\'applications"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Accéder facilement aux applications que vous utilisez le plus"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Le Pixel prédit les applications dont vous aurez besoin ensuite, directement sur votre écran d\'accueil. Touchez pour configurer."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Obtenez des applications suggérées dans la rangée du bas de votre écran d\'accueil"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Accédez facilement aux applications que vous utilisez le plus, directement à l\'écran d\'accueil. Les suggestions changeront en fonction de vos habitudes. Les applications dans la rangée du bas seront déplacées vers votre écran d\'accueil."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Accédez facilement aux applications que vous utilisez le plus, directement à l\'écran d\'accueil. Les suggestions changeront en fonction de vos habitudes. Les applications dans la rangée du bas seront déplacées vers un nouveau dossier."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Obtenir des applications suggérées"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Non merci"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Paramètres"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Les applications les plus utilisées s\'affichent ici et changent en fonction des habitudes"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Sortez des applications de la rangée du bas en les faisant glisser pour obtenir des applications suggérées"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Applications suggérées ajoutées à l\'espace vide"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Application prédite : <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Partager"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Capture d\'écran"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,16 +22,28 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Écran partagé"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Épingler"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Format libre"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Aperçu"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Aucun élément récent"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Fermer"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Paramètres de consommation de l\'application"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Tout effacer"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Applications récentes"</string>
|
||||
<string name="task_contents_description_with_remaining_time" msgid="4479688746574672685">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="REMAINING_TIME">%2$s</xliff:g>"</string>
|
||||
<string name="shorter_duration_less_than_one_minute" msgid="4722015666335015336">"< 1 min"</string>
|
||||
<string name="time_left_for_app" msgid="3111996412933644358">"Encore <xliff:g id="TIME">%1$s</xliff:g> aujourd\'hui"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Suggestions d\'applications"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Applications suggérées"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Toutes les applications"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Applications prévues pour vous"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Accédez facilement à vos applications les plus utilisées"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel prédit les applications dont vous pourriez avoir besoin par la suite et les affiche sur votre écran d\'accueil. Appuyez ici pour configurer ce paramètre."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Retrouvez vos applications suggérées dans la rangée du bas de votre écran d\'accueil"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Accédez facilement aux applications dont vous vous servez le plus, directement depuis l\'écran d\'accueil. Ces suggestions peuvent varier en fonction de vos habitudes d\'utilisation. Les applications de la rangée du bas seront transférées sur votre écran d\'accueil."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Accédez facilement aux applications dont vous vous servez le plus, directement depuis l\'écran d\'accueil. Ces suggestions peuvent varier en fonction de vos habitudes d\'utilisation. Les applications de la rangée du bas seront transférées dans un nouveau dossier."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Activer les applications suggérées"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Non, merci"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Paramètres"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Les applications dont vous vous servez le plus s\'affichent ici (ces suggestions peuvent varier en fonction de vos habitudes d\'utilisation)"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Faites glisser des applications hors de la rangée du bas pour obtenir des applications suggérées"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Vos applications suggérées ont été ajoutées là où il y avait de la place"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Application prédite : <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Partager"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Faire une capture d\'écran"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Pantalla dividida"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Fixar"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Forma libre"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Visión xeral"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Non hai elementos recentes"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Pecha a aplicación"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Configuración do uso de aplicacións"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Borrar todo"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Apps recentes"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Suxestións de aplicacións"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Todas as aplicacións"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"As túas aplicacións preditas"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Accede facilmente ás aplicacións que máis utilizas"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"O Pixel predí as aplicacións que utilizarás a continuación e móstraas na pantalla de inicio. Toca para configurar."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Recibe suxestións de aplicacións na fila inferior da pantalla de inicio"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Accede facilmente desde a pantalla de inicio ás aplicacións que máis usas. As suxestións irán cambiando en función das túas rutinas. As aplicacións da fila inferior pasarán á pantalla de inicio."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Accede facilmente desde a pantalla de inicio ás aplicacións que máis usas. As suxestións irán cambiando en función das túas rutinas. As aplicacións da fila inferior pasarán a un cartafol novo."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Recibir suxestións de aplicacións"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Non, grazas"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Configuración"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"As aplicacións máis usadas aparecen aquí e van cambiando en función das túas rutinas"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Arrastra aplicacións desde a fila inferior para recibir suxestións de aplicacións"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Engadíronse suxestións de aplicacións ao espazo baleiro"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Aplicación predita: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Compartir"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Crear captura"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,16 +22,28 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"स्क्रीन को दो हिस्सों में बाँटना (स्प्लिट स्क्रीन)"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"पिन करना"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"फ़्रीफ़ॉर्म"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"खास जानकारी"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"हाल ही में इस्तेमाल किया गया कोई ऐप्लिकेशन नहीं है"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"बंद करें"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"ऐप्लिकेशन इस्तेमाल की सेटिंग"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"सभी ऐप्लिकेशन बंद करें"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"हाल ही में इस्तेमाल किए गए ऐप्लिकेशन"</string>
|
||||
<string name="task_contents_description_with_remaining_time" msgid="4479688746574672685">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="REMAINING_TIME">%2$s</xliff:g>"</string>
|
||||
<string name="shorter_duration_less_than_one_minute" msgid="4722015666335015336">"<1 मिनट"</string>
|
||||
<string name="time_left_for_app" msgid="3111996412933644358">"आज <xliff:g id="TIME">%1$s</xliff:g> और चलेगा"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"ऐप्लिकेशन के सुझाव"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"सुझाए गए ऐप्लिकेशन"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"सभी ऐप्लिकेशन"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"आपके काम के ऐप्लिकेशन"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"सबसे ज़्यादा इस्तेमाल होने वाले ऐप्लिकेशन आसानी से ऐक्सेस करें"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel आपकी होम स्क्रीन पर बताता है कि अब आपको किन ऐप्लिकेशन की ज़रूरत है. सेट अप करने के लिए टैप करें."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"अपने होम स्क्रीन की सबसे नीचे वाली पंक्ति में ऐप्लिकेशन के सुझाव पाएं"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"सबसे ज़्यादा इस्तेमाल होने वाले ऐप्लिकेशन सीधे होम स्क्रीन पर देखें. ऐप्लिकेशन इस्तेमाल करने के आपके रूटीन के हिसाब से सुझाव बदलते रहते हैं. नीचे की पंक्ति के ऐप्लिकेशन होम स्क्रीन पर आ जाएंगे."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"सबसे ज़्यादा इस्तेमाल होने वाले ऐप्लिकेशन, सीधे होम स्क्रीन पर देखें. ऐप्लिकेशन इस्तेमाल करने के आपके रूटीन के हिसाब से सुझाव बदलते रहते हैं. नीचे की पंक्ति के ऐप्लिकेशन एक नए फ़ोल्डर में चले जाएंगे."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"ऐप्लिकेशन के बारे में सुझाव पाएं"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"रहने दें"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"सेटिंग"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"सबसे ज़्यादा इस्तेमाल होने वाले ऐप्लिकेशन यहां दिखेंगे. यह ऐप्लिकेशन, आपके इस्तेमाल के रूटीन के हिसाब से बदलते रहते हैं"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"नीचे वाली पंक्ति से ऐप्लिकेशन को खींचकर हटाएं, ताकि आप ऐप्लिकेशन के सुझाव पा सकें"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"खाली जगह पर ऐप्लिकेशन के सुझाव जोड़े गए"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"सुझाया गया ऐप्लिकेशन: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"शेयर करें"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"स्क्रीनशॉट"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Podijeljeni zaslon"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Prikvači"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Slobodni oblik"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Pregled"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Nema nedavnih stavki"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Zatvori"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Postavke upotrebe aplikacija"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Izbriši sve"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Nedavne aplikacije"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Predložene aplikacije"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Sve aplikacije"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Vaše predviđene aplikacije"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Lako pristupite najčešće upotrebljavanim aplikacijama"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel predviđa koje će vam aplikacije trebati sljedeće na početnom zaslonu. Dodirnite da biste ih postavili."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Prikažite predložene aplikacije u donjem retku početnog zaslona"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Lako pristupite najčešće upotrebljavanim aplikacijama s početnog zaslona. Prijedlozi će se mijenjati na temelju vaših rutina. Aplikacije iz donjeg retka pomaknut će se na početni zaslon."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Lako pristupite najčešće upotrebljavanim aplikacijama s početnog zaslona. Prijedlozi će se mijenjati na temelju vaših rutina. Aplikacije iz donjeg retka pomaknut će se u novu mapu."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Nabavite predložene aplikacije"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Ne, hvala"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Postavke"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Ovdje se prikazuju najčešće upotrebljavane aplikacije i mijenjaju se na temelju rutina"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Povucite aplikacije u donjem retku da biste dobili predložene aplikacije"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Predložene aplikacije dodane u prazan prostor"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Predviđena aplikacija: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Udio"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Snimka zaslona"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Osztott képernyő"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Rögzítés"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Szabad forma"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Áttekintés"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Nincsenek mostanában használt elemek"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Bezárás"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Alkalmazáshasználati beállítások"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Összes törlése"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Legutóbbi alkalmazások"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Alkalmazásjavaslatok"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Az összes alkalmazás"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Várható alkalmazások"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Könnyedén hozzáférhet a leggyakrabban használt alkalmazásokhoz"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"A Pixel telefon kitalálja, melyik alkalmazásra lesz következőleg szüksége – egyenesen a kezdőképernyőn. Koppintson a beállításhoz."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Alkalmazásjavaslatokat kaphat a kezdőképernyő alsó sorában"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"A kezdőképernyőről könnyedén hozzáférhet a leggyakrabban használt alkalmazásokhoz. A javaslatok a rutinjai alapján változni fognak. Az alsó sorban lévő alkalmazások felkerülnek a kezdőképernyőre."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"A kezdőképernyőről könnyedén hozzáférhet a leggyakrabban használt alkalmazásokhoz. A javaslatok a rutinjai alapján változni fognak. Az alsó sorban lévő alkalmazások egy új mappába kerülnek."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Alkalmazásjavaslatok kérése"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Köszönöm, nem"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Beállítások"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"A leggyakrabban használt alkalmazások jelennek meg itt; a lista a rutinok alapján változhat"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Alkalmazásjavaslatok kéréséhez húzzon ki alkalmazásokat az alsó sorból"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Alkalmazásjavaslatok hozzáadva az üres területhez"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Várható alkalmazás: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Megosztás"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Képernyőkép"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Տրոհել էկրանը"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Ամրացնել"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Կամայական ձև"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Ընդհանուր տեղեկություններ"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Վերջին տարրեր չկան"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Փակել"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Հավելվածի օգտագործման կարգավորումներ"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Փակել բոլորը"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Վերջին օգտագործած հավելվածները"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Առաջարկվող հավելվածներ"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Բոլոր հավելվածները"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Ձեր կանխատեսված հավելվածները"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Արագ բացեք հաճախ օգտագործվող հավելվածները"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel-ը կանխատեսում է, թե որ հավելվածները կարող են ձեզ պետք լինել, և ցուցադրում է դրանք հիմնական էկրանին։ Հպեք՝ կարգավորելու համար։"</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Ստացեք հավելվածների առաջարկներ հիմնական էկրանի ներքևում"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Արագ բացեք հաճախ օգտագործվող հավելվածներն անմիջապես հիմնական էկրանից։ Առաջարկները կփոփոխվեն՝ կախված ձեր գործողություններից։ Ներքևում ցուցադրվող հավելվածները կտեղափոխվեն հիմնական էկրանի վերևի մաս։"</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Արագ բացեք հաճախ օգտագործվող հավելվածներն անմիջապես հիմնական էկրանից։ Առաջարկները կփոփոխվեն՝ կախված ձեր գործողություններից։ Ներքևում ցուցադրվող հավելվածները կտեղափոխվեն նոր պանակ։"</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Ստանալ հավելվածների առաջարկներ"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Ոչ, շնորհակալություն"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Կարգավորումներ"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Հաճախ օգտագործվող հավելվածները ցուցադրվում են այստեղ և փոփոխվում են ըստ ձեր գործողությունների հերթականության։"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Քաշեք հավելվածները ներքևի տողից՝ հավելվածների առաջարկները տեսնելու համար"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Առաջարկվող հավելվածներն ավելացվել են դատարկ տարածքում"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Առաջարկվող հավելված՝ <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Կիսվել"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Սքրինշոթ անել"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Layar terpisah"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Pasang pin"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Format bebas"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Ringkasan"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Tidak ada item yang baru dibuka"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Tutup"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Setelan penggunaan aplikasi"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Hapus semua"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Aplikasi baru-baru ini"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Saran aplikasi"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Semua aplikasi"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Aplikasi yang diprediksi"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Mudah mengakses aplikasi yang paling sering digunakan"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel memprediksi aplikasi yang akan diperlukan berikutnya, langsung di Layar utama. Ketuk untuk menyiapkan."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Dapatkan saran aplikasi di baris paling bawah Layar utama"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Mudah mengakses aplikasi yang paling sering digunakan, langsung di Layar utama. Saran akan berubah berdasarkan rutinitas Anda. Aplikasi di baris paling bawah akan berpindah ke atas pada Layar utama."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Mudah mengakses aplikasi yang paling sering digunakan, langsung di Layar utama. Saran akan berubah berdasarkan rutinitas Anda. Aplikasi di baris paling bawah akan berpindah ke folder baru."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Dapatkan saran aplikasi"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Lain kali"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Setelan"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Aplikasi yang paling sering digunakan muncul di sini, dan berubah berdasarkan rutinitas"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Tarik aplikasi dari baris paling bawah untuk mendapatkan saran aplikasi"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Saran aplikasi ditambahkan ke ruang kosong"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Aplikasi yang diprediksi: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Bagikan"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Screenshot"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Skipta skjá"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Festa"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Frjálst snið"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Yfirlit"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Engin nýleg atriði"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Loka"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Notkunarstillingar forrits"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Hreinsa allt"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Nýleg forrit"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Tillögur að forritum"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Öll forrit"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Spáð forrit"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Hafðu greiðan aðgang að forritunum sem þú notar mest"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel leggur til hvaða forrit þú þarft næst á heimaskjánum sjálfum. Ýttu til að setja upp."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Fáðu tillögur að forritum í neðstu röð heimaskjásins"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Nálgastu forritin sem þú notar mest auðveldlega á heimaskjánum. Tillögurnar breytast í samræmi við rútínurnar þínar. Forrit í neðstu röð færast upp á heimaskjáinn."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Nálgastu forritin sem þú notar mest auðveldlega á heimaskjánum. Tillögurnar breytast í samræmi við rútínurnar þínar. Forrit í neðstu röð færast í nýja möppu."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Fá tillögur að forritum"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Nei, takk"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Áfram"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Mest notuðu forritin birtast hér og breytast í samræmi við rútínur"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Dragðu forrit af neðstu röð til að fá tillögð forrit"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Tillögðum forritum bætt við autt svæði"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Tillaga að forriti: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Deila"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Skjámynd"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Schermo diviso"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Blocca"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Forma libera"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Panoramica"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Nessun elemento recente"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Chiudi"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Impostazioni di utilizzo delle app"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Cancella tutto"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"App recenti"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"App suggerite"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Tutte le app"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Le app previste"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Accedi facilmente alle app più utilizzate"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel prevede quali app userai e te le mostra sulla schermata Home. Tocca per configurare."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Visualizza app suggerite nella riga inferiore della schermata Home"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Accedi facilmente alle app più utilizzate direttamente dalla schermata Home. I suggerimenti varieranno in base alle tue routine. Le app nella riga inferiore verranno spostate più in alto sulla schermata Home."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Accedi facilmente alle app più utilizzate direttamente dalla schermata Home. I suggerimenti varieranno in base alle tue routine. Le app nella riga inferiore verranno spostate in una nuova cartella."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Visualizza app suggerite"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"No, grazie"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Impostazioni"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Le app più utilizzate vengono visualizzate qui e variano in base alle routine"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Trascina le app fuori dalla riga inferiore per visualizzare le app suggerite"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"App suggerite aggiunte a uno spazio vuoto"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"App prevista: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Condividi"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Screenshot"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"מסך מפוצל"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"הצמדה"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"מצב חופשי"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"מסכים אחרונים"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"אין פריטים אחרונים"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"סגירה"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"הגדרות שימוש באפליקציה"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"ניקוי הכול"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"אפליקציות אחרונות"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"הצעות לאפליקציות"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"כל האפליקציות"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"האפליקציות החזויות שלך"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"גישה נוחה לאפליקציות הכי נפוצות ממסך הבית."</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"ה-Pixel מפעיל חיזוי כדי לדעת מהן האפליקציות הבאות הנדרשות לך ומציג אותן במסך הבית. יש להקיש כדי להגדיר."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"קבלת הצעות לאפליקציות בשורה התחתונה של מסך הבית."</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"גישה נוחה לאפליקציות הכי נפוצות ישירות ממסך הבית. ההצעות ישתנו בהתאם להרגלי השימוש שלך. אפליקציות שמופיעות בשורה התחתונה יעברו למעלה למסך הבית."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"גישה נוחה לאפליקציות הכי נפוצות ישירות ממסך הבית. ההצעות ישתנו בהתאם להרגלי השימוש שלך. אפליקציות שמופיעות בשורה התחתונה יעברו למעלה למסך הבית."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"קבלת הצעות לאפליקציות"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"לא, תודה"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"הגדרות"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"רוב האפליקציות הכי נפוצות מופיעות כאן ומשתנות בהתאם להרגלי השימוש שלך"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"יש לגרור אפליקציות מהשורה התחתונה כדי לקבל הצעות לאפליקציות"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"הצעות לאפליקציות נוספו לאזור ריק"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"האפליקציות החזויות: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"שיתוף"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"צילום מסך"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"分割画面"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"固定"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"フリーフォーム"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"概要"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"最近のアイテムはありません"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"閉じる"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"アプリの使用状況の設定"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"すべてクリア"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"最近使ったアプリ"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"アプリの候補"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"すべてのアプリ"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"予測されたアプリ"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"使用頻度の高いアプリに簡単にアクセス"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel によって、次に必要なアプリが予測され、ホーム画面にすぐに表示されます。タップしてセットアップします。"</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"ホーム画面の一番下の行でアプリの候補を入手できます"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"使用頻度の高いアプリが、ホーム画面にすぐに表示され、簡単にアクセスできるようになります。アプリの候補はルーティンに応じて変わります。ホーム画面で一番下の行にあるアプリが上に移動します。"</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"使用頻度の高いアプリが、ホーム画面にすぐに表示され、簡単にアクセスできるようになります。アプリの候補はルーティンに応じて変わります。一番下の行にあるアプリが新しいフォルダに移動します。"</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"アプリの候補を入手"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"使用しない"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"設定"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"使用頻度の高いアプリがここに表示されます(ルーティンに応じて変わります)"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"一番下の行からアプリをドラッグしてアプリの候補を入手します"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"空いたスペースにアプリの候補が追加されます"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"予測されたアプリ: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"共有"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"スクリーンショット"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,16 +22,28 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"ეკრანის გაყოფა"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"ჩამაგრება"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"თავისუფალი ფორმა"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"მიმოხილვა"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"ბოლოს გამოყენებული ერთეულები არ არის"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"დახურვა"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"აპების გამოყენების პარამეტრები"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"ყველას გასუფთავება"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"ბოლოდროინდელი აპები"</string>
|
||||
<string name="task_contents_description_with_remaining_time" msgid="4479688746574672685">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="REMAINING_TIME">%2$s</xliff:g>"</string>
|
||||
<string name="shorter_duration_less_than_one_minute" msgid="4722015666335015336">"< 1 წუთი"</string>
|
||||
<string name="time_left_for_app" msgid="3111996412933644358">"დღეს დარჩენილია <xliff:g id="TIME">%1$s</xliff:g>"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"აპების შემოთავაზებები"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"აპის შემოთავაზებები"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"ყველა აპი"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"თქვენი პროგნოზირებული აპები"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"მარტივად იქონიეთ წვდომა ყველაზე ხშირად გამოყენებულ აპებზე"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel წინასწარმეტყველებს, თუ რომელი აპის გამოყენება დაგჭირდებათ შემდეგ ჯერზე, პირდაპირ მთავარი ეკრანიდან. შეეხეთ დასაყენებლად."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"მიიღეთ აპის შეთავაზებები მთავარი ეკრანის ქვედა რიგში"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"მარტივად იქონიეთ ყველაზე ხშირად გამოყენებულ აპებზე წვდომა მთავარი ეკრანიდან. შეთავაზებები შეიცვლება თქვენი რუტინების მიხედვით. მოხდება ქვედა რიგში არსებული აპების მთავარ ეკრანზე გადატანა."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"მარტივად იქონიეთ ყველაზე ხშირად გამოყენებულ აპებზე წვდომა მთავარი ეკრანიდან. შეთავაზებები შეიცვლება თქვენი რუტინების მიხედვით. მოხდება ქვედა რიგში არსებული აპების ახალ საქაღალდეში გადატანა."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"აპის შეთავაზებების მიღება"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"არა, გმადლობთ"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"პარამეტრები"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"ყველაზე ხშირად გამოყენებული აპები აქ ჩანს და ცვალებადობს რუტინების მიხედვით"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"გადაიტანეთ აპები ეკრანის ქვედა რიგში, რათა აპის შეთავაზებები მიიღოთ"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"აპის შეთავაზებები დამატებულია ცარიელ სივრცეში"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"ნაწინასწარმეტყველები აპი: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"გაზიარება"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"ეკრანის ანაბეჭდი"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,16 +22,28 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Экранды бөлу"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Бекіту"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Еркін форма"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Шолу"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Соңғы элементтер жоқ"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Жабу"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Қолданбаны пайдалану параметрлері"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Барлығын өшіру"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Соңғы пайдаланылған қолданбалар"</string>
|
||||
<string name="task_contents_description_with_remaining_time" msgid="4479688746574672685">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="REMAINING_TIME">%2$s</xliff:g>"</string>
|
||||
<string name="shorter_duration_less_than_one_minute" msgid="4722015666335015336">"< 1 мин"</string>
|
||||
<string name="time_left_for_app" msgid="3111996412933644358">"Бүгін <xliff:g id="TIME">%1$s</xliff:g> қалды"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Қолданба ұсыныстары"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Ұсынылған қолданбалар"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Барлық қолданбалар"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Ұсынылатын қолданбалар"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Жиі пайдаланылатын қолданбаларға оңай кіру"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel сізге қажет болуы мүмкін қолданбаларды болжап, оларды негізгі экранда көрсетеді. Реттеу үшін түртіңіз."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Негізгі экранның төменгі жолында ұсынылған қолданбаларды алу"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Жиі пайдаланылатын қолданбаларға негізгі экраннан оңай кіріңіз. Ұсыныстар әрекеттер тізімі негізінде өзгереді. Төменгі жолдағы қолданбалар негізгі экраныңызға қарай жоғары жылжиды."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Жиі пайдаланылатын қолданбаларға негізгі экраннан оңай кіріңіз. Ұсыныстар әрекеттер тізімі негізінде өзгереді. Төмендегі қолданбалар жаңа қалтаға жылжиды."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Ұсынылған қолданбаларды көру"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Жоқ, рақмет"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Параметрлер"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Жиі пайдаланылатын қолданбалар осы жерде көрсетіледі және әрекеттер тізімі негізінде өзгереді."</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Ұсынылған қолданбаларды алу үшін қолданбаларды төменгі жолдан жылжытыңыз."</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Ұсынылған қолданбалар бос орынға қосылды."</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Болжалды қолданба: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Бөлісу"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Скриншот"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"មុខងារបំបែកអេក្រង់"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"ដៅ"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"មុខងារទម្រង់សេរី"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"ទិដ្ឋភាពរួម"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"មិនមានធាតុថ្មីៗទេ"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"បិទ"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"ការកំណត់ការប្រើប្រាស់កម្មវិធី"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"សម្អាតទាំងអស់"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"កម្មវិធីថ្មីៗ"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"ការណែនាំកម្មវិធី"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"កម្មវិធីទាំងអស់"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"កម្មវិធីដែលបានព្យាកររបស់អ្នក"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"ចូលប្រើកម្មវិធីដែលអ្នកប្រើញឹកញាប់បំផុតបានយ៉ាងងាយស្រួល"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel ព្យាករកម្មវិធីដែលអ្នកនឹងត្រូវការបន្ទាប់ នៅលើអេក្រង់ដើមរបស់អ្នកផ្ទាល់។ ចុចដើម្បីរៀបចំ។"</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"ទទួលបានការណែនាំកម្មវិធីនៅជួរខាងក្រោមនៃអេក្រង់ដើមរបស់អ្នក"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"ចូលប្រើកម្មវិធីដែលអ្នកប្រើញឹកញាប់បំផុតបានយ៉ាងងាយស្រួលនៅលើអេក្រង់ដើមផ្ទាល់។ ការណែនាំនឹងប្រែប្រួលទៅតាមទម្លាប់របស់អ្នក។ កម្មវិធីនៅជួរខាងក្រោមនឹងផ្លាស់ទីឡើងទៅអេក្រង់ដើមរបស់អ្នក។"</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"ចូលប្រើកម្មវិធីដែលអ្នកប្រើញឹកញាប់បំផុតបានយ៉ាងងាយស្រួលនៅលើអេក្រង់ដើមផ្ទាល់។ ការណែនាំនឹងប្រែប្រួលទៅតាមទម្លាប់របស់អ្នក។ កម្មវិធីនៅជួរខាងក្រោមនឹងផ្លាស់ទីទៅថតថ្មី។"</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"ទទួលបានការណែនាំកម្មវិធី"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"ទេ អរគុណ"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"ការកំណត់"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"កម្មវិធីដែលប្រើញឹកញាប់បំផុតបង្ហាញនៅទីនេះ និងប្រែប្រួលទៅតាមទម្លាប់"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"អូសកម្មវិធីចេញពីជួរខាងក្រោម ដើម្បីទទួលបានការណែនាំកម្មវិធី"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"បានបញ្ចូលការណែនាំកម្មវិធីទៅក្នុងកន្លែងទំនេរ"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"កម្មវិធីដែលបានព្យាករ៖ <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"ចែករំលែក"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"រូបថតអេក្រង់"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"ಪರದೆಯನ್ನು ಬೇರ್ಪಡಿಸಿ"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"ಪಿನ್ ಮಾಡಿ"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"ಮುಕ್ತಸ್ವರೂಪ"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"ಅವಲೋಕನ"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"ಯಾವುದೇ ಇತ್ತೀಚಿನ ಐಟಂಗಳಿಲ್ಲ"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"ಮುಚ್ಚಿ"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"ಆ್ಯಪ್ ಬಳಕೆಯ ಸೆಟ್ಟಿಂಗ್ಗಳು"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"ಎಲ್ಲವನ್ನೂ ತೆರವುಗೊಳಿಸಿ"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"ಇತ್ತೀಚಿನ ಅಪ್ಲಿಕೇಶನ್ಗಳು"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"ಆ್ಯಪ್ ಸಲಹೆಗಳು"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"ಎಲ್ಲಾ ಆ್ಯಪ್ಗಳು"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"ನಿಮ್ಮ ಸಂಭವನೀಯ ಆ್ಯಪ್ಗಳು"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"ನೀವು ಹೆಚ್ಚು ಬಳಸಿದ ಆ್ಯಪ್ಗಳನ್ನು ಸುಲಭವಾಗಿ ಪ್ರವೇಶಿಸಿ"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"ನಿಮ್ಮ ಹೋಮ್ ಸ್ಕ್ರೀನ್ನಲ್ಲಿಯೇ ನಿಮಗೆ ಮುಂದೆ ಅಗತ್ಯವಿರುವ ಆ್ಯಪ್ಗಳ ಕುರಿತು Pixel ಮುನ್ಸೂಚನೆ ನೀಡುತ್ತದೆ. ಸೆಟಪ್ ಮಾಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"ನಿಮ್ಮ ಹೋಮ್ ಸ್ಕ್ರೀನ್ನ ಕೆಳಭಾಗದ ಸಾಲಿನಲ್ಲಿ ಆ್ಯಪ್ ಸಲಹೆಗಳನ್ನು ಪಡೆಯಿರಿ"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"ಹೋಮ್ ಸ್ಕ್ರೀನ್ನಲ್ಲಿಯೇ ನೀವು ಹೆಚ್ಚು ಬಳಸಿದ ಆ್ಯಪ್ಗಳನ್ನು ಸುಲಭವಾಗಿ ಪ್ರವೇಶಿಸಿ. ನಿಮ್ಮ ದಿನಚರಿಯನ್ನು ಆಧರಿಸಿ ಸಲಹೆಗಳು ಬದಲಾಗುತ್ತವೆ. ಕೆಳಭಾಗದ ಸಾಲಿನಲ್ಲಿನ ಆ್ಯಪ್ಗಳು ನಿಮ್ಮ ಹೋಮ್ ಸ್ಕ್ರೀನ್ ಚಲಿಸುತ್ತವೆ."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"ಹೋಮ್ ಸ್ಕ್ರೀನ್ನಲ್ಲಿಯೇ ನೀವು ಹೆಚ್ಚು ಬಳಸಿದ ಆ್ಯಪ್ಗಳನ್ನು ಸುಲಭವಾಗಿ ಪ್ರವೇಶಿಸಿ. ನಿಮ್ಮ ದಿನಚರಿಯನ್ನು ಆಧರಿಸಿ ಸಲಹೆಗಳು ಬದಲಾಗುತ್ತವೆ. ಕೆಳಭಾಗದ ಸಾಲಿನಲ್ಲಿನ ಆ್ಯಪ್ಗಳು ಹೊಸ ಫೋಲ್ಡರ್ಗೆ ಚಲಿಸುತ್ತವೆ."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"ಆ್ಯಪ್ ಸಲಹೆಗಳನ್ನು ಪಡೆಯಿರಿ"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"ಬೇಡ"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"ಹೆಚ್ಚು ಬಳಸಿದ ಆ್ಯಪ್ಗಳು ಇಲ್ಲಿ ಕಾಣಿಸುತ್ತವೆ ಮತ್ತು ದಿನಚರಿಯನ್ನು ಆಧರಿಸಿ ಬದಲಾಗುತ್ತದೆ"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"ಆ್ಯಪ್ ಸಲಹೆಗಳನ್ನು ಪಡೆಯಲು, ಆ್ಯಪ್ಗಳನ್ನು ಕೆಳಭಾಗದ ಸಾಲಿನಿಂದ ಡ್ರ್ಯಾಗ್ ಮಾಡಿ"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"ಆ್ಯಪ್ ಸಲಹೆಗಳನ್ನು ಖಾಲಿ ಸ್ಥಳಕ್ಕೆ ಸೇರಿಸಲಾಗಿದೆ"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"ಶಿಫಾರಸು ಮಾಡಿದ ಆ್ಯಪ್: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"ಹಂಚಿಕೊಳ್ಳಿ"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"ಸ್ಕ್ರೀನ್ಶಾಟ್"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,16 +22,28 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"화면 분할"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"고정"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"자유 형식"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"최근 사용"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"최근 항목이 없습니다."</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"닫기"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"앱 사용 설정"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"모두 삭제"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"최근 앱"</string>
|
||||
<string name="task_contents_description_with_remaining_time" msgid="4479688746574672685">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="REMAINING_TIME">%2$s</xliff:g>"</string>
|
||||
<string name="shorter_duration_less_than_one_minute" msgid="4722015666335015336">"< 1분"</string>
|
||||
<string name="time_left_for_app" msgid="3111996412933644358">"오늘 <xliff:g id="TIME">%1$s</xliff:g> 남음"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"앱 추천"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"앱 제안"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"모든 앱"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"추천 앱"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"가장 많이 사용한 앱에 간편하게 액세스"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel에서 다음번에 사용할 앱을 예상하여 홈 화면에 바로 표시해 줍니다. 설정하려면 탭하세요."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"홈 화면 하단 행에서 앱 제안을 확인하세요."</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"홈 화면에서 가장 많이 사용한 앱에 바로 액세스할 수 있습니다. 제안은 루틴에 따라 달라집니다. 하단 행의 앱이 홈 화면으로 이동합니다."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"홈 화면에서 가장 많이 사용한 앱에 바로 액세스할 수 있습니다. 제안은 루틴에 따라 달라집니다. 하단 행의 앱이 새로운 폴더로 이동합니다."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"앱 제안받기"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"나중에"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"설정"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"가장 많이 사용한 앱이 여기에 표시되며 루틴에 따라 달라짐"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"하단 행에서 앱을 드래그하여 앱 제안 받기"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"빈 공간에 앱 제안 추가됨"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"예상 앱: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"공유"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"스크린샷"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,16 +22,28 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Экранды бөлүү"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Кадап коюу"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Эркин форма режими"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Сереп салуу"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Акыркы колдонмолор жок"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Жабуу"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Колдонмону пайдалануу жөндөөлөрү"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Баарын тазалоо"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Акыркы колдонмолор"</string>
|
||||
<string name="task_contents_description_with_remaining_time" msgid="4479688746574672685">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="REMAINING_TIME">%2$s</xliff:g>"</string>
|
||||
<string name="shorter_duration_less_than_one_minute" msgid="4722015666335015336">"< 1 мүнөт"</string>
|
||||
<string name="time_left_for_app" msgid="3111996412933644358">"Бүгүн <xliff:g id="TIME">%1$s</xliff:g> мүнөт калды"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Колдонмо сунуштары"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Сунушталган колдонмолор"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Бардык колдонмолор"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Божомолдонгон колдонмолоруңуз"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Көп иштетилген колдонмолорго оңой кириңиз"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel кийинки керектелүүчү колдонмолорду Башкы экраныңызда божомолдоп, сунуштап турат. Жөндөө үчүн таптап коюңуз."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Сунушталган колдонмолорду Башкы экрандын ылдый жагында жайгашкан тилкесинде көрүңүз"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Көп иштетилген колдонмолорго Башкы экрандан оңой кириңиз. Сунуштар тартиптин негизинде өзгөрөт. Төмөндө жайгашкан тилкедеги колдонмолор Башкы экраныңызга көтөрүлөт."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Көп иштетилген колдонмолорго Башкы экрандан оңой кириңиз. Сунуштар тартиптин негизинде өзгөрөт. Ылдый жакта жайгашкан тилкедеги колдонмолор жаңы папкага жылдырылат."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Сунушталган колдонолорду алуу"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Жок, рахмат"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Жөндөөлөр"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Көп иштетилген колдонмолор ушул жерде көрүнүп, тартиптин негизинде өзгөрөт"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Сунушталган колдонмолорду көрүү үчүн ылдый жакта жайгашкан тилкедеги колдонмолорду сүрүп салыңыз"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Сунушталган колдонмолор бош жерге кошулат"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Божомолдонгон колдонмо: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Бөлүшүү"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Скриншот"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Skaidyti ekraną"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Prisegti"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Laisva forma"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Apžvalga"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Nėra jokių naujausių elementų"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Uždaryti"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Programos naudojimo nustatymai"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Išvalyti viską"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Naujausios programos"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Programų pasiūlymai"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Visos programos"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Numatomos programos"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Lengvai pasiekite dažniausiai naudojamas programas"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"„Pixel“ numato, kurių programų jums gali reikėti vėliau, ir sudeda jas iškart pagrindiniame ekrane. Palieskite, kad nustatytumėte."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Gaukite programų pasiūlymų apatinėje pagrindinio ekrano eilutėje"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Lengvai pasiekite dažniausiai naudojamas programas iškart pagrindiniame ekrane. Pasiūlymai keisis atsižvelgiant į tai, kaip jas naudojate. Apatinėje eilutėje esančios programos bus perkeltos į pagrindinį ekraną."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Lengvai pasiekite dažniausiai naudojamas programas iškart pagrindiniame ekrane. Pasiūlymai keisis atsižvelgiant į tai, kaip jas naudojate. Apatinėje eilutėje esančios programos bus perkeltos į naują aplanką."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Gauti programų pasiūlymų"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Ne, ačiū"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Nustatymai"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Dažniausiai naudojamos programos rodomos čia ir keičiasi pagal tai, kaip jas naudojate"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Nuvilkę programas į apatinę eilutę gausite programų pasiūlymų"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Programų pasiūlymai pridedami tuščioje vietoje"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Numatoma programa: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Bendrinti"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Ekrano kopija"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Sadalīt ekrānu"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Piespraust"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Brīva forma"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Pārskats"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Nav nesenu vienumu."</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Aizvērt"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Lietotņu izmantošanas iestatījumi"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Notīrīt visu"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Pēdējās izmantotās lietotnes"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Ieteicamās lietotnes"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Visas lietotnes"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Jūsu prognozētās lietotnes"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Ērta piekļuve visbiežāk izmantotajām lietotnēm"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel tālruņa sākuma ekrānā tiek prognozēts, kuras lietotnes jūs izmantosiet nākamās. Pieskarieties, lai to iestatītu."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Sākuma ekrāna apakšējā rindā tiks rādītas ieteicamās lietotnes"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Varat sākuma ekrānā ērti piekļūt savām visbiežāk izmantotajām lietotnēm. Ieteikumi mainīsies atkarībā no jūsu paradumiem. Apakšējā rindā esošās lietotnes tiks pārvietotas uz augšu — uz sākuma ekrānu."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Varat sākuma ekrānā ērti piekļūt savām visbiežāk izmantotajām lietotnēm. Ieteikumi mainīsies atkarībā no jūsu paradumiem. Apakšējā rindā esošās lietotnes tiks pārvietotas uz jaunu mapi."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Rādīt ieteicamās lietotnes"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Nē, paldies"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Iestatījumi"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Šeit tiek rādītas visbiežāk izmantotās lietotnes, un tās mainās atkarībā no jūsu paradumiem"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Lai skatītu ieteicamās lietotnes, velciet lietotnes prom no apakšējās rindas"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Ieteicamās lietotnes tika pievienotas tukšajā vietā"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Prognozētā lietotne: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Kopīgot"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Izveidot ekrānuzņēmumu"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,11 +22,9 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Поделен екран"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Прикачување"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Freeform"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Преглед"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Нема неодамнешни ставки"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Затвори"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Поставки за користење на апликациите"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Исчисти ги сите"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Избриши ги сите"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Неодамнешни апликации"</string>
|
||||
<string name="task_contents_description_with_remaining_time" msgid="4479688746574672685">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="REMAINING_TIME">%2$s</xliff:g>"</string>
|
||||
<string name="shorter_duration_less_than_one_minute" msgid="4722015666335015336">"< 1 минута"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Предлози за апликации"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Сите апликации"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Вашите предвидени апликации"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Лесно пристапувајте до најкористените апликации"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel предвидува кои апликации ќе ви требаат следно, директно на почетниот екран. Допрете за поставување."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Добивајте предлози за апликации на долниот ред од почетниот екран"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Лесно пристапувајте до најкористените апликации директно на почетниот екран. Предлозите ќе се менуваат според рутините. Апликациите од последниот ред ќе се поместуваат нагоре до почетниот екран."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Лесно пристапувајте до најкористените апликации директно на почетниот екран. Предлозите ќе се менуваат според рутините. Апликациите од последниот ред ќе се преместуваат во нова папка."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Добивајте предлози за апликации"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Не, фала"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Поставки"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Најкористените апликации се појавуваат тука и се менуваат според рутините"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Отстранете апликации од долниот ред со повлекување за да добивате предлози за апликации"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Предлозите за апликации се додадени во празен простор"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Предвидена апликација: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Сподели"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Слика од екранот"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"സ്ക്രീൻ വിഭജിക്കുക"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"പിൻ ചെയ്യുക"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"ഫ്രീഫോം"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"അവലോകനം"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"സമീപകാല ഇനങ്ങൾ ഒന്നുമില്ല"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"അവസാനിപ്പിക്കുക"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"ആപ്പ് ഉപയോഗ ക്രമീകരണം"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"എല്ലാം മായ്ക്കുക"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"സമീപകാല ആപ്പുകൾ"</string>
|
||||
@@ -34,4 +32,32 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"ആപ്പ് നിർദ്ദേശങ്ങൾ"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"എല്ലാ ആപ്പുകളും"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"നിങ്ങളുടെ പ്രവചിക്കപ്പെട്ട ആപ്പുകൾ"</string>
|
||||
<!-- no translation found for hotseat_edu_prompt_title (5595771595144175752) -->
|
||||
<skip />
|
||||
<!-- no translation found for hotseat_edu_prompt_content (5709176001504149521) -->
|
||||
<skip />
|
||||
<!-- no translation found for hotseat_edu_title_migrate (306578144424489980) -->
|
||||
<skip />
|
||||
<!-- no translation found for hotseat_edu_message_migrate (8927179260533775320) -->
|
||||
<skip />
|
||||
<!-- no translation found for hotseat_edu_message_migrate_alt (3042360119039646356) -->
|
||||
<skip />
|
||||
<!-- no translation found for hotseat_edu_accept (1611544083278999837) -->
|
||||
<skip />
|
||||
<!-- no translation found for hotseat_edu_dismiss (2781161822780201689) -->
|
||||
<skip />
|
||||
<!-- no translation found for hotseat_turn_off (7808360330229368470) -->
|
||||
<skip />
|
||||
<!-- no translation found for hotseat_auto_enrolled (522100018967146807) -->
|
||||
<skip />
|
||||
<!-- no translation found for hotseat_tip_no_empty_slots (1325212677738179185) -->
|
||||
<skip />
|
||||
<!-- no translation found for hotseat_tip_gaps_filled (3035673010274223538) -->
|
||||
<skip />
|
||||
<!-- no translation found for hotseat_prediction_content_description (4582028296938078419) -->
|
||||
<skip />
|
||||
<!-- no translation found for action_share (2648470652637092375) -->
|
||||
<skip />
|
||||
<!-- no translation found for action_screenshot (8171125848358142917) -->
|
||||
<skip />
|
||||
</resources>
|
||||
|
||||
@@ -22,16 +22,28 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Дэлгэцийг хуваах"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Тогтоох"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Чөлөөтэй хувьсах"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Тойм"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Сүүлийн үеийн зүйл алга"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Хаах"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Апп ашиглалтын тохиргоо"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Бүгдийг устгах"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Саяхны аппууд"</string>
|
||||
<string name="task_contents_description_with_remaining_time" msgid="4479688746574672685">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="REMAINING_TIME">%2$s</xliff:g>"</string>
|
||||
<string name="shorter_duration_less_than_one_minute" msgid="4722015666335015336">"< 1 минут"</string>
|
||||
<string name="time_left_for_app" msgid="3111996412933644358">"Өнөөдөр <xliff:g id="TIME">%1$s</xliff:g> үлдсэн"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Аппын зөвлөмж"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Санал болгож буй аппууд"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Бүх апп"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Таны таамагласан аппууд"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Хамгийн их ашигладаг аппууддаа хялбархан хандаарай"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel утас танд дараагийн удаа хэрэг болох аппуудыг таамаглаж, таны Үндсэн нүүрэнд харуулна. Тохируулахын тулд товшино уу."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Үндсэн нүүрнийхээ доод мөр дээр санал болгож буй аппуудыг аваарай"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Хамгийн их ашигладаг аппууддаа Үндсэн нүүрээс хялбархан хандаарай. Санал болгож буй аппуудыг таны хэвшлээс хамаарч өөрчилнө. Доод мөр дэх аппуудыг таны Үндсэн нүүр лүү дээш зөөнө."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Хамгийн их ашигладаг аппууддаа Үндсэн нүүрээс хялбархан хандаарай. Санал болгож буй аппуудыг таны хэвшлээс хамаарч өөрчилнө. Доод мөр дэх аппуудыг шинэ фолдер луу зөөнө."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Санал болгож буй аппуудыг авах"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Үгүй, баярлалаа"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Тохиргоо"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Хамгийн их ашигладаг аппуудыг энд харуулах бөгөөд хэвшлээс хамаарч өөрчилдөг"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Санал болгож буй аппуудыг авахын тулд доод мөрөөс аппуудыг чирж гаргаарай"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Санал болгож буй аппуудыг хоосон зайд нэмсэн"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Таамаглаж буй апп: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Хуваалцах"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Дэлгэцийн агшин дарах"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"विभाजित स्क्रीन"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"पिन करा"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"फ्रीफॉर्म"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"अवलोकन"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"कोणतेही अलीकडील आयटम नाहीत"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"बंद"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"अॅप वापर सेटिंग्ज"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"सर्व साफ करा"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"अलीकडील अॅप्स"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"अॅप सूचना"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"सर्व अॅप्स"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"तुमची पूर्वानुमानीत अॅप्स"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"तुमची सर्वाधिक वापरली जाणारी अॅप्स सहजपणे अॅक्सेस करा"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"तुमच्या होम स्क्रीनवरच, Pixel तुम्हाला पुढे लागणार असलेल्या अॅप्सचे पूर्वानुमान करते. सेट करण्यासाठी टॅप करा."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"तुमच्या होम स्क्रीनच्या तळाच्या पंक्तीवर अॅप सूचना मिळवा"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"तुमची सर्वाधिक वापरली जाणारी अॅप्स होम स्क्रीनवरच सहजपणे अॅक्सेस करा. सूचना तुमच्या दिनक्रमांच्या आधारावर बदलतील. तळाच्या पंक्तीवरील अॅप्स तुमच्या होम स्क्रीनवर जातील."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"तुमची सर्वाधिक वापरली जाणारी अॅप्स होम स्क्रीनवरच सहजपणे अॅक्सेस करा. सूचना तुमच्या दिनक्रमांच्या आधारावर बदलतील. तळाच्या पंक्तीवरील अॅप्स नवीन फोल्डरवर जातील."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"अॅप सूचना मिळवा"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"नाही, नको"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"सेटिंग्ज"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"सर्वाधिक वापरली जाणारी अॅप्स येथे दिसतात आणि दिनक्रमांच्या आधारावर बदलतात"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"अॅप सूचना मिळवण्यासाठी तळाच्या पंक्तीवरून अॅप्स ड्रॅग करा"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"रिकाम्या जागेवर जोडलेल्या अॅप सूचना"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"पूर्वानुमान केलेले अॅप: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"शेअर करा"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"स्क्रीनशॉट"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Skrin pisah"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Semat"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Bentuk bebas"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Ikhtisar"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Tiada item terbaharu"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Tutup"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Tetapan penggunaan apl"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Kosongkan semua"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Apl terbaharu"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Cadangan apl"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Semua apl"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Apl ramalan anda"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Akses apl yang paling kerap anda gunakan dengan mudah"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel meramalkan apl yang anda perlukan seterusnya, terus pada Skrin utama anda. Ketik untuk membuat persediaan."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Dapatkan cadangan apl di baris bawah Skrin utama anda"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Akses apl yang paling kerap anda gunakan dengan mudah pada Skrin utama. Cadangan akan berubah berdasarkan rutin anda. Apl di baris bawah akan beralih ke atas, ke Skrin utama anda."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Akses apl yang paling kerap anda gunakan dengan mudah, terus pada Skrin utama. Cadangan akan berubah berdasarkan rutin anda. Apl di baris bawah akan beralih ke folder baharu."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Dapatkan cadangan apl"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Tidak perlu"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Tetapan"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Apl yang paling kerap digunakan dipaparkan di sini dan berubah berdasarkan rutin"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Seret apl keluar dari baris bawah untuk mendapatkan cadangan apl"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Cadangan apl ditambahkan pada ruang kosong"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Apl yang diramalkan: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Kongsi"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Tangkapan skrin"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"မျက်နှာပြင် ခွဲ၍ပြသခြင်း"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"ပင်ထိုးခြင်း"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"အလွတ်ပုံစံ"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"အနှစ်ချုပ်"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"မကြာမီကဖွင့်ထားသည်များ မရှိပါ"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"ပိတ်ရန်"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"အက်ပ်အသုံးပြုမှု ဆက်တင်များ"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"အားလုံးကို ရှင်းရန်"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"လတ်တလောသုံး အက်ပ်များ"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"အက်ပ်အကြံပြုချက်များ"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"အက်ပ်အားလုံး"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"သင်၏ ခန့်မှန်းအက်ပ်များ"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"အသုံးအများဆုံးအက်ပ်များကို အလွယ်တကူ သုံးခြင်း"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel က သင်၏ \'ပင်မစာမျက်နှာ\' တွင် နောင်တွင်သင်လိုအပ်မည့် အက်ပ်များကို ကြိုတင်မှန်းဆပါသည်။ စနစ်ထည့်သွင်းရန် တို့ပါ။"</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"သင်၏ \'ပင်မစာမျက်နှာ\' အောက်ခြေအတန်းတွင် အက်ပ်အကြံပြုချက်များ ရယူခြင်း"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"အသုံးအများဆုံးအက်ပ်များကို \'ပင်မစာမျက်နှာ\' တွင် အလွယ်တကူ သုံးနိုင်သည်။ သင်၏ ပုံမှန်အစီအစဉ်များပေါ် အခြေခံ၍ အကြံပြုချက်များ ပြောင်းလဲပါမည်။ အောက်ခြေအတန်းရှိ အက်ပ်များကို သင်၏ \'ပင်မစာမျက်နှာ\' သို့ရွှေ့လိုက်မည်။"</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"အသုံးအများဆုံးအက်ပ်များကို \'ပင်မစာမျက်နှာ\' တွင် အလွယ်တကူ သုံးနိုင်သည်။ သင်၏ ပုံမှန်အစီအစဉ်များပေါ် အခြေခံ၍ အကြံပြုချက်များ ပြောင်းလဲပါမည်။ အောက်ခြေအတန်းရှိ အက်ပ်များကို ဖိုင်တွဲအသစ်သို့ ရွှေ့လိုက်မည်။"</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"အက်ပ်အကြံပြုချက်များ ရယူရန်"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"မလိုပါ"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"ဆက်တင်များ"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"အသုံးအများဆုံးအက်ပ်များကို ဤနေရာတွင် ပြပြီး ပုံမှန်အစီအစဉ်များပေါ် အခြေခံ၍ ပြောင်းလဲသည်"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"အက်ပ်အကြံပြုချက်များ ရယူရန် အောက်ခြေအတန်းရှိ အက်ပ်များကို ဖိဆွဲထုတ်လိုက်ပါ"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"အက်ပ်အကြံပြုချက်များကို နေရာလွတ်သို့ ထည့်လိုက်သည်"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"ကြိုတင်မှန်းဆထားသော အက်ပ်− <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"မျှဝေရန်"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"ဖန်သားပြင်ဓာတ်ပုံ"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Delt skjerm"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Fest"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Fritt format"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Oversikt"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Ingen nylige elementer"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Lukk"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Innstillinger for appbruk"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Fjern alt"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Nylige apper"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Appanbefalinger"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Alle apper"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Forslag til apper"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Få enkel tilgang til appene du bruker oftest"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel foreslår de neste appene du trenger, rett på startskjermen. Trykk for å konfigurere."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Få appforslag i den nederste raden på startskjermen"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Få enkel tilgang til appene du bruker oftest, rett fra startskjermen. Forslagene endres basert på rutinene dine. Appene i den nederste raden flyttes opp til startskjermen."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Få enkel tilgang til appene du bruker oftest, rett fra startskjermen. Forslagene endres basert på rutinene dine. Appene i den nederste raden flyttes til en ny mappe."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Få appforslag"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Nei takk"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Innstillinger"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Appene som brukes oftest, vises her og endres basert på rutiner"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Dra appene vekk fra den nederste raden for å få appforslag."</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Appforslag er lagt til på et tomt område"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Foreslått app: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Del"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Skjermdump"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"स्क्रिन विभाजन गर्नुहोस्"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"पिन गर्नुहोस्"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"फ्रिफर्म"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"परिदृश्य"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"हालसालैको कुनै पनि वस्तु छैन"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"बन्द गर्नुहोस्"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"अनुप्रयोगको उपयोगका सेटिङहरू"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"सबै खाली गर्नुहोस्"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"हालसालैका अनुप्रयोगहरू"</string>
|
||||
@@ -34,4 +32,32 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"अनुप्रयोगसम्बन्धी सुझावहरू"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"सबै अनुप्रयोगहरू"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"तपाईंका पूर्वानुमानित अनुप्रयोगहरू"</string>
|
||||
<!-- no translation found for hotseat_edu_prompt_title (5595771595144175752) -->
|
||||
<skip />
|
||||
<!-- no translation found for hotseat_edu_prompt_content (5709176001504149521) -->
|
||||
<skip />
|
||||
<!-- no translation found for hotseat_edu_title_migrate (306578144424489980) -->
|
||||
<skip />
|
||||
<!-- no translation found for hotseat_edu_message_migrate (8927179260533775320) -->
|
||||
<skip />
|
||||
<!-- no translation found for hotseat_edu_message_migrate_alt (3042360119039646356) -->
|
||||
<skip />
|
||||
<!-- no translation found for hotseat_edu_accept (1611544083278999837) -->
|
||||
<skip />
|
||||
<!-- no translation found for hotseat_edu_dismiss (2781161822780201689) -->
|
||||
<skip />
|
||||
<!-- no translation found for hotseat_turn_off (7808360330229368470) -->
|
||||
<skip />
|
||||
<!-- no translation found for hotseat_auto_enrolled (522100018967146807) -->
|
||||
<skip />
|
||||
<!-- no translation found for hotseat_tip_no_empty_slots (1325212677738179185) -->
|
||||
<skip />
|
||||
<!-- no translation found for hotseat_tip_gaps_filled (3035673010274223538) -->
|
||||
<skip />
|
||||
<!-- no translation found for hotseat_prediction_content_description (4582028296938078419) -->
|
||||
<skip />
|
||||
<!-- no translation found for action_share (2648470652637092375) -->
|
||||
<skip />
|
||||
<!-- no translation found for action_screenshot (8171125848358142917) -->
|
||||
<skip />
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Gesplitst scherm"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Vastzetten"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Vrije vorm"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Overzicht"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Geen recente items"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Sluiten"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Instellingen voor app-gebruik"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Alles wissen"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Recente apps"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"App-suggesties"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Alle apps"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Je voorspelde apps"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Eenvoudig toegang tot je meestgebruikte apps"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel voorspelt welke apps je als volgende nodig hebt en geeft ze weer op je startscherm. Tik om dit in te stellen."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"App-suggesties ontvangen op de onderste rij van je startscherm"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Open je meestgebruikte apps gemakkelijk vanaf het startscherm. De suggesties veranderen op basis van je routines. Apps op de onderste rij worden naar je startscherm verplaatst."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Open je meestgebruikte apps gemakkelijk vanaf het startscherm. De suggesties veranderen op basis van je routines. Apps op de onderste rij worden naar een nieuwe map verplaatst."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"App-suggesties ontvangen"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Nee"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Instellingen"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"De meestgebruikte apps worden hier weergegeven en kunnen veranderen op basis van je routines"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Sleep apps weg van de onderste rij om app-suggesties te ontvangen"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"App-suggesties toegevoegd aan lege ruimte"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Voorspelde app: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Delen"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Screenshot"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"ସ୍କ୍ରୀନ୍କୁ ଭାଗ କରନ୍ତୁ"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"ପିନ୍"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"ଫ୍ରିଫର୍ମ"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"ସଂକ୍ଷିପ୍ତ ବିବରଣ"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"କୌଣସି ସାମ୍ପ୍ରତିକ ଆଇଟମ୍ ନାହିଁ"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"ବନ୍ଦ କରନ୍ତୁ"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"ଆପ୍ ବ୍ୟବହାର ସେଟିଂସ୍"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"ସବୁ ଖାଲି କରନ୍ତୁ"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"ବର୍ତ୍ତମାନର ଆପ୍"</string>
|
||||
@@ -34,4 +32,32 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"ଆପ୍ ପରାମର୍ଶଗୁଡ଼ିକ"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"ସମସ୍ତ ଆପ୍ସ"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"ଆପଣ ପୂର୍ବାନୁମାନ କରିଥିବା ଆପ୍ସ"</string>
|
||||
<!-- no translation found for hotseat_edu_prompt_title (5595771595144175752) -->
|
||||
<skip />
|
||||
<!-- no translation found for hotseat_edu_prompt_content (5709176001504149521) -->
|
||||
<skip />
|
||||
<!-- no translation found for hotseat_edu_title_migrate (306578144424489980) -->
|
||||
<skip />
|
||||
<!-- no translation found for hotseat_edu_message_migrate (8927179260533775320) -->
|
||||
<skip />
|
||||
<!-- no translation found for hotseat_edu_message_migrate_alt (3042360119039646356) -->
|
||||
<skip />
|
||||
<!-- no translation found for hotseat_edu_accept (1611544083278999837) -->
|
||||
<skip />
|
||||
<!-- no translation found for hotseat_edu_dismiss (2781161822780201689) -->
|
||||
<skip />
|
||||
<!-- no translation found for hotseat_turn_off (7808360330229368470) -->
|
||||
<skip />
|
||||
<!-- no translation found for hotseat_auto_enrolled (522100018967146807) -->
|
||||
<skip />
|
||||
<!-- no translation found for hotseat_tip_no_empty_slots (1325212677738179185) -->
|
||||
<skip />
|
||||
<!-- no translation found for hotseat_tip_gaps_filled (3035673010274223538) -->
|
||||
<skip />
|
||||
<!-- no translation found for hotseat_prediction_content_description (4582028296938078419) -->
|
||||
<skip />
|
||||
<!-- no translation found for action_share (2648470652637092375) -->
|
||||
<skip />
|
||||
<!-- no translation found for action_screenshot (8171125848358142917) -->
|
||||
<skip />
|
||||
</resources>
|
||||
|
||||
@@ -22,16 +22,28 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"ਸਪਲਿਟ ਸਕ੍ਰੀਨ"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"ਪਿੰਨ ਕਰੋ"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"ਫ੍ਰੀਫਾਰਮ"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"ਰੂਪ-ਰੇਖਾ"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"ਕੋਈ ਹਾਲੀਆ ਆਈਟਮਾਂ ਨਹੀਂ"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"ਬੰਦ ਕਰੋ"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"ਐਪ ਵਰਤੋਂ ਦੀਆਂ ਸੈਟਿੰਗਾਂ"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"ਸਭ ਕਲੀਅਰ ਕਰੋ"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"ਹਾਲੀਆ ਐਪਾਂ"</string>
|
||||
<string name="task_contents_description_with_remaining_time" msgid="4479688746574672685">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="REMAINING_TIME">%2$s</xliff:g>"</string>
|
||||
<string name="shorter_duration_less_than_one_minute" msgid="4722015666335015336">"< 1 ਮਿੰਟ"</string>
|
||||
<string name="time_left_for_app" msgid="3111996412933644358">"ਅੱਜ <xliff:g id="TIME">%1$s</xliff:g> ਬਾਕੀ"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"ਐਪ ਸੰਬੰਧੀ ਸੁਝਾਅ"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"ਐਪ ਸੁਝਾਅ"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"ਸਾਰੀਆਂ ਐਪਾਂ"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"ਤੁਹਾਡੀਆਂ ਪੂਰਵ ਅਨੁਮਾਨਿਤ ਐਪਾਂ"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"ਆਪਣੀਆਂ ਸਭ ਤੋਂ ਵੱਧ ਵਰਤੀਆਂ ਗਈਆਂ ਐਪਾਂ ਤੱਕ ਆਸਾਨੀ ਨਾਲ ਪਹੁੰਚ ਕਰੋ"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel ਅਨੁਮਾਨ ਲਗਾਉਂਦਾ ਹੈ ਕਿ ਤੁਹਾਨੂੰ ਤੁਹਾਡੀ ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ, ਅੱਗੇ ਕਿਹੜੀਆਂ ਐਪਾਂ ਦੀ ਲੋੜ ਪਵੇਗੀ। ਸੈੱਟਅੱਪ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ।"</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"ਆਪਣੀ ਹੋਮ ਸਕ੍ਰੀਨ ਦੀ ਹੇਠਲੀ ਕਤਾਰ \'ਤੇ ਐਪ ਸੁਝਾਅ ਪ੍ਰਾਪਤ ਕਰੋ"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ ਆਪਣੀਆਂ ਸਭ ਤੋਂ ਵੱਧ ਵਰਤੀਆਂ ਗਈਆਂ ਐਪਾਂ ਤੱਕ ਆਸਾਨੀ ਨਾਲ ਪਹੁੰਚ ਕਰੋ। ਸੁਝਾਅ ਤੁਹਾਡੇ ਨਿਯਮਬੱਧ ਕੰਮਾਂ ਦੇ ਆਧਾਰ \'ਤੇ ਬਦਲਣਗੇ। ਹੇਠਲੀ ਕਤਾਰ ਵਾਲੀਆਂ ਐਪਾਂ ਤੁਹਾਡੀ ਹੋਮ ਸਕ੍ਰੀਨ ਵੱਲ ਉੱਪਰ ਆ ਜਾਣਗੀਆਂ।"</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ ਆਪਣੀਆਂ ਸਭ ਤੋਂ ਵੱਧ ਵਰਤੀਆਂ ਗਈਆਂ ਐਪਾਂ ਤੱਕ ਆਸਾਨੀ ਨਾਲ ਪਹੁੰਚ ਕਰੋ। ਸੁਝਾਅ ਤੁਹਾਡੇ ਨਿਯਮਬੱਧ ਕੰਮਾਂ ਦੇ ਆਧਾਰ \'ਤੇ ਬਦਲਣਗੇ। ਹੇਠਲੀ ਕਤਾਰ ਵਾਲੀਆਂ ਐਪਾਂ ਇੱਕ ਨਵੇਂ ਫੋਲਡਰ ਵਿੱਚ ਚਲੀਆਂ ਜਾਣਗੀਆਂ।"</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"ਐਪ ਸੁਝਾਅ ਪ੍ਰਾਪਤ ਕਰੋ"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"ਨਹੀਂ ਧੰਨਵਾਦ"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"ਸੈਟਿੰਗਾਂ"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"ਸਭ ਤੋਂ ਵੱਧ ਵਰਤੀਆਂ ਗਈਆਂ ਐਪਾਂ ਇੱਥੇ ਦਿਸਦੀਆਂ ਹਨ, ਅਤੇ ਨਿਯਮਬੱਧ ਕੰਮਾਂ ਦੇ ਆਧਾਰ \'ਤੇ ਬਦਲਦੀਆਂ ਹਨ"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"ਐਪ ਸੁਝਾਅ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਐਪਾਂ ਨੂੰ ਹੇਠਲੀ ਕਤਾਰ ਤੋਂ ਪਰੇ ਘਸੀਟੋ"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"ਐਪ ਸੁਝਾਅ ਖਾਲੀ ਜਗ੍ਹਾ ਵਿੱਚ ਸ਼ਾਮਲ ਕੀਤੇ ਗਏ"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"ਪੂਰਵ ਅਨੁਮਾਨਿਤ ਐਪ: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"ਸਾਂਝਾ ਕਰੋ"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"ਸਕ੍ਰੀਨਸ਼ਾਟ"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,16 +22,28 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Podziel ekran"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Przypnij"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Tryb dowolny"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Przegląd"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Brak ostatnich elementów"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Zamknij"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Ustawienia użycia aplikacji"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Wyczyść wszystko"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Ostatnie aplikacje"</string>
|
||||
<string name="task_contents_description_with_remaining_time" msgid="4479688746574672685">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="REMAINING_TIME">%2$s</xliff:g>"</string>
|
||||
<string name="shorter_duration_less_than_one_minute" msgid="4722015666335015336">"> 1 min"</string>
|
||||
<string name="time_left_for_app" msgid="3111996412933644358">"Na dziś zostało <xliff:g id="TIME">%1$s</xliff:g>"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Sugerowane aplikacje"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Sugestie aplikacji"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Wszystkie aplikacje"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Przewidywane aplikacje"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Korzystaj z najczęściej używanych przez siebie aplikacji w łatwy sposób"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel przewiduje, których aplikacji będziesz potrzebować w następnej kolejności, bezpośrednio na ekranie głównym. Kliknij, by skonfigurować."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Otrzymuj sugestie aplikacji w dolnym wierszu ekranu głównego"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Korzystaj z najczęściej używanych aplikacji na ekranie głównym w łatwy sposób. Sugestie będą się zmieniać na podstawie Twojej rutyny. Aplikacje z dolnych wierszy będą się przenosić w górę do ekranu głównego."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Korzystaj z najczęściej używanych aplikacji na ekranie głównym w łatwy sposób. Sugestie będą się zmieniać na podstawie Twojej rutyny. Aplikacje z dolnych wierszy będą się przenosić do nowego folderu."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Otrzymuj sugestie aplikacji"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Nie"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Ustawienia"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Najczęściej używane aplikacje wyświetlają się tutaj i zmieniają się w zależności od rutyny"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Przeciągnij aplikacje z dolnego wiersza, aby otrzymać sugestie aplikacji"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Sugestie aplikacji dodane w pustym obszarze"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Przewidywana aplikacja: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Udostępnij"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Zrzut ekranu"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,16 +22,28 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Ecrã dividido"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Fixar"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Forma livre"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Vista geral"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Nenhum item recente"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Fechar"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Definições de utilização de aplicações"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Limpar tudo"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Aplicações recentes"</string>
|
||||
<string name="task_contents_description_with_remaining_time" msgid="4479688746574672685">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="REMAINING_TIME">%2$s</xliff:g>"</string>
|
||||
<string name="shorter_duration_less_than_one_minute" msgid="4722015666335015336">"< 1 minuto"</string>
|
||||
<string name="time_left_for_app" msgid="3111996412933644358">"Resta(m) <xliff:g id="TIME">%1$s</xliff:g> hoje."</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Sugestões de aplicações"</string>
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Sugestões de apps"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Todas as aplicações"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"As suas aplicações previstas"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Aceda facilmente às suas apps mais utilizadas"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"O Pixel prevê as apps de que necessitará a seguir, diretamente no ecrã principal. Toque para configurar."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Obtenha sugestões de apps na última fila do ecrã principal."</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Aceda facilmente às suas apps mais utilizadas, diretamente no ecrã principal. As sugestões mudam em função das suas rotinas. As apps na última fila passam para o ecrã principal."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Aceda facilmente às suas apps mais utilizadas, diretamente no ecrã principal. As sugestões mudam em função das suas rotinas. As apps na última fila passam para uma nova pasta."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Obter sugestões de apps"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Não, obrigado"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Definições"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"As apps mais utilizadas aparecem aqui e mudam em função das rotinas."</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Arraste as apps para fora da última fila para obter sugestões de apps."</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Sugestões de apps adicionadas ao espaço vazio."</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"App prevista: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Partilhar"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Tirar captura de ecrã"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Tela dividida"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Fixar"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Forma livre"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Visão geral"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Nenhum item recente"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Fechar"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Configurações de uso do app"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Limpar tudo"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Apps recentes"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Sugestões de apps"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Todos os apps"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Suas predições de apps"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Acesse os apps mais usados de forma simples"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"O Pixel prevê de quais apps você precisará, diretamente na tela inicial. Toque para configurar."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Receba sugestões de apps na linha inferior da tela inicial"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Acesse os apps mais usados na tela inicial de forma simples. As sugestões mudarão de acordo com sua rotina. Os apps na linha inferior subirão para a tela inicial."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Acesse os apps mais usados na tela inicial de forma simples. As sugestões mudarão de acordo com sua rotina. Os apps na linha inferior serão movidos para uma nova pasta."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Receber sugestões de apps"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Não"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Configurações"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Os apps mais usados aparecem aqui e mudam de acordo com sua rotina"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Arraste apps da linha inferior para receber sugestões de apps"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Sugestões de apps adicionadas a um espaço vazio"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"App previsto: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Compartilhar"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Capturar tela"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Ecran împărțit"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Fixați"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Formă liberă"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Recente"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Niciun element recent"</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Închideți"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Setări de utilizare a aplicației"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Ștergeți tot"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Aplicații recente"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Sugestii de aplicații"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Toate aplicațiile"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Aplicațiile estimate"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Accesați cu ușurință cele mai folosite aplicații"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Pixel estimează aplicațiile de care veți avea nevoie în continuare, direct pe ecranul de pornire. Atingeți ca să configurați."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Primiți sugestii de aplicații în rândul de jos al ecranului de pornire"</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Accesați cu ușurință cele mai folosite aplicații direct din ecranul de pornire. Sugestiile se vor modifica în funcție de rutine. Aplicațiile din rândul de jos se vor muta în sus pe ecranul de pornire."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Accesați cu ușurință cele mai folosite aplicații, direct din ecranul de pornire. Sugestiile se vor modifica în funcție de rutine. Aplicațiile din rândul de jos se vor muta într-un dosar nou."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Primiți sugestii de aplicații"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Nu, mulțumesc"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Setări"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Cele mai folosite aplicații apar aici și se modifică în funcție de rutine"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Trageți aplicații din rândul de jos pentru a primi sugestii de aplicații"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Sugestiile de aplicații sunt adăugate în spațiile goale"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Aplicația estimată: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Distribuiți"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Captură de ecran"</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<string name="recent_task_option_split_screen" msgid="5353188922202653570">"Разделить экран"</string>
|
||||
<string name="recent_task_option_pin" msgid="7929860679018978258">"Блокировать"</string>
|
||||
<string name="recent_task_option_freeform" msgid="48863056265284071">"Произвольная форма"</string>
|
||||
<string name="accessibility_desc_recent_apps" msgid="1444379410873162882">"Обзор"</string>
|
||||
<string name="recents_empty_message" msgid="7040467240571714191">"Здесь пока ничего нет."</string>
|
||||
<string name="accessibility_close_task" msgid="5354563209433803643">"Закрыть"</string>
|
||||
<string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Настройки использования приложения"</string>
|
||||
<string name="recents_clear_all" msgid="5328176793634888831">"Очистить все"</string>
|
||||
<string name="accessibility_recent_apps" msgid="4058661986695117371">"Недавние приложения"</string>
|
||||
@@ -34,4 +32,18 @@
|
||||
<string name="title_app_suggestions" msgid="4185902664111965088">"Рекомендуемые приложения"</string>
|
||||
<string name="all_apps_label" msgid="8542784161730910663">"Все приложения"</string>
|
||||
<string name="all_apps_prediction_tip" msgid="2672336544844936186">"Ваши рекомендуемые приложения"</string>
|
||||
<string name="hotseat_edu_prompt_title" msgid="5595771595144175752">"Быстрый доступ к часто используемым приложениям"</string>
|
||||
<string name="hotseat_edu_prompt_content" msgid="5709176001504149521">"Устройство Pixel прогнозирует, какие приложения вы будете использовать в ближайшее время, и показывает их на главном экране. Нажмите, чтобы настроить."</string>
|
||||
<string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Рекомендуемые приложения будут появляться в нижнем ряду на главном экране."</string>
|
||||
<string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Для вашего удобства на главном экране отображаются часто используемые приложения на основе ваших последних действий. Приложения из нижнего ряда перемещаются на главный экран."</string>
|
||||
<string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Для вашего удобства на главном экране отображаются часто используемые приложения на основе ваших последних действий. Приложения из нижнего ряда перемещаются в новую папку."</string>
|
||||
<string name="hotseat_edu_accept" msgid="1611544083278999837">"Показывать рекомендуемые приложения"</string>
|
||||
<string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Отмена"</string>
|
||||
<string name="hotseat_turn_off" msgid="7808360330229368470">"Настройки"</string>
|
||||
<string name="hotseat_auto_enrolled" msgid="522100018967146807">"Здесь отображаются часто используемые приложения на основе ваших последних действий"</string>
|
||||
<string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Перетащите приложения из нижнего ряда, чтобы получать рекомендации"</string>
|
||||
<string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Добавьте рекомендуемые приложения на свободный участок"</string>
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Рекомендуемое приложение: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="action_share" msgid="2648470652637092375">"Поделиться"</string>
|
||||
<string name="action_screenshot" msgid="8171125848358142917">"Скриншот"</string>
|
||||
</resources>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user