Skip to content

Commit d707651

Browse files
committed
Fix motion handling
Change to determine paging direction with ACTION_DOWN
1 parent 37c423f commit d707651

File tree

4 files changed

+67
-16
lines changed

4 files changed

+67
-16
lines changed

OCEBook/app/src/main/java/com/devgrapher/ocebook/ReaderActivity.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import java.util.ArrayList;
3434
import java.util.Locale;
3535
import java.util.concurrent.atomic.AtomicInteger;
36+
import java.util.stream.Stream;
3637

3738

3839
public class ReaderActivity extends AppCompatActivity
@@ -221,6 +222,7 @@ public void onBrowsePageInProgress(int spineIndex, int totalSpine, int pageCount
221222
int percent = (int) ((spineIndex + 1) / (float) totalSpine * 100);
222223
mPageInfoTextView.setText("" + percent + "%");
223224

225+
224226
// reset
225227
if (spineIndex == 0) {
226228
mPageCounts = new PageCounts(totalSpine);
@@ -229,7 +231,7 @@ public void onBrowsePageInProgress(int spineIndex, int totalSpine, int pageCount
229231
// Store page counts for each spine.
230232
mPageCounts.updatePage(spineIndex, pageCount);
231233

232-
// done
234+
// if done
233235
if (percent == 100) {
234236
mPageCounts.updateComplete();
235237
onPageChanged(mCurrentSpinePage, mCurrentSpine);

OCEBook/app/src/main/java/com/devgrapher/ocebook/WebViewFragment.java

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import com.devgrapher.ocebook.model.Page;
2424
import com.devgrapher.ocebook.model.PaginationInfo;
2525
import com.devgrapher.ocebook.model.ViewerSettings;
26+
import com.devgrapher.ocebook.util.MotionHandler;
2627

2728
import org.readium.sdk.android.Container;
2829
import org.readium.sdk.android.Package;
@@ -113,20 +114,17 @@ private void initWebView() {
113114
mWebView.getSettings().setAllowUniversalAccessFromFileURLs(true);
114115
mWebView.setWebViewClient(new ReadiumWebViewClient());
115116
mWebView.setWebChromeClient(new WebChromeClient());
117+
mWebView.setOnTouchListener(new MotionHandler(new MotionHandler.OnMotionListener() {
118+
@Override
119+
public void onMoveNextPage() {
120+
mReadiumCtx.getApi().openPageRight();
121+
}
116122

117-
mWebView.setOnTouchListener((View v, MotionEvent event) -> {
118-
switch (event.getAction()) {
119-
case MotionEvent.ACTION_UP:
120-
if (event.getX() < v.getWidth() / 2) {
121-
Log.d(TAG, "Touch left");
122-
mReadiumCtx.getApi().openPageLeft();
123-
} else {
124-
Log.d(TAG, "Touch right");
125-
mReadiumCtx.getApi().openPageRight();
126-
}
127-
}
128-
return false;
129-
});
123+
@Override
124+
public void onMovePreviousPage() {
125+
mReadiumCtx.getApi().openPageLeft();
126+
}
127+
}));
130128
}
131129

132130
private void initReadium() {

OCEBook/app/src/main/java/com/devgrapher/ocebook/readium/TocHelper.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77
import java.util.stream.Stream;
88

99
/**
10-
* Created by Brent on 2/17/17.
11-
*
1210
* Help to navigate through the Table of Contents.
1311
* This flattens children tree and caches it.
1412
*/
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package com.devgrapher.ocebook.util;
2+
3+
import android.support.v4.util.Pair;
4+
import android.util.Log;
5+
import android.view.MotionEvent;
6+
import android.view.View;
7+
8+
/**
9+
* Hide implementations of motion handling.
10+
* This only provides motions that we desired through OnMotionListener.
11+
*/
12+
13+
public class MotionHandler implements View.OnTouchListener {
14+
15+
private static final String TAG = MotionHandler.class.toString();
16+
private final OnMotionListener mMotionListener;
17+
18+
private Pair<Float, Float> mStartPos;
19+
20+
public interface OnMotionListener {
21+
void onMoveNextPage();
22+
void onMovePreviousPage();
23+
}
24+
25+
public MotionHandler(OnMotionListener listener) {
26+
mMotionListener = listener;
27+
}
28+
29+
@Override
30+
public boolean onTouch(View v, MotionEvent event) {
31+
switch (event.getAction()) {
32+
case MotionEvent.ACTION_UP:
33+
if (mStartPos != null) {
34+
if (mStartPos.first < v.getWidth() / 2) {
35+
Log.d(TAG, "Touch left");
36+
mMotionListener.onMovePreviousPage();
37+
} else {
38+
Log.d(TAG, "Touch right");
39+
mMotionListener.onMoveNextPage();
40+
}
41+
mStartPos = null;
42+
}
43+
break;
44+
case MotionEvent.ACTION_DOWN:
45+
mStartPos = Pair.create(event.getX(), event.getY());
46+
break;
47+
case MotionEvent.ACTION_CANCEL:
48+
mStartPos = null;
49+
break;
50+
}
51+
return false;
52+
}
53+
}

0 commit comments

Comments
 (0)