diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml
index cc50471..1214657 100644
--- a/config/checkstyle/checkstyle.xml
+++ b/config/checkstyle/checkstyle.xml
@@ -111,7 +111,6 @@
-
@@ -131,4 +130,4 @@
-
\ No newline at end of file
+
diff --git a/draggablepanel/res/layout/draggable_panel.xml b/draggablepanel/res/layout/draggable_panel.xml
index 97545a0..e4a0d3d 100644
--- a/draggablepanel/res/layout/draggable_panel.xml
+++ b/draggablepanel/res/layout/draggable_panel.xml
@@ -16,7 +16,7 @@
diff --git a/draggablepanel/src/main/java/com/github/pedrovgs/DraggablePanel.java b/draggablepanel/src/main/java/com/github/pedrovgs/DraggablePanel.java
index f1f0556..ed554c2 100644
--- a/draggablepanel/src/main/java/com/github/pedrovgs/DraggablePanel.java
+++ b/draggablepanel/src/main/java/com/github/pedrovgs/DraggablePanel.java
@@ -58,6 +58,7 @@ public class DraggablePanel extends FrameLayout {
private boolean enableClickToMaximize;
private boolean enableClickToMinimize;
private boolean enableTouchListener;
+ private boolean initialised = false;
public DraggablePanel(Context context) {
super(context);
@@ -109,6 +110,15 @@ public void setTopViewHeight(int topFragmentHeight) {
this.topFragmentHeight = topFragmentHeight;
}
+ public void setFullScreen(boolean fullScreen) {
+ setLockDragMode(fullScreen);
+ if (fullScreen) {
+ draggableView.setTopViewHeight(getResources().getDisplayMetrics().heightPixels);
+ } else {
+ draggableView.setTopViewHeight(topFragmentHeight);
+ }
+ }
+
/**
* Return if user can maximize minimized view on click.
*/
@@ -146,7 +156,30 @@ public void setClickToMinimizeEnabled(boolean enableClickToMinimize) {
}
/**
+ * Disables dragging the view
*
+ * @param lock - true to disable, false to enable
+ */
+ public void setLockDragMode(boolean lock) {
+ if (initialised) {
+ draggableView.setLockDragMode(lock);
+ } else {
+ throw new IllegalStateException("You have to initialise draggable panel first");
+ }
+ }
+
+ /**
+ * Return if dragging is locked or unlocked
+ */
+ public boolean isLockDragMode() {
+ if (initialised) {
+ return draggableView.isLockDragMode();
+ } else {
+ throw new IllegalStateException("You have to initialise draggable panel first");
+ }
+ }
+
+ /**
* Slide the view based on scroll of the nav drawer.
* "setEnableTouch" user prevents click to expand while the drawer is moving.
* It's only possible to maximize the view when @slideOffset is equals to 0.0,
@@ -268,6 +301,7 @@ public void initializeView() {
draggableView.setClickToMaximizeEnabled(enableClickToMaximize);
draggableView.setClickToMinimizeEnabled(enableClickToMinimize);
draggableView.setTouchEnabled(enableTouchListener);
+ initialised = true;
}
/**
diff --git a/draggablepanel/src/main/java/com/github/pedrovgs/DraggableView.java b/draggablepanel/src/main/java/com/github/pedrovgs/DraggableView.java
index 5895a14..cd88045 100644
--- a/draggablepanel/src/main/java/com/github/pedrovgs/DraggableView.java
+++ b/draggablepanel/src/main/java/com/github/pedrovgs/DraggableView.java
@@ -18,12 +18,15 @@
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
+import android.os.Parcel;
+import android.os.Parcelable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.view.MotionEventCompat;
import android.support.v4.view.ViewCompat;
import android.support.v4.widget.ViewDragHelper;
import android.util.AttributeSet;
+import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.RelativeLayout;
@@ -38,6 +41,11 @@
*/
public class DraggableView extends RelativeLayout {
+ private enum DraggableViewState {
+ MAXIMISED, MINIMISED, CLOSED_TO_LEFT, CLOSED_TO_RIGHT
+ }
+
+ private DraggableViewState mState = DraggableViewState.MAXIMISED;
private static final int DEFAULT_SCALE_FACTOR = 2;
private static final int DEFAULT_TOP_VIEW_MARGIN = 30;
private static final int DEFAULT_TOP_VIEW_HEIGHT = -1;
@@ -70,9 +78,14 @@ public class DraggableView extends RelativeLayout {
private boolean enableClickToMaximize;
private boolean enableClickToMinimize;
private boolean touchEnabled;
-
+ private boolean lockDragMode = false;
private DraggableListener listener;
+ private int left = 0;
+ private int top = 0;
+ private int right = 0;
+ private int bottom = 0;
+
public DraggableView(Context context) {
super(context);
}
@@ -130,6 +143,22 @@ private boolean isTouchEnabled() {
return this.touchEnabled;
}
+ /**
+ * Disables dragging the view
+ *
+ * @param lock - true to disable, false to enable
+ */
+ public void setLockDragMode(boolean lock) {
+ this.lockDragMode = lock;
+ }
+
+ /**
+ * Return if dragging is locked or unlocked
+ */
+ public boolean isLockDragMode() {
+ return lockDragMode;
+ }
+
/**
* Enable or disable the touch listener
*
@@ -247,7 +276,8 @@ public void maximize() {
* corner of the screen.
*/
public void minimize() {
- smoothSlideTo(SLIDE_BOTTOM);
+ //if (!isDragViewAtBottom())
+ smoothSlideTo(SLIDE_BOTTOM);
notifyMinimizeToListener();
}
@@ -255,7 +285,7 @@ public void minimize() {
* Close the custom view applying an animation to close the view to the right side of the screen.
*/
public void closeToRight() {
- if (viewDragHelper.smoothSlideViewTo(dragView, transformer.getOriginalWidth(),
+ if (viewDragHelper.smoothSlideViewTo(dragView, getWidth(),
getHeight() - transformer.getMinHeightPlusMargin())) {
ViewCompat.postInvalidateOnAnimation(this);
notifyCloseToRightListener();
@@ -266,7 +296,7 @@ public void closeToRight() {
* Close the custom view applying an animation to close the view to the left side of the screen.
*/
public void closeToLeft() {
- if (viewDragHelper.smoothSlideViewTo(dragView, -transformer.getOriginalWidth(),
+ if (viewDragHelper.smoothSlideViewTo(dragView, -getWidth(),
getHeight() - transformer.getMinHeightPlusMargin())) {
ViewCompat.postInvalidateOnAnimation(this);
notifyCloseToLeftListener();
@@ -362,7 +392,7 @@ public boolean isClosed() {
if (activePointerId == INVALID_POINTER) {
return false;
}
- viewDragHelper.processTouchEvent(ev);
+ if (!lockDragMode) viewDragHelper.processTouchEvent(ev);
if (isClosed()) {
return false;
}
@@ -378,7 +408,7 @@ public boolean isClosed() {
}
private void analyzeTouchToMaximizeIfNeeded(MotionEvent ev, boolean isDragViewHit) {
- switch(ev.getAction()) {
+ switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
lastTouchActionDownXPosition = ev.getX();
break;
@@ -399,8 +429,7 @@ private void analyzeTouchToMaximizeIfNeeded(MotionEvent ev, boolean isDragViewHi
public boolean shouldMaximizeOnClick(MotionEvent ev, float deltaX, boolean isDragViewHit) {
return (Math.abs(deltaX) < MIN_SLIDING_DISTANCE_ON_CLICK)
- && ev.getAction() != MotionEvent.ACTION_MOVE
- && isDragViewHit;
+ && ev.getAction() != MotionEvent.ACTION_MOVE && isDragViewHit;
}
/**
@@ -422,15 +451,105 @@ private MotionEvent cloneMotionEventWithAction(MotionEvent event, int action) {
* Override method to configure the dragged view and secondView layout properly.
*/
@Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
- if (isInEditMode())
+ Log.e("drview",
+ "onLayout " + changed + " | " + left + " | " + top + " | " + right + " | " + bottom);
+ Log.e("drview",
+ "view size " + dragView.getWidth() + " | " + dragView.getHeight() + " + screen width "
+ + getWidth());
+ if (isInEditMode()) {
super.onLayout(changed, left, top, right, bottom);
- else if (isDragViewAtTop()) {
- dragView.layout(left, top, right, transformer.getOriginalHeight());
- secondView.layout(left, transformer.getOriginalHeight(), right, bottom);
- ViewHelper.setY(dragView, top);
- ViewHelper.setY(secondView, transformer.getOriginalHeight());
} else {
- secondView.layout(left, transformer.getOriginalHeight(), right, bottom);
+
+ if (true) {
+ dragView.layout(left, top, right, transformer.getOriginalHeight());
+ secondView.layout(left, transformer.getOriginalHeight(), right, bottom);
+ ViewHelper.setY(dragView, top);
+ ViewHelper.setX(dragView, left);
+ ViewHelper.setY(secondView, transformer.getOriginalHeight());
+ ViewHelper.setX(secondView, left);
+ final int topBound = getPaddingTop();
+ int x;
+ int y;
+ Drawable background = getBackground();
+ switch (mState) {
+ case MAXIMISED:
+ transformer.updateScale(0f);
+ transformer.updatePosition(0f);
+ ViewHelper.setAlpha(secondView, 0.99864f);
+ if (background != null) {
+ int newAlpha = ONE_HUNDRED;
+ background.setAlpha(newAlpha);
+ }
+ dragView.offsetLeftAndRight(0);
+ dragView.offsetTopAndBottom(0);
+ ViewHelper.setY(secondView, dragView.getBottom());
+ mState = DraggableViewState.MAXIMISED;
+
+ break;
+ case MINIMISED:
+ transformer.updatePosition(0.99864f);
+ transformer.updateScale(0.99864f);
+ ViewHelper.setAlpha(secondView, 0f);
+ if (background != null) {
+ int newAlpha = 0;
+ background.setAlpha(newAlpha);
+ }
+ x = (getWidth() - transformer.getMinWidthPlusMarginRight());
+ y = (int) getVerticalDragRange();
+ dragView.offsetLeftAndRight(0);
+ dragView.offsetTopAndBottom(y);
+ ViewHelper.setY(secondView, dragView.getBottom());
+ mState = DraggableViewState.MINIMISED;
+ break;
+ case CLOSED_TO_LEFT:
+ x = -getWidth();
+ y = getHeight() - transformer.getMinHeightPlusMargin();
+ dragView.offsetLeftAndRight(x);
+ dragView.offsetTopAndBottom(y);
+ transformer.updatePosition(0.99864f);
+ transformer.updateScale(0.99864f);
+ ViewHelper.setAlpha(secondView, 0f);
+ if (background != null) {
+ int newAlpha = 0;
+ background.setAlpha(newAlpha);
+ }
+ ViewHelper.setY(secondView, dragView.getBottom());
+ mState = DraggableViewState.CLOSED_TO_LEFT;
+
+ break;
+ case CLOSED_TO_RIGHT:
+ x = getWidth();
+ y = getHeight() - transformer.getMinHeightPlusMargin();
+ dragView.offsetLeftAndRight(x);
+ dragView.offsetTopAndBottom(y);
+ transformer.updatePosition(0.99864f);
+ transformer.updateScale(0.99864f);
+ ViewHelper.setAlpha(secondView, 0f);
+ if (background != null) {
+ int newAlpha = 0;
+ background.setAlpha(newAlpha);
+ }
+ mState = DraggableViewState.CLOSED_TO_RIGHT;
+
+ ViewHelper.setY(secondView, dragView.getBottom());
+ break;
+ default:
+ transformer.updatePosition(0.99864f);
+ transformer.updateScale(0.99864f);
+ ViewHelper.setAlpha(secondView, 0f);
+ if (background != null) {
+ int newAlpha = 0;
+ background.setAlpha(newAlpha);
+ }
+ x = (int) ((getWidth() - transformer.getMinWidthPlusMarginRight()));
+ y = (int) (topBound + 1 * getVerticalDragRange());
+ dragView.offsetLeftAndRight(0);
+ dragView.offsetTopAndBottom(y);
+ ViewHelper.setY(secondView, dragView.getBottom());
+ mState = DraggableViewState.MINIMISED;
+ break;
+ }
+ }
}
}
@@ -616,10 +735,8 @@ private boolean isViewHit(View view, int x, int y) {
this.getLocationOnScreen(parentLocation);
int screenX = parentLocation[0] + x;
int screenY = parentLocation[1] + y;
- return screenX >= viewLocation[0]
- && screenX < viewLocation[0] + view.getWidth()
- && screenY >= viewLocation[1]
- && screenY < viewLocation[1] + view.getHeight();
+ return screenX >= viewLocation[0] && screenX < viewLocation[0] + view.getWidth()
+ && screenY >= viewLocation[1] && screenY < viewLocation[1] + view.getHeight();
}
/**
@@ -636,7 +753,8 @@ private void addFragmentToView(final int viewId, final Fragment fragment) {
* Initialize the viewDragHelper.
*/
private void initializeViewDragHelper() {
- viewDragHelper = ViewDragHelper.create(this, SENSITIVITY, new DraggableViewCallback(this, dragView));
+ viewDragHelper =
+ ViewDragHelper.create(this, SENSITIVITY, new DraggableViewCallback(this, dragView));
}
/**
@@ -647,8 +765,9 @@ private void initializeTransformer(TypedArray attributes) {
attributes.getBoolean(R.styleable.draggable_view_top_view_resize, DEFAULT_TOP_VIEW_RESIZE);
TransformerFactory transformerFactory = new TransformerFactory();
transformer = transformerFactory.getTransformer(topViewResize, dragView, this);
- transformer.setViewHeight(attributes.getDimensionPixelSize(R.styleable.draggable_view_top_view_height,
- DEFAULT_TOP_VIEW_HEIGHT));
+ transformer.setViewHeight(
+ attributes.getDimensionPixelSize(R.styleable.draggable_view_top_view_height,
+ DEFAULT_TOP_VIEW_HEIGHT));
transformer.setXScaleFactor(
attributes.getFloat(R.styleable.draggable_view_top_view_x_scale_factor,
DEFAULT_SCALE_FACTOR));
@@ -692,8 +811,10 @@ private void initializeAttributes(AttributeSet attrs) {
private boolean smoothSlideTo(float slideOffset) {
final int topBound = getPaddingTop();
int x = (int) (slideOffset * (getWidth() - transformer.getMinWidthPlusMarginRight()));
+ Log.e("drview",
+ "minimise " + x + " + " + transformer.getMinWidthPlusMarginRight() + " = " + getWidth());
int y = (int) (topBound + slideOffset * getVerticalDragRange());
- if (viewDragHelper.smoothSlideViewTo(dragView, x, y)) {
+ if (viewDragHelper.smoothSlideViewTo(dragView, 0, y)) {
ViewCompat.postInvalidateOnAnimation(this);
return true;
}
@@ -745,6 +866,7 @@ private float getVerticalDragRange() {
* Notify te view is maximized to the DraggableListener
*/
private void notifyMaximizeToListener() {
+ mState = DraggableViewState.MAXIMISED;
if (listener != null) {
listener.onMaximized();
}
@@ -754,6 +876,7 @@ private void notifyMaximizeToListener() {
* Notify te view is minimized to the DraggableListener
*/
private void notifyMinimizeToListener() {
+ mState = DraggableViewState.MINIMISED;
if (listener != null) {
listener.onMinimized();
}
@@ -763,6 +886,7 @@ private void notifyMinimizeToListener() {
* Notify te view is closed to the right to the DraggableListener
*/
private void notifyCloseToRightListener() {
+ mState = DraggableViewState.CLOSED_TO_LEFT;
if (listener != null) {
listener.onClosedToRight();
}
@@ -772,6 +896,7 @@ private void notifyCloseToRightListener() {
* Notify te view is closed to the left to the DraggableListener
*/
private void notifyCloseToLeftListener() {
+ mState = DraggableViewState.CLOSED_TO_RIGHT;
if (listener != null) {
listener.onClosedToLeft();
}
@@ -780,4 +905,77 @@ private void notifyCloseToLeftListener() {
public int getDraggedViewHeightPlusMarginTop() {
return transformer.getMinHeightPlusMargin();
}
+
+ @Override protected Parcelable onSaveInstanceState() {
+ Parcelable superState = super.onSaveInstanceState();
+ SavedState ss = new SavedState(superState);
+ ss.drState = mState;
+ return ss;
+ }
+
+ @Override protected void onRestoreInstanceState(Parcelable state) {
+ if (!(state instanceof SavedState)) {
+ super.onRestoreInstanceState(state);
+ return;
+ }
+ SavedState ss = (SavedState) state;
+ super.onRestoreInstanceState(ss.getSuperState());
+ mState = ss.drState;
+ switch (mState) {
+ case MAXIMISED:
+ smoothSlideTo(SLIDE_TOP);
+ break;
+ case MINIMISED:
+ smoothSlideTo(SLIDE_BOTTOM);
+ break;
+ case CLOSED_TO_LEFT:
+ closeToLeft();
+ break;
+ case CLOSED_TO_RIGHT:
+ closeToRight();
+ break;
+ default:
+ smoothSlideTo(SLIDE_BOTTOM);
+ break;
+ }
+ Log.e("drview", "onRestoreState " + mState.toString());
+ }
+
+ /**
+ * User interface state that is stored by TextView for implementing
+ * {@link View#onSaveInstanceState}.
+ */
+ public static class SavedState extends BaseSavedState {
+ DraggableViewState drState;
+
+ SavedState(Parcelable superState) {
+ super(superState);
+ }
+
+ @Override public void writeToParcel(Parcel out, int flags) {
+ super.writeToParcel(out, flags);
+ out.writeSerializable(drState);
+ }
+
+ @Override public String toString() {
+ String str = "DraggableView state: " + drState;
+ return str;
+ }
+
+ @SuppressWarnings("hiding") public static final Parcelable.Creator CREATOR =
+ new Parcelable.Creator() {
+ public SavedState createFromParcel(Parcel in) {
+ return new SavedState(in);
+ }
+
+ public SavedState[] newArray(int size) {
+ return new SavedState[size];
+ }
+ };
+
+ private SavedState(Parcel in) {
+ super(in);
+ drState = (DraggableViewState) in.readSerializable();
+ }
+ }
}
diff --git a/draggablepanel/src/main/java/com/github/pedrovgs/DraggableViewCallback.java b/draggablepanel/src/main/java/com/github/pedrovgs/DraggableViewCallback.java
index 08016ba..f12528c 100644
--- a/draggablepanel/src/main/java/com/github/pedrovgs/DraggableViewCallback.java
+++ b/draggablepanel/src/main/java/com/github/pedrovgs/DraggableViewCallback.java
@@ -108,8 +108,7 @@ public DraggableViewCallback(DraggableView draggableView, View draggedView) {
@Override public int clampViewPositionHorizontal(View child, int left, int dx) {
int newLeft = draggedView.getLeft();
if ((draggableView.isMinimized() && Math.abs(dx) > MINIMUM_DX_FOR_HORIZONTAL_DRAG) || (
- draggableView.isDragViewAtBottom()
- && !draggableView.isDragViewAtRight())) {
+ draggableView.isDragViewAtBottom() && !draggableView.isDragViewAtRight())) {
newLeft = left;
}
return newLeft;
@@ -126,13 +125,13 @@ public DraggableViewCallback(DraggableView draggableView, View draggedView) {
*/
@Override public int clampViewPositionVertical(View child, int top, int dy) {
int newTop = draggableView.getHeight() - draggableView.getDraggedViewHeightPlusMarginTop();
- if (draggableView.isMinimized() && Math.abs(dy) >= MINIMUM_DY_FOR_VERTICAL_DRAG
- || (!draggableView.isMinimized() && !draggableView.isDragViewAtBottom())) {
+ if (draggableView.isMinimized() && Math.abs(dy) >= MINIMUM_DY_FOR_VERTICAL_DRAG || (
+ !draggableView.isMinimized() && !draggableView.isDragViewAtBottom())) {
final int topBound = draggableView.getPaddingTop();
- final int bottomBound = draggableView.getHeight()
- - draggableView.getDraggedViewHeightPlusMarginTop()
- - draggedView.getPaddingBottom();
+ final int bottomBound =
+ draggableView.getHeight() - draggableView.getDraggedViewHeightPlusMarginTop()
+ - draggedView.getPaddingBottom();
newTop = Math.min(Math.max(top, topBound), bottomBound);
}
diff --git a/draggablepanel/src/main/java/com/github/pedrovgs/transformer/ResizeTransformer.java b/draggablepanel/src/main/java/com/github/pedrovgs/transformer/ResizeTransformer.java
index 6af7bc3..d3b4a06 100644
--- a/draggablepanel/src/main/java/com/github/pedrovgs/transformer/ResizeTransformer.java
+++ b/draggablepanel/src/main/java/com/github/pedrovgs/transformer/ResizeTransformer.java
@@ -40,19 +40,18 @@ class ResizeTransformer extends Transformer {
*/
@Override public void updateScale(float verticalDragOffset) {
layoutParams.width = (int) (getOriginalWidth() * (1 - verticalDragOffset / getXScaleFactor()));
- layoutParams.height = (int) (getOriginalHeight() * (1 - verticalDragOffset / getYScaleFactor()));
+ layoutParams.height =
+ (int) (getOriginalHeight() * (1 - verticalDragOffset / getYScaleFactor()));
getView().setLayoutParams(layoutParams);
}
-
/**
* Changes X view position using layout() method.
*
* @param verticalDragOffset used to calculate the new X position.
*/
- @Override
- public void updatePosition(float verticalDragOffset) {
+ @Override public void updatePosition(float verticalDragOffset) {
int right = getViewRightPosition(verticalDragOffset);
int left = right - layoutParams.width;
int top = getView().getTop();
@@ -61,7 +60,6 @@ public void updatePosition(float verticalDragOffset) {
getView().layout(left, top, right, bottom);
}
-
/**
* @return true if the right position of the view plus the right margin is equals to the parent
* width.
@@ -116,5 +114,4 @@ public void updatePosition(float verticalDragOffset) {
private int getViewRightPosition(float verticalDragOffset) {
return (int) ((getOriginalWidth()) - getMarginRight() * verticalDragOffset);
}
-
}
diff --git a/draggablepanel/src/main/java/com/github/pedrovgs/transformer/ScaleTransformer.java b/draggablepanel/src/main/java/com/github/pedrovgs/transformer/ScaleTransformer.java
index e49a13e..5dce565 100644
--- a/draggablepanel/src/main/java/com/github/pedrovgs/transformer/ScaleTransformer.java
+++ b/draggablepanel/src/main/java/com/github/pedrovgs/transformer/ScaleTransformer.java
@@ -94,5 +94,4 @@ class ScaleTransformer extends Transformer {
@Override public int getMinWidthPlusMarginRight() {
return getOriginalWidth();
}
-
}
diff --git a/sample/AndroidManifest.xml b/sample/AndroidManifest.xml
index 960a0f2..d35d5ce 100755
--- a/sample/AndroidManifest.xml
+++ b/sample/AndroidManifest.xml
@@ -1,6 +1,8 @@
-
+
@@ -13,7 +15,8 @@
+ android:required="true"
+ />
@@ -21,19 +24,23 @@
android:name=".DraggablePanelApplication"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
- android:theme="@style/AppTheme">
+ android:theme="@style/AppTheme"
+ >
+ android:value="AIzaSyC1rMU-mkhoyTvBIdTnYU0dss0tU9vtK48"
+ />
+ android:configChanges="keyboardHidden|orientation|screenSize"
+ android:label="@string/app_name"
+ >
@@ -45,34 +52,40 @@
-
+ android:configChanges="keyboardHidden|orientation|screenSize"
+
+ android:label="@string/places_sample_activity_title"
+ />
+ android:label="@string/tv_shows_sample_activity_title"
+ />
-
+ android:label="@string/youtube_sample_activity_title"
+ />
-
+ android:configChanges="keyboardHidden|orientation|screenSize"
+
+ android:label="@string/video_sample_activity_title"
+ />
+ android:value="@integer/google_play_services_version"
+ />
diff --git a/sample/src/main/java/com/github/pedrovgs/sample/activity/DIFragmentActivity.java b/sample/src/main/java/com/github/pedrovgs/sample/activity/DIFragmentActivity.java
index 7f956a2..43e4363 100644
--- a/sample/src/main/java/com/github/pedrovgs/sample/activity/DIFragmentActivity.java
+++ b/sample/src/main/java/com/github/pedrovgs/sample/activity/DIFragmentActivity.java
@@ -15,6 +15,7 @@
*/
package com.github.pedrovgs.sample.activity;
+import android.content.res.Configuration;
import android.os.Bundle;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.github.pedrovgs.sample.DraggablePanelApplication;
@@ -32,4 +33,10 @@ public class DIFragmentActivity extends SherlockFragmentActivity {
super.onCreate(savedInstanceState);
((DraggablePanelApplication) getApplication()).inject(this);
}
+
+
+ public void onConfigurationChanged(Configuration newConfig){
+ super.onConfigurationChanged(newConfig);
+
+ }
}
diff --git a/sample/src/main/java/com/github/pedrovgs/sample/activity/MainActivity.java b/sample/src/main/java/com/github/pedrovgs/sample/activity/MainActivity.java
index 8f7c7db..1fe4e77 100644
--- a/sample/src/main/java/com/github/pedrovgs/sample/activity/MainActivity.java
+++ b/sample/src/main/java/com/github/pedrovgs/sample/activity/MainActivity.java
@@ -17,6 +17,7 @@
import android.app.Activity;
import android.content.Intent;
+import android.content.res.Configuration;
import android.os.Bundle;
import butterknife.ButterKnife;
import butterknife.OnClick;
@@ -52,4 +53,10 @@ public class MainActivity extends Activity {
Intent intent = new Intent(this, VideoSampleActivity.class);
startActivity(intent);
}
+
+
+ public void onConfigurationChanged(Configuration newConfig){
+ super.onConfigurationChanged(newConfig);
+
+ }
}
diff --git a/sample/src/main/java/com/github/pedrovgs/sample/activity/TvShowsActivity.java b/sample/src/main/java/com/github/pedrovgs/sample/activity/TvShowsActivity.java
index ebf2dc5..ea3a89d 100644
--- a/sample/src/main/java/com/github/pedrovgs/sample/activity/TvShowsActivity.java
+++ b/sample/src/main/java/com/github/pedrovgs/sample/activity/TvShowsActivity.java
@@ -15,6 +15,7 @@
*/
package com.github.pedrovgs.sample.activity;
+import android.content.res.Configuration;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
@@ -88,12 +89,16 @@ public class TvShowsActivity extends DIFragmentActivity {
*/
private void initializeDraggableView() {
Handler handler = new Handler();
- handler.postDelayed(new Runnable() {
- @Override public void run() {
- draggableView.setVisibility(View.GONE);
- draggableView.closeToRight();
- }
- }, DELAY_MILLIS);
+ handler.postDelayed(
+ new Runnable(){
+
+ @Override
+ public void run(){
+ draggableView.setVisibility(View.GONE);
+ draggableView.closeToRight();
+ }
+ }, DELAY_MILLIS
+ );
}
/**
@@ -101,21 +106,26 @@ private void initializeDraggableView() {
*/
private void initializeGridView() {
tvShowsGridView.setAdapter(adapter);
- tvShowsGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
- @Override public void onItemClick(AdapterView> adapterView, View view, int position,
- long id) {
- TvShowViewModel tvShow = adapter.getItem(position);
- tvShowSelected = tvShow;
- Picasso.with(getBaseContext())
- .load(tvShow.getFanArt())
- .placeholder(R.drawable.tv_show_placeholder)
- .into(fanArtImageView);
- renderEpisodesHeader(tvShow);
- renderEpisodes(tvShow);
- draggableView.setVisibility(View.VISIBLE);
- draggableView.maximize();
- }
- });
+ tvShowsGridView.setOnItemClickListener(
+ new AdapterView.OnItemClickListener(){
+
+ @Override
+ public void onItemClick(
+ AdapterView> adapterView, View view, int position, long id
+ ){
+ TvShowViewModel tvShow = adapter.getItem(position);
+ tvShowSelected = tvShow;
+ Picasso.with(getBaseContext())
+ .load(tvShow.getFanArt())
+ .placeholder(R.drawable.tv_show_placeholder)
+ .into(fanArtImageView);
+ renderEpisodesHeader(tvShow);
+ renderEpisodes(tvShow);
+ draggableView.setVisibility(View.VISIBLE);
+ draggableView.maximize();
+ }
+ }
+ );
}
/**
@@ -123,23 +133,33 @@ private void initializeGridView() {
* information.
*/
private void hookListeners() {
- draggableView.setDraggableListener(new DraggableListener() {
- @Override public void onMaximized() {
- updateActionBarTitle();
- }
-
- @Override public void onMinimized() {
- updateActionBarTitle();
- }
-
- @Override public void onClosedToLeft() {
- resetActionBarTitle();
- }
-
- @Override public void onClosedToRight() {
- resetActionBarTitle();
- }
- });
+ draggableView.setDraggableListener(
+ new DraggableListener(){
+
+ @Override
+ public void onMaximized(){
+ updateActionBarTitle();
+ }
+
+
+ @Override
+ public void onMinimized(){
+ updateActionBarTitle();
+ }
+
+
+ @Override
+ public void onClosedToLeft(){
+ resetActionBarTitle();
+ }
+
+
+ @Override
+ public void onClosedToRight(){
+ resetActionBarTitle();
+ }
+ }
+ );
}
/**
@@ -185,18 +205,29 @@ private void renderEpisodesHeader(TvShowViewModel tvShow) {
header.setText(tvShow.getTitle().toUpperCase() + " - SEASON 1");
episodesListView.setAdapter(null);
episodesListView.addHeaderView(header);
- episodesListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
- @Override public void onItemClick(AdapterView> adapterView, View view, int position,
- long id) {
- if (tvShowSelected != null) {
- if (position > 0) {
- EpisodeViewModel episodeViewModel = tvShowSelected.getEpisodes().get(position - 1);
- Toast.makeText(getBaseContext(),
- tvShowSelected.getTitle() + " - " + episodeViewModel.getTitle(), Toast.LENGTH_LONG)
- .show();
+ episodesListView.setOnItemClickListener(
+ new AdapterView.OnItemClickListener(){
+
+ @Override
+ public void onItemClick(
+ AdapterView> adapterView, View view, int position, long id
+ ){
+ if(tvShowSelected != null){
+ if(position > 0){
+ EpisodeViewModel episodeViewModel = tvShowSelected.getEpisodes().get(position - 1);
+ Toast.makeText(
+ getBaseContext(), tvShowSelected.getTitle() + " - " + episodeViewModel.getTitle(), Toast.LENGTH_LONG
+ ).show();
+ }
+ }
}
}
- }
- });
+ );
+ }
+
+
+ public void onConfigurationChanged(Configuration newConfig){
+ super.onConfigurationChanged(newConfig);
+
}
}
\ No newline at end of file
diff --git a/sample/src/main/java/com/github/pedrovgs/sample/activity/VideoSampleActivity.java b/sample/src/main/java/com/github/pedrovgs/sample/activity/VideoSampleActivity.java
index 83e2dbf..401eca0 100644
--- a/sample/src/main/java/com/github/pedrovgs/sample/activity/VideoSampleActivity.java
+++ b/sample/src/main/java/com/github/pedrovgs/sample/activity/VideoSampleActivity.java
@@ -15,6 +15,7 @@
*/
package com.github.pedrovgs.sample.activity;
+import android.content.res.Configuration;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
@@ -83,24 +84,34 @@ public class VideoSampleActivity extends FragmentActivity {
* Hook DraggableListener to draggableView to pause or resume VideoView.
*/
private void hookDraggableViewListener() {
- draggableView.setDraggableListener(new DraggableListener() {
- @Override public void onMaximized() {
- startVideo();
- }
-
- //Empty
- @Override public void onMinimized() {
- //Empty
- }
-
- @Override public void onClosedToLeft() {
- pauseVideo();
- }
-
- @Override public void onClosedToRight() {
- pauseVideo();
- }
- });
+ draggableView.setDraggableListener(
+ new DraggableListener(){
+
+ @Override
+ public void onMaximized(){
+ startVideo();
+ }
+
+
+ //Empty
+ @Override
+ public void onMinimized(){
+ //Empty
+ }
+
+
+ @Override
+ public void onClosedToLeft(){
+ pauseVideo();
+ }
+
+
+ @Override
+ public void onClosedToRight(){
+ pauseVideo();
+ }
+ }
+ );
}
/**
@@ -143,4 +154,10 @@ private void initializePoster() {
.placeholder(R.drawable.spiderman_placeholder)
.into(thumbnailImageView);
}
+
+
+ public void onConfigurationChanged(Configuration newConfig){
+ super.onConfigurationChanged(newConfig);
+
+ }
}
diff --git a/sample/src/main/java/com/github/pedrovgs/sample/activity/YoutubeSampleActivity.java b/sample/src/main/java/com/github/pedrovgs/sample/activity/YoutubeSampleActivity.java
index 756e20d..330b07c 100644
--- a/sample/src/main/java/com/github/pedrovgs/sample/activity/YoutubeSampleActivity.java
+++ b/sample/src/main/java/com/github/pedrovgs/sample/activity/YoutubeSampleActivity.java
@@ -81,8 +81,9 @@ private void initializeYoutubeFragment() {
youtubeFragment = new YouTubePlayerSupportFragment();
youtubeFragment.initialize(YOUTUBE_API_KEY, new YouTubePlayer.OnInitializedListener() {
- @Override public void onInitializationSuccess(YouTubePlayer.Provider provider,
- YouTubePlayer player, boolean wasRestored) {
+ @Override
+ public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player,
+ boolean wasRestored) {
if (!wasRestored) {
youtubePlayer = player;
youtubePlayer.loadVideo(VIDEO_KEY);
@@ -119,6 +120,7 @@ private void initializeDraggablePanel() {
*/
private void hookDraggablePanelListeners() {
draggablePanel.setDraggableListener(new DraggableListener() {
+
@Override public void onMaximized() {
playVideo();
}
@@ -154,4 +156,13 @@ private void playVideo() {
youtubePlayer.play();
}
}
+
+ //public void onConfigurationChanged(Configuration newConfig) {
+ // super.onConfigurationChanged(newConfig);
+ // if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
+ // draggablePanel.setLockDragMode(true);
+ // } else {
+ // draggablePanel.setLockDragMode(false);
+ // }
+ //}
}