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); + // } + //} }