add swipe to dismiss

chengzhenyu 8 years ago
parent
commit
12d4c3eda7

+ 2 - 0
app/src/main/java/ai/pai/lensman/box/BoxUrlContainer.java

@@ -8,6 +8,8 @@ public final class BoxUrlContainer {
8 8
 
9 9
     public static final String SESSION_END_URL = BASE_URL+"session_end";
10 10
 
11
+    public static final String DELETE_PHOTO_URL = BASE_URL+"delete";
12
+
11 13
     public static final String FETCH_THUMBNAIL_URL = BASE_URL+"fetch_thumbnail";
12 14
 
13 15
     public static final String PHOTO_PATH_PREFIX_URL = BASE_URL+"static/";

+ 13 - 0
app/src/main/java/ai/pai/lensman/session/SessionActivity.java

@@ -2,6 +2,7 @@ package ai.pai.lensman.session;
2 2
 
3 3
 import android.app.Activity;
4 4
 import android.content.Intent;
5
+import android.graphics.Canvas;
5 6
 import android.os.Bundle;
6 7
 import android.support.v7.widget.LinearLayoutManager;
7 8
 import android.support.v7.widget.RecyclerView;
@@ -32,6 +33,17 @@ public class SessionActivity extends BaseActivity implements SessionContract.Vie
32 33
 
33 34
     private ItemTouchHelper.Callback mCallback = new ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP | ItemTouchHelper.DOWN,
34 35
             ItemTouchHelper.LEFT|ItemTouchHelper.RIGHT) {
36
+
37
+        @Override
38
+        public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
39
+            super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
40
+            if(actionState == ItemTouchHelper.ACTION_STATE_SWIPE) {
41
+                final float alpha = 1 - Math.abs(dX) / (float)viewHolder.itemView.getWidth();
42
+                viewHolder.itemView.setAlpha(alpha);
43
+                viewHolder.itemView.setTranslationX(dX);
44
+            }
45
+        }
46
+
35 47
         @Override
36 48
         public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
37 49
             return false;
@@ -40,6 +52,7 @@ public class SessionActivity extends BaseActivity implements SessionContract.Vie
40 52
         @Override
41 53
         public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
42 54
             int position = viewHolder.getAdapterPosition();
55
+            presenter.swipeToDeletePhoto(position);
43 56
             adapter.removePhotoAtIndex(position);
44 57
         }
45 58
     };

+ 1 - 1
app/src/main/java/ai/pai/lensman/session/SessionContract.java

@@ -17,6 +17,6 @@ public class SessionContract {
17 17
     }
18 18
 
19 19
     interface Presenter extends BasePresenter{
20
-
20
+        void swipeToDeletePhoto(int index);
21 21
     }
22 22
 }

+ 8 - 0
app/src/main/java/ai/pai/lensman/session/SessionInteractor.java

@@ -251,6 +251,14 @@ public class SessionInteractor {
251 251
         listener.onSessionEnd(sessionBean.sessionId);
252 252
     }
253 253
 
254
+    public void deletePhoto(){
255
+        HashMap<String,String> params = new HashMap<>();
256
+        params.put("lensman",sessionBean.lensmanId);
257
+        params.put("session",sessionBean.sessionId);
258
+        HttpPostTask deleteTask = new HttpPostTask(params);
259
+        deleteTask.executeOnExecutor(ThreadExecutor.getInstance().getExecutor(), BoxUrlContainer.DELETE_PHOTO_URL);
260
+    }
261
+
254 262
     private void cancelTask(HttpPostTask task){
255 263
         if(task==null){
256 264
             return;

+ 34 - 7
app/src/main/java/ai/pai/lensman/session/SessionPresenter.java

@@ -1,33 +1,52 @@
1 1
 package ai.pai.lensman.session;
2 2
 
3
+import android.os.SystemClock;
4
+
3 5
 import java.util.ArrayList;
4 6
 
5 7
 import ai.pai.lensman.bean.PhotoBean;
6 8
 import ai.pai.lensman.bean.SessionBean;
7 9
 import ai.pai.lensman.db.DBService;
8 10
 
9
-public class SessionPresenter implements SessionContract.Presenter,SessionInteractor.SessionListener{
11
+public class SessionPresenter implements SessionContract.Presenter, SessionInteractor.SessionListener {
10 12
 
11 13
     private SessionInteractor interactor;
12 14
     private ArrayList<PhotoBean> photoList;
13 15
     private SessionContract.View sessionView;
14 16
     private SessionBean sessionBean;
15 17
 
16
-    public SessionPresenter(SessionBean sessionBean, SessionContract.View view){
18
+    public SessionPresenter(SessionBean sessionBean, SessionContract.View view) {
17 19
         this.sessionView = view;
18 20
         this.sessionBean = sessionBean;
19
-        interactor = new SessionInteractor(sessionBean,this);
21
+        interactor = new SessionInteractor(sessionBean, this);
20 22
     }
21 23
 
22 24
     @Override
23 25
     public void start() {
24 26
         photoList = DBService.getInstance().getPhotoListBySessionId(sessionBean.sessionId);
25
-        if(photoList.size()==0){
27
+        //TODO for test
28
+        for (int k = 0; k < 10; k++) {
29
+            PhotoBean bean = new PhotoBean();
30
+            long milisec = System.currentTimeMillis();
31
+            bean.photoName = milisec + ".jpg";
32
+            bean.photoId = milisec;
33
+            bean.photoPath = "http://e.hiphotos.baidu.com/image/h%3D200/sign=31e61d6532f33a87816d071af65d1018/95eef01f3a292df504213240b4315c6035a87381.jpg";
34
+            bean.captureTime = bean.photoId;
35
+            bean.isRawPhoto = false;
36
+            bean.isUploaded = false;
37
+            bean.sessionId = sessionBean.sessionId;
38
+            bean.lensmanId = sessionBean.lensmanId;
39
+            bean.sessionSeq = sessionBean.sessionSeq;
40
+            bean.sessionDate = sessionBean.sessionDate;
41
+            photoList.add(bean);
42
+            SystemClock.sleep(10);
43
+        }
44
+        if (photoList.size() == 0) {
26 45
             sessionView.showEmptyView();
27
-        }else{
46
+        } else {
28 47
             sessionView.showPhotoRecyclerView();
29
-            for(PhotoBean bean : photoList){
30
-                sessionView.addNewPhoto(bean);
48
+            for (PhotoBean photoBean : photoList) {
49
+                sessionView.addNewPhoto(photoBean);
31 50
             }
32 51
         }
33 52
         interactor.startSession();
@@ -59,4 +78,12 @@ public class SessionPresenter implements SessionContract.Presenter,SessionIntera
59 78
     public void onSessionEnd(String session) {
60 79
 
61 80
     }
81
+
82
+    @Override
83
+    public void swipeToDeletePhoto(int index) {
84
+        PhotoBean photoBean = photoList.get(index);
85
+        photoList.remove(photoBean);
86
+        DBService.getInstance().deletePhotoBean(photoBean);
87
+        interactor.deletePhoto();
88
+    }
62 89
 }