Android Open Source - DraggablePanel Scale Transformer






From Project

Back to project page DraggablePanel.

License

The source code is released under:

Apache License

If you think the Android project DraggablePanel listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright (C) 2014 Pedro Vicente Gmez Snchez.
 *//ww  w .  j  av a 2s  .co m
 * 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.github.pedrovgs.transformer;

import android.view.View;

import com.nineoldandroids.view.ViewHelper;

/**
 * Transformer extension created to scale the view instead of resize it as the other
 * implementation does. This implementation is based on Nineoldanroids library to scale
 * the view.
 *
 * @author Pedro Vicente Gmez Snchez
 */
class ScaleTransformer extends Transformer {

    ScaleTransformer(View view, View parent) {
        super(view, parent);
    }

    /**
     * Uses Nineoldandroids to change the scale in the X axis.
     *
     * @param verticalDragOffset used to calculate the new scale.
     */
    @Override
    public void updateWidth(float verticalDragOffset) {
        ViewHelper.setScaleX(getView(), 1 - verticalDragOffset / getXScaleFactor());
    }

    /**
     * Uses Nineoldandroids to change the scale in the Y axis.
     *
     * @param verticalDragOffset used to calculate the new scale.
     */
    @Override
    public void updateHeight(float verticalDragOffset) {
        ViewHelper.setScaleY(getView(), 1 - verticalDragOffset / getYScaleFactor());
    }

    /**
     * Uses Nineoldandroids to change the X position of the view.
     *
     * @param verticalDragOffset used to calculate the new X position.
     */
    @Override
    public void updateXPosition(float verticalDragOffset) {
        ViewHelper.setPivotX(getView(), getView().getWidth() - getMarginRight());
    }

    /**
     * Uses Nineoldandroids to change the Y position of the view.
     *
     * @param verticalDragOffset used to calculate the new Y position.
     */
    @Override
    public void updateYPosition(float verticalDragOffset) {
        ViewHelper.setPivotY(getView(), getView().getHeight() - getMarginBottom());
    }

    /**
     * @return true if the right corner of the view matches with the parent view width.
     */
    @Override
    public boolean isViewAtRight() {
        return getView().getRight() == getParentView().getWidth();
    }

    /**
     * @return true if the bottom corner of the view matches with the parent view height.
     */
    @Override
    public boolean isViewAtBottom() {
        return getView().getBottom() == getParentView().getHeight();
    }

    /**
     * @return true if the left position of the view is to the right of the twenty five percent of
     * the parent width.
     */
    @Override
    public boolean isNextToRightBound() {
        return (getView().getLeft() - getMarginRight()) > getParentView().getWidth() * 0.25;
    }

    /**
     * @return true if the left position of the view is to the left of the twenty five percent of
     * the parent width.
     */
    @Override
    public boolean isNextToLeftBound() {
        return (getView().getLeft() - getMarginRight()) < getParentView().getWidth() * 0.25;
    }

    /**
     * @return min view height taking into account the configured margin.
     */
    @Override
    public int getMinHeightPlusMargin() {
        return getView().getHeight();
    }

    /**
     * @return min view width.
     */
    @Override
    public int getMinWidth() {
        return (int) getOriginalWidth();
    }

    @Override
    public int getLastLeftPosition() {
        return 0;
    }

}




Java Source Code List

com.github.pedrovgs.DraggableListener.java
com.github.pedrovgs.DraggablePanel.java
com.github.pedrovgs.DraggableViewCallback.java
com.github.pedrovgs.DraggableView.java
com.github.pedrovgs.sample.DraggablePanelApplication.java
com.github.pedrovgs.sample.activity.DIFragmentActivity.java
com.github.pedrovgs.sample.activity.DraggableState.java
com.github.pedrovgs.sample.activity.MainActivity.java
com.github.pedrovgs.sample.activity.PlacesSampleActivity.java
com.github.pedrovgs.sample.activity.TvShowsActivity.java
com.github.pedrovgs.sample.activity.VideoSampleActivity.java
com.github.pedrovgs.sample.activity.YoutubeSampleActivity.java
com.github.pedrovgs.sample.di.MainModule.java
com.github.pedrovgs.sample.fragment.MoviePosterFragment.java
com.github.pedrovgs.sample.fragment.PlaceFragment.java
com.github.pedrovgs.sample.renderer.EpisodeRendererAdapter.java
com.github.pedrovgs.sample.renderer.EpisodeRenderer.java
com.github.pedrovgs.sample.renderer.PlaceRenderer.java
com.github.pedrovgs.sample.renderer.TvShowRenderer.java
com.github.pedrovgs.sample.renderer.rendererbuilder.EpisodeRendererBuilder.java
com.github.pedrovgs.sample.renderer.rendererbuilder.PlacesCollectionRendererBuilder.java
com.github.pedrovgs.sample.renderer.rendererbuilder.TvShowCollectionRendererBuilder.java
com.github.pedrovgs.sample.viewmodel.EpisodeCollection.java
com.github.pedrovgs.sample.viewmodel.EpisodeViewModel.java
com.github.pedrovgs.sample.viewmodel.PlaceCollectionViewModel.java
com.github.pedrovgs.sample.viewmodel.PlaceViewModel.java
com.github.pedrovgs.sample.viewmodel.TvShowCollectionViewModel.java
com.github.pedrovgs.sample.viewmodel.TvShowViewModel.java
com.github.pedrovgs.transformer.ResizeTransformer.java
com.github.pedrovgs.transformer.ScaleTransformer.java
com.github.pedrovgs.transformer.TransformerFactory.java
com.github.pedrovgs.transformer.Transformer.java