/* * Copyright (C) 2019 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.launcher3.touch; import android.content.res.Resources; import android.graphics.Rect; import android.view.MotionEvent; import android.view.VelocityTracker; import android.view.View; import android.view.accessibility.AccessibilityEvent; import com.android.launcher3.Utilities; public class DefaultPagedViewHandler implements PagedOrientationHandler { @Override public int getPrimaryValue(int x, int y) { return x; } @Override public int getSecondaryValue(int x, int y) { return y; } @Override public float getPrimaryValue(float x, float y) { return x; } @Override public float getSecondaryValue(float x, float y) { return y; } @Override public void setPrimary(T target, Int2DAction action, int param) { action.call(target, param, 0); } @Override public void setPrimary(T target, Float2DAction action, float param) { action.call(target, param, 0); } @Override public float getPrimaryDirection(MotionEvent event, int pointerIndex) { return event.getX(pointerIndex); } @Override public float getPrimaryVelocity(VelocityTracker velocityTracker, int pointerId) { return velocityTracker.getXVelocity(pointerId); } @Override public int getMeasuredSize(View view) { return view.getMeasuredWidth(); } @Override public int getPrimaryScroll(View view) { return view.getScrollX(); } @Override public float getPrimaryScale(View view) { return view.getScaleX(); } @Override public void setMaxScroll(AccessibilityEvent event, int maxScroll) { event.setMaxScrollX(maxScroll); } @Override public boolean getRecentsRtlSetting(Resources resources) { return !Utilities.isRtl(resources); } @Override public int getChildStart(View view) { return view.getLeft(); } @Override public int getCenterForPage(View view, Rect insets) { return (view.getPaddingTop() + view.getMeasuredHeight() + insets.top - insets.bottom - view.getPaddingBottom()) / 2; } @Override public int getScrollOffsetStart(View view, Rect insets) { return insets.left + view.getPaddingLeft(); } @Override public int getScrollOffsetEnd(View view, Rect insets) { return view.getWidth() - view.getPaddingRight() - insets.right; } @Override public ChildBounds getChildBounds(View child, int childStart, int pageCenter, boolean layoutChild) { final int childWidth = child.getMeasuredWidth(); final int childRight = childStart + childWidth; final int childHeight = child.getMeasuredHeight(); final int childTop = pageCenter - childHeight / 2; if (layoutChild) { child.layout(childStart, childTop, childRight, childTop + childHeight); } return new ChildBounds(childWidth, childHeight, childRight, childTop); } }