Просмотр исходного кода

修复media插件加载视频帧图片可能不全的问题;
足迹中不再跳转到ios相关内容上;
跳转到视频列表选择界面前检查输入法并先隐藏

zengjiebin лет назад: 7
Родитель
Сommit
66571c9e51

+ 37 - 0
app/src/main/java/com/lqr/emoji/EmotionKeyboard.java

@@ -314,4 +314,41 @@ public class EmotionKeyboard {
     public int getKeyBoardHeight() {
         return mSp.getInt(SHARE_PREFERENCE_SOFT_INPUT_HEIGHT, 400);
     }
+
+    //如果输入法在窗口上已经显示,则隐藏,反之则显示
+    public static void showOrHide(Context context) {
+        InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
+        if (imm != null)
+            imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
+    }
+
+    //view为接受软键盘输入的视图,SHOW_FORCED表示强制显示
+    public static void showOrHide(Context context, View view) {
+        InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
+        if (imm != null)
+            //  imm.showSoftInput(view, InputMethodManager.SHOW_FORCED);//SHOW_FORCED表示强制显示
+            imm.hideSoftInputFromWindow(view.getWindowToken(), 0); //强制隐藏键盘
+    }
+
+    //调用隐藏系统默认的输入法
+    public static void showOrHide(Context context, Activity activity) {
+        InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
+        if (imm != null && activity.getCurrentFocus() != null)
+            imm.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(),
+                    InputMethodManager.HIDE_NOT_ALWAYS);
+    }
+
+//    //获取输入法打开的状态
+//    public static boolean isShowing(View view) {
+//        InputMethodManager imm = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
+//        return imm != null && imm.isActive(view);//isOpen若返回true,则表示输入法打开
+//    }
+    //获取输入法打开的状态,并尝试隐藏
+    public static boolean checkInputMethodVisible(View view){
+        InputMethodManager imm = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
+        if (imm != null && imm.hideSoftInputFromWindow(view.getWindowToken(), 0)) {
+            return true;
+        }
+        return false;
+    }
 }

+ 13 - 1
app/src/main/java/com/sheep/gamegroup/model/entity/UserFootprint.java

@@ -55,6 +55,8 @@ public class UserFootprint {
 
     private int user_id;
 
+    private int platform;
+
     public void setBonus(float bonus){
         this.bonus = bonus;
     }
@@ -116,9 +118,19 @@ public class UserFootprint {
         return this.user_id;
     }
 
+    public int getPlatform() {
+        return platform;
+    }
 
+    public void setPlatform(int platform) {
+        this.platform = platform;
+    }
 
-//    足迹类型 1:游戏,应用 2:任务 3:咨询
+    //    平台 0 全平台 1:安卓 2:ios
+    public static final int PLATFORM_ALL = 0;
+    public static final int PLATFORM_ANDROID = 1;
+    public static final int PLATFORM_IOS = 2;
+    //    足迹类型 1:游戏,应用 2:任务 3:咨询
     public static final int TYPE_APP = 1;
     public static final int TYPE_TASK = 2;
     public static final int TYPE_ARTICLE = 3;

+ 6 - 0
app/src/main/java/com/sheep/gamegroup/view/activity/ActPublishArticle.java

@@ -9,8 +9,10 @@ import android.widget.EditText;
 import android.widget.ImageView;
 
 import com.bumptech.glide.Glide;
+import com.bumptech.glide.request.RequestOptions;
 import com.chad.library.adapter.base.BaseQuickAdapter;
 import com.chad.library.adapter.base.BaseViewHolder;
+import com.lqr.emoji.EmotionKeyboard;
 import com.qiniu.android.http.ResponseInfo;
 import com.qiniu.android.storage.UpCompletionHandler;
 import com.qiniu.android.storage.UpProgressHandler;
@@ -101,6 +103,7 @@ public class ActPublishArticle extends BaseActivity {
                 } else {
                     Glide.with(SheepApp.getInstance())
                             .load(new File(item))
+                            .apply(new RequestOptions().placeholder(R.drawable.loading_01))
                             .into(imageView);
                     helper.itemView.setOnClickListener(new View.OnClickListener() {
                         @Override
@@ -125,6 +128,9 @@ public class ActPublishArticle extends BaseActivity {
     }
 
     private void addVideo() {
+        if(EmotionKeyboard.checkInputMethodVisible(editText)){
+            return;
+        }
         Jump2View.getInstance().gotoActMediaChoose(MEDIA_TYPE_NONE);
     }
 

+ 40 - 37
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtFootprint.java

@@ -97,19 +97,22 @@ public class FgtFootprint extends BaseListFragment4<UserFootprint> {
         mRecyclerView.setAdapter(adapter);
         adapter.setOnItemClickListener((adapter, view, position) -> {
             UserFootprint item = ListUtil.getItem(list, position);
-            if(item != null){
-                switch (item.getType()){
-                    default:
-                    case UserFootprint.TYPE_APP:
-                        Jump2View.getInstance().goPlayGameDetail(activity, item.getRelation_id());
-                        break;
-                    case UserFootprint.TYPE_ARTICLE:
-                        Jump2View.getInstance().goFindItem(activity, item.getRelation_id());
-                        break;
-                    case UserFootprint.TYPE_TASK:
-                        Jump2View.getInstance().goTaskDetailView(activity, item.getRelation_id());
-                        break;
-                }
+            if (item != null) {
+                if (item.getPlatform() == UserFootprint.PLATFORM_ALL || item.getPlatform() == UserFootprint.PLATFORM_ANDROID)
+                    switch (item.getType()) {
+                        default:
+                        case UserFootprint.TYPE_APP:
+                            Jump2View.getInstance().goPlayGameDetail(activity, item.getRelation_id());
+                            break;
+                        case UserFootprint.TYPE_ARTICLE:
+                            Jump2View.getInstance().goFindItem(activity, item.getRelation_id());
+                            break;
+                        case UserFootprint.TYPE_TASK:
+                            Jump2View.getInstance().goTaskDetailView(activity, item.getRelation_id());
+                            break;
+                    }
+                else
+                    G.showToast("请使用苹果手机进行查看");
             }
         });
 
@@ -231,36 +234,36 @@ public class FgtFootprint extends BaseListFragment4<UserFootprint> {
         String start_date = String.format(Locale.CHINA, "%d-%02d-%02d", year, month, 1);
         String end_date = String.format(Locale.CHINA, "%d-%02d-%02d", year, month, TimeUtil.getTotalDay(month));
         SheepApp.getInstance().getNetComponent().getApiService().getUserFootPrintDateCount(start_date, end_date)
-                        .subscribeOn(Schedulers.io())
-                        .observeOn(AndroidSchedulers.mainThread())
-                        .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
-                            @Override
-                            public void onNext(BaseMessage baseMessage) {
-                                List<FootprintCountRespons> newList = baseMessage.getDataList(FootprintCountRespons.class);
-                                if(!ListUtil.isEmpty(newList)){
-                                    loadFootprintCountList(year, month, newList);
-                                }
-                            }
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
+                    @Override
+                    public void onNext(BaseMessage baseMessage) {
+                        List<FootprintCountRespons> newList = baseMessage.getDataList(FootprintCountRespons.class);
+                        if (!ListUtil.isEmpty(newList)) {
+                            loadFootprintCountList(year, month, newList);
+                        }
+                    }
 
-                            @Override
-                            public void onError(BaseMessage baseMessage) {
-                                if(TestUtil.isDev())
-                                    G.showToast(baseMessage);
-                            }
-                        });
+                    @Override
+                    public void onError(BaseMessage baseMessage) {
+                        if (TestUtil.isDev())
+                            G.showToast(baseMessage);
+                    }
+                });
     }
 
     private void loadFootprintCountList(final int year, final int month, List<FootprintCountRespons> newList) {
         final Map<String, Calendar> map = new HashMap<>();
         ListUtil.forEach(newList, new Action1<FootprintCountRespons>() {
-                    @Override
-                    public void call(FootprintCountRespons item) {
-                        if(item != null && item.getCount() > 0) {
-                            Calendar calendar = getSchemeCalendar(year, month, item.getDay(), String.valueOf(item.getCount()));
-                            map.put(calendar.toString(), calendar);
-                        }
-                    }
-                });
+            @Override
+            public void call(FootprintCountRespons item) {
+                if (item != null && item.getCount() > 0) {
+                    Calendar calendar = getSchemeCalendar(year, month, item.getDay(), String.valueOf(item.getCount()));
+                    map.put(calendar.toString(), calendar);
+                }
+            }
+        });
         //此方法在巨大的数据量上不影响遍历性能,推荐使用
         mCalendarView.setSchemeDate(map);
 

+ 8 - 8
media/app/src/main/java/com/kfzs/cfyl/media/activity/ActCutVideo.java

@@ -94,14 +94,14 @@ public class ActCutVideo extends BaseContainerActivity implements MediaPlayer.On
                 if (videoFramesView.getVisibility() == View.VISIBLE)
                     checkDuration(duration.longValue());
                 edit_video_time_tv.setText(getString(R.string.media_has_choose_x_second, new DecimalFormat("#.#").format(duration / 1000.0f)));
-                edit_video_time_tv.append("\t");
-                edit_video_time_tv.append(String.valueOf(duration));
-                edit_video_time_tv.append("\t");
-                edit_video_time_tv.append(String.valueOf(data.getDuration()));
-                edit_video_time_tv.append("\t");
-                edit_video_time_tv.append(String.format(Locale.CHINA, "%.1f秒-%.1f秒", videoFramesView.getStartPoint() / 1000.0f, videoFramesView.getEndPoint() / 1000.0f));
-                edit_video_time_tv.append("\t");
-                edit_video_time_tv.append(videoFramesView.getLineInfo());
+//                edit_video_time_tv.append("\t");
+//                edit_video_time_tv.append(String.valueOf(duration));
+//                edit_video_time_tv.append("\t");
+//                edit_video_time_tv.append(String.valueOf(data.getDuration()));
+//                edit_video_time_tv.append("\t");
+//                edit_video_time_tv.append(String.format(Locale.CHINA, "%.1f秒-%.1f秒", videoFramesView.getStartPoint() / 1000.0f, videoFramesView.getEndPoint() / 1000.0f));
+//                edit_video_time_tv.append("\t");
+//                edit_video_time_tv.append(videoFramesView.getLineInfo());
             }
         });
         //隐藏视频剪切相关view

+ 3 - 3
media/app/src/main/java/com/kfzs/cfyl/media/customview/VideoFramesView.java

@@ -359,12 +359,12 @@ public class VideoFramesView extends RelativeLayout {
         List<VideoFrame> videoFrameList = new ArrayList<>();
         final int size = 10;
         long duration = video.getDuration();
-        final long per = duration * 1000L / (size -1);
+        final long per = duration * 1000L / size;
         String path = video.getFilePath();
 
         for (int i = 0; i < size; i++) {
-            long atTime = i + 1 == size ? (duration / 1000L * 1000_000L - per / 5) : i * per;
-//            LogUtil.println(VideoFramesView.class.getSimpleName(), "showVideoList2", duration, i, per, atTime);
+            long atTime = i + 1 == size ? (i * per - per / 2) : i * per;//这个框架真的是无语了,正常分最后的图片总是获取不到
+            LogUtil.println(VideoFramesView.class.getSimpleName(), "showVideoList2", duration, i, per, atTime);
             videoFrameList.add(new VideoFrame().setVideoPath(path).setAtTime(atTime)
                     .setWidth(video.getWidth()).setHeight(video.getHeight())
                     .setOrientation(video.getOrientation())