From 0fdb8fa8fbe95f4fcac802c51001e9cec9b716dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=B5=9B=E5=BA=B7?= <chensaikang@haomo-studio.com> Date: Mon, 9 Apr 2018 14:38:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=90=9C=E7=B4=A2=E5=8A=9F=E8=83=BD=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 6 +- app/src/main/AndroidManifest.xml | 3 +- .../androidocr/studio/OcrApplication.java | 6 - .../bril/androidocr/studio/beans/OcrInfo.java | 71 ++- .../studio/configs/RequestConfig.java | 21 +- .../androidocr/studio/http/HttpHolder.java | 103 +++-- .../studio/interf/OnHttpListener.java | 4 +- .../studio/ui/activity/BaseActivity.java | 2 + .../studio/ui/activity/MainActivity.java | 404 +++++++++++++++++- .../studio/ui/activity/VertifyActivity.java | 169 ++++---- .../ui/adapter/FragmentListAdapter.java | 79 +++- .../ui/adapter/TabFragmentPagerAdapter.java | 18 +- .../studio/ui/fragment/ExportFragment.java | 166 ++++++- .../studio/ui/fragment/ShareFragment.java | 172 ++++++-- .../androidocr/studio/utils/FileUtil.java | 18 + .../androidocr/studio/utils/ScreenUtil.java | 8 + .../androidocr/studio/utils/ShareUtil.java | 9 +- .../main/res/color/bottom_tab_selector.xml | 4 +- app/src/main/res/layout/activity_main.xml | 27 +- app/src/main/res/layout/export_layout.xml | 1 - .../main/res/layout/listview_item_layout.xml | 19 +- .../main/res/layout/main_bottom_layout.xml | 3 +- app/src/main/res/layout/top_title_layout.xml | 3 +- app/src/main/res/values/dimen.xml | 1 + app/src/main/res/values/strings.xml | 4 + app/src/main/res/values/styles.xml | 12 + 26 files changed, 1083 insertions(+), 250 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 9dc49cc..7d390fa 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,5 +1,5 @@ apply plugin: 'com.android.application' - +apply plugin: 'com.jakewharton.butterknife' configurations.all { resolutionStrategy.force 'com.android.support:support-annotations:23.1.0' } @@ -57,6 +57,8 @@ dependencies { compile files('libs/poi/poi-3.17.jar') compile files('libs/poi/poi-scratchpad-3.17.jar') compile project(':scanlibrary') + + compile 'com.android.support:appcompat-v7:25.3.1' compile 'com.android.support:design:25.3.1' compile 'com.github.bumptech.glide:glide:4.3.1' @@ -64,8 +66,8 @@ dependencies { compile 'com.android.support.constraint:constraint-layout:1.0.2' compile 'org.xutils:xutils:3.5.0' compile 'com.android.support:support-v4:25.3.1' + compile 'com.google.code.gson:gson:2.8.1' testCompile 'junit:junit:4.12' annotationProcessor 'com.github.bumptech.glide:compiler:4.3.1' annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1' - compile 'com.google.code.gson:gson:2.8.1' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 79358c1..c136ab7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -22,7 +22,7 @@ <intent-filter> <action android:name="android.intent.action.MAIN" /> - <!--<category android:name="android.intent.category.LAUNCHER" />--> + <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".ui.activity.RecognizeActivity" /> @@ -38,6 +38,7 @@ <activity android:name=".ui.activity.OcrRecordActivity" android:launchMode="singleTask" /> + <activity android:name=".ui.activity.SearchActivity"></activity> </application> </manifest> \ No newline at end of file diff --git a/app/src/main/java/cn/com/bril/androidocr/studio/OcrApplication.java b/app/src/main/java/cn/com/bril/androidocr/studio/OcrApplication.java index 53368c5..6800ad8 100644 --- a/app/src/main/java/cn/com/bril/androidocr/studio/OcrApplication.java +++ b/app/src/main/java/cn/com/bril/androidocr/studio/OcrApplication.java @@ -99,12 +99,6 @@ public class OcrApplication extends Application { } } public void exit(){ -// for (Activity activity : activities) { -// if (activity!=null) { -// activity.finish(); -// } -// } -// System.exit(1); ActivityManager manager = (ActivityManager)getApplicationContext().getSystemService(ACTIVITY_SERVICE); //获å–应用程åºç®¡ç†å™¨ manager.killBackgroundProcesses(getPackageName()); //强制结æŸå½“å‰åº”ç”¨ç¨‹åº } diff --git a/app/src/main/java/cn/com/bril/androidocr/studio/beans/OcrInfo.java b/app/src/main/java/cn/com/bril/androidocr/studio/beans/OcrInfo.java index 014b280..23badef 100644 --- a/app/src/main/java/cn/com/bril/androidocr/studio/beans/OcrInfo.java +++ b/app/src/main/java/cn/com/bril/androidocr/studio/beans/OcrInfo.java @@ -2,19 +2,42 @@ package cn.com.bril.androidocr.studio.beans; /** * Created by sunny on 2018-3-16. - * status 0导出;1分享 + * 主文件 + * status 为文件归属 */ public class OcrInfo { - private String id; + private String id; + private String fileName; + private String filePath; - private String uploadUser; - private String lastUpdateTime; + + private String fileSuffix; + + private String uploadPeple; + private String createTime; + + private String lastUpdateTime; + + private String fileType; + private String status; + private String remark; + + private boolean isChecked; + + public boolean isChecked() { + return isChecked; + } + + public void setChecked(boolean checked) { + isChecked = checked; + } + public String getId() { return id; } @@ -39,20 +62,20 @@ public class OcrInfo { this.filePath = filePath; } - public String getUploadUser() { - return uploadUser; + public String getFileSuffix() { + return fileSuffix; } - public void setUploadUser(String uploadUser) { - this.uploadUser = uploadUser; + public void setFileSuffix(String fileSuffix) { + this.fileSuffix = fileSuffix; } - public String getLastUpdateTime() { - return lastUpdateTime; + public String getUploadPeple() { + return uploadPeple; } - public void setLastUpdateTime(String lastUpdateTime) { - this.lastUpdateTime = lastUpdateTime; + public void setUploadPeple(String uploadPeple) { + this.uploadPeple = uploadPeple; } public String getCreateTime() { @@ -63,6 +86,22 @@ public class OcrInfo { this.createTime = createTime; } + public String getLastUpdateTime() { + return lastUpdateTime; + } + + public void setLastUpdateTime(String lastUpdateTime) { + this.lastUpdateTime = lastUpdateTime; + } + + public String getFileType() { + return fileType; + } + + public void setFileType(String fileType) { + this.fileType = fileType; + } + public String getStatus() { return status; } @@ -70,4 +109,12 @@ public class OcrInfo { public void setStatus(String status) { this.status = status; } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } } diff --git a/app/src/main/java/cn/com/bril/androidocr/studio/configs/RequestConfig.java b/app/src/main/java/cn/com/bril/androidocr/studio/configs/RequestConfig.java index 5db6fc2..b865bb8 100644 --- a/app/src/main/java/cn/com/bril/androidocr/studio/configs/RequestConfig.java +++ b/app/src/main/java/cn/com/bril/androidocr/studio/configs/RequestConfig.java @@ -7,14 +7,27 @@ package cn.com.bril.androidocr.studio.configs; public class RequestConfig { public static int TAKE_PHOTO_REQUEST=1; public static int PERMISSION_REQUEST_CODE=99; -// public static String BASE_URL="http://zjk.haomo-studio.com/zhangjiakouOA/"; - public static String BASE_URL="http://192.168.1.72:8050/zhangjiakouOA/"; + public static String BASE_URL="http://zjk.haomo-studio.com/zhangjiakouOA/"; +// public static String BASE_URL="http://192.168.1.72:8050/zhangjiakouOA/"; //æ·»åŠ - public static String ADD_URL=BASE_URL+"cc_ocr_files/new?"; + public static String ADD_URL=BASE_URL+"cc_files/new"; //ä¸Šä¼ æ–‡ä»¶ public static String UP_FILE=BASE_URL+"upload_ocr_file"; + //编辑文件 + public static String EDIT_FILE_URL=BASE_URL+"cc_files/"; + //创建导出记录 + public static String EXPORT_CREATE_URL=BASE_URL+"cc_export_records/new"; //导出记录 - public static String EXPORT_LIST_URL=BASE_URL+"cc_ocr_files?"; + public static String EXPORT_RECORD_URL=BASE_URL+"cc_export_records"; + //分享记录 + public static String SHARE_RECORD_URL=BASE_URL+"cc_sharing_records"; + //批é‡å¯¼å‡º + public static String BATCH_EXPORT_URL=BASE_URL+"cc_ocr_files/create/batch"; + //批é‡åˆ 除 + public static String BATCH_DELETE_URL=BASE_URL+"cc_export_records/delete/batch"; + //文件下载 + public static String DOWN_LOAD_URL=BASE_URL+"file_down"; + diff --git a/app/src/main/java/cn/com/bril/androidocr/studio/http/HttpHolder.java b/app/src/main/java/cn/com/bril/androidocr/studio/http/HttpHolder.java index 4506a50..cda26e7 100644 --- a/app/src/main/java/cn/com/bril/androidocr/studio/http/HttpHolder.java +++ b/app/src/main/java/cn/com/bril/androidocr/studio/http/HttpHolder.java @@ -1,7 +1,6 @@ package cn.com.bril.androidocr.studio.http; -import android.util.Log; - +import org.json.JSONArray; import org.xutils.common.Callback; import org.xutils.common.util.KeyValue; import org.xutils.http.RequestParams; @@ -14,10 +13,11 @@ import java.util.Iterator; import java.util.List; import java.util.Map; +import cn.com.bril.androidocr.studio.beans.OcrRootBean; import cn.com.bril.androidocr.studio.configs.RequestConfig; import cn.com.bril.androidocr.studio.interf.OnHttpListener; - -import static com.bumptech.glide.gifdecoder.GifHeaderParser.TAG; +import cn.com.bril.androidocr.studio.ui.activity.VertifyActivity; +import cn.com.bril.androidocr.studio.utils.GsonUtil; /** * Created by sunny on 2018-3-12. @@ -26,7 +26,7 @@ import static com.bumptech.glide.gifdecoder.GifHeaderParser.TAG; public class HttpHolder { //add - public static void exportFile(String url,Map<String,Object> map,Callback.CommonCallback<String> callback){ + public static void exportFile(String url, Map<String,Object> map, VertifyActivity.HttpCallBack callBack){ RequestParams params=new RequestParams(url); Iterator<Map.Entry<String,Object>> it = map.entrySet().iterator(); while (it.hasNext()){ @@ -36,56 +36,97 @@ public class HttpHolder { else params.addHeader("X-Auth-Token",String.valueOf(entry.getValue())); } - x.http().post(params,callback); + x.http().post(params,callBack); } - public static String upLoadFile(String path, final OnHttpListener listener){ - - String flg=""; + public static void upLoadFile(String path, VertifyActivity.HttpCallBack callBack){ RequestParams params=new RequestParams(RequestConfig.UP_FILE); - params.setConnectTimeout(10000); - params.setReadTimeout(5000); - //创建List<KeyValue>对象 List<KeyValue> list = new ArrayList<>(); - //ç»™list䏿·»åŠ æ•°æ®ï¼ŒfilePahæ˜¯ä¸Šä¼ çš„æ–‡ä»¶è·¯å¾„ï¼Œæ¯”å¦‚sdå¡ä¸å›¾ç‰‡ list.add(new KeyValue("file", new File(path)));//æ–‡ä»¶æµæ•°æ® -// //å…¶å®ƒå‚æ•°ï¼Œæ ¹æ®é¡¹ç›®è€Œå®šï¼Œæ¯”如我的项目ä¸è¦ä¼ å…¥çš„å‚æ•°æ˜¯jsonæ ¼å¼çš„ // list.add(new KeyValue("parameters", json.toString())); - //创建MultipartBody MultipartBody body = new MultipartBody(list, "UTF-8"); //æ·»åŠ è¯·æ±‚å‚æ•° params.setRequestBody(body); -// - File file=new File(path); - boolean flag=file.exists(); -// params.addBodyParameter("file",file); + x.http().post(params,callBack); + }; - x.http().post(params, new Callback.CommonCallback<String>() { + //创建记录 + public static void createFileRecord(String url,Map<String,Object> map,Callback.CommonCallback<String> listener){ + RequestParams params=new RequestParams(url); + Iterator<Map.Entry<String,Object>> it = map.entrySet().iterator(); + while (it.hasNext()){ + Map.Entry<String,Object> entry = it.next(); + if(!"header".equals(entry.getKey())) + params.addBodyParameter(entry.getKey(),String.valueOf(entry.getValue())); + else + params.addHeader("X-Auth-Token",String.valueOf(entry.getValue())); + } + x.http().post(params,listener); + } + //批é‡å¯¼å‡º + + /** + * + * @param infos + * @param http + */ + public static void volumeExport(List<OcrRootBean.Superior> infos, final OnHttpListener http){ + RequestParams params=new RequestParams(RequestConfig.BATCH_EXPORT_URL); + params.addHeader("X-Auth-Token","ocr"); + String json= GsonUtil.getInstance().toJson(infos); + params.addBodyParameter("params",json); + x.http().get(params, new Callback.CommonCallback<String>() { @Override public void onSuccess(String result) { - String data=result; - listener.success(data); + http.success("",result); } - @Override public void onError(Throwable ex, boolean isOnCallback) { - Log.e(TAG, "onError: "+ex.getMessage(),ex ); - listener.error(ex); + http.error("",ex); } - @Override public void onCancelled(CancelledException cex) { - } - @Override public void onFinished() { - } }); + } + //批é‡åˆ 除 + public static void volumeDelete(final List<OcrRootBean.Superior> list, final OnHttpListener listener){ + JSONArray array= new JSONArray(); + for(int i=0;i<list.size();i++) + array.put(list.get(i).getId()); + RequestParams params=new RequestParams(RequestConfig.BATCH_DELETE_URL); + params.addBodyParameter("ids",array.toString()); - return flg; - }; + x.http().post(params, new Callback.CommonCallback<String>() { + @Override + public void onSuccess(String result) { + listener.success("delete",result); + } + @Override + public void onError(Throwable ex, boolean isOnCallback) { + listener.error("",ex); + } + @Override + public void onCancelled(CancelledException cex) { + } + @Override + public void onFinished() { + } + }); + } + //å•个下载 + public static void downLoad(Map<String,String> map,MainHttpCallBack callBack){ + RequestParams params=new RequestParams(RequestConfig.DOWN_LOAD_URL); + Iterator<Map.Entry<String,String>> it = map.entrySet().iterator(); + while (it.hasNext()){ + Map.Entry<String,String> entry = it.next(); + params.addBodyParameter(entry.getKey(),String.valueOf(entry.getValue())); + } + x.http().get(params,callBack); + } } diff --git a/app/src/main/java/cn/com/bril/androidocr/studio/interf/OnHttpListener.java b/app/src/main/java/cn/com/bril/androidocr/studio/interf/OnHttpListener.java index 37c29c1..17ad42d 100644 --- a/app/src/main/java/cn/com/bril/androidocr/studio/interf/OnHttpListener.java +++ b/app/src/main/java/cn/com/bril/androidocr/studio/interf/OnHttpListener.java @@ -6,7 +6,7 @@ package cn.com.bril.androidocr.studio.interf; public interface OnHttpListener { - void success(String result); + void success(String type,String result); - void error(Throwable t); + void error(String type,Throwable t); } diff --git a/app/src/main/java/cn/com/bril/androidocr/studio/ui/activity/BaseActivity.java b/app/src/main/java/cn/com/bril/androidocr/studio/ui/activity/BaseActivity.java index ef199cb..70508d8 100644 --- a/app/src/main/java/cn/com/bril/androidocr/studio/ui/activity/BaseActivity.java +++ b/app/src/main/java/cn/com/bril/androidocr/studio/ui/activity/BaseActivity.java @@ -59,4 +59,6 @@ public class BaseActivity extends AppCompatActivity { private void dispatchBadLicense() { showDialog( BaseActivity.DIALOG_BAD_LICENSE ); } + + } diff --git a/app/src/main/java/cn/com/bril/androidocr/studio/ui/activity/MainActivity.java b/app/src/main/java/cn/com/bril/androidocr/studio/ui/activity/MainActivity.java index e601a7d..72cedb6 100644 --- a/app/src/main/java/cn/com/bril/androidocr/studio/ui/activity/MainActivity.java +++ b/app/src/main/java/cn/com/bril/androidocr/studio/ui/activity/MainActivity.java @@ -1,39 +1,72 @@ package cn.com.bril.androidocr.studio.ui.activity; +import android.app.AlertDialog; +import android.app.ProgressDialog; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; +import android.graphics.Bitmap; +import android.graphics.drawable.BitmapDrawable; +import android.net.Uri; import android.os.Bundle; +import android.os.Handler; import android.os.IBinder; +import android.os.Message; import android.os.RemoteException; import android.support.annotation.IdRes; import android.support.annotation.NonNull; import android.support.design.widget.FloatingActionButton; import android.support.v4.app.Fragment; import android.support.v4.view.ViewPager; +import android.view.Gravity; +import android.view.LayoutInflater; import android.view.View; +import android.widget.EditText; +import android.widget.ImageView; import android.widget.LinearLayout; +import android.widget.PopupWindow; import android.widget.RadioGroup; +import android.widget.RelativeLayout; import android.widget.TextView; +import android.widget.Toast; import com.bril.baoding.studio.aidl.GetUserid; import com.scanlibrary.ScanConstants; +import org.json.JSONException; +import org.json.JSONObject; +import org.xutils.http.RequestParams; +import org.xutils.x; + import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; import cn.com.bril.androidocr.studio.OcrApplication; import cn.com.bril.androidocr.studio.R; +import cn.com.bril.androidocr.studio.beans.OcrRootBean; import cn.com.bril.androidocr.studio.configs.Configs; +import cn.com.bril.androidocr.studio.configs.RequestConfig; +import cn.com.bril.androidocr.studio.http.HttpHolder; +import cn.com.bril.androidocr.studio.http.MainHttpCallBack; +import cn.com.bril.androidocr.studio.interf.HandleMenuListener; +import cn.com.bril.androidocr.studio.interf.OnHttpListener; +import cn.com.bril.androidocr.studio.ui.adapter.FragmentListAdapter; import cn.com.bril.androidocr.studio.ui.adapter.TabFragmentPagerAdapter; import cn.com.bril.androidocr.studio.ui.fragment.ExportFragment; import cn.com.bril.androidocr.studio.ui.fragment.ShareFragment; +import cn.com.bril.androidocr.studio.ui.widget.NoScrollViewPager; +import cn.com.bril.androidocr.studio.utils.CustomDialogUtils; +import cn.com.bril.androidocr.studio.utils.FileUtil; +import cn.com.bril.androidocr.studio.utils.ScreenUtil; +import cn.com.bril.androidocr.studio.utils.ViewUtil; -public class MainActivity extends BaseActivity { +public class MainActivity extends BaseActivity implements FragmentListAdapter.ListTextClickListener, View.OnClickListener, HandleMenuListener, ExportFragment.NoticeMessageToMain, OnHttpListener { @BindView(R.id.layout_1) @@ -43,7 +76,39 @@ public class MainActivity extends BaseActivity { @BindView(R.id.layout_3) LinearLayout layout3; @BindView(R.id.viewPager) - ViewPager viewPager; + NoScrollViewPager viewPager; + @BindView(R.id.num) + TextView num; + @BindView(R.id.tab_select) + TextView tabSelect; + @BindView(R.id.export) + TextView export; + @BindView(R.id.share) + TextView share; + @BindView(R.id.rename) + TextView rename; + @BindView(R.id.delete) + TextView delete; + @BindView(R.id.bottom_menu) + RelativeLayout bottomMenu; + @BindView(R.id.left_iv) + ImageView leftIv; + @BindView(R.id.tab_back) + ImageView tabBack; + // @BindView(R.id.tab_head) +// RelativeLayout tabHeader; + @BindView(R.id.topBarLayout) + RelativeLayout topBarLayout; + @BindView(R.id.tab_head) + RelativeLayout tabHead; + @BindView(R.id.head_content) + RelativeLayout headContent; + @BindView(R.id.main_bottom_menu) + LinearLayout mainBottomMenu; + @BindView(R.id.tab_bottom) + LinearLayout tabBottom; + @BindView(R.id.right_iv) + ImageView rightIv; private String picPath; @NonNull @BindView(R.id.rightTv) @@ -59,6 +124,7 @@ public class MainActivity extends BaseActivity { private int type;//获å–图片类型 private GetUserid mService; + private boolean isTabMenuShow = false; private List<Fragment> fragmentList; private ServiceConnection mServiceConnection = new ServiceConnection() { @@ -79,7 +145,16 @@ public class MainActivity extends BaseActivity { } } }; - + private AlertDialog dialog; + private ExportFragment exportFragment; + private ShareFragment shareFragment; + private List<OcrRootBean> selectedInfos; + private OcrRootBean clickedBean; + private EditText reNameEdit;//更改文件å + private TabFragmentPagerAdapter adapter; + private boolean isAllSelected = false; + private ArrayList<Uri> shareFileUris; + private PopupWindow rightMenuWindow; @Override protected void onCreate(Bundle savedInstanceState) { @@ -92,8 +167,11 @@ public class MainActivity extends BaseActivity { initViews(); + setIconSize(); + initEvents(); + dialog = new ProgressDialog(this); } private void bindService() { @@ -103,18 +181,37 @@ public class MainActivity extends BaseActivity { } private void initViews() { - rightTv.setText("导入"); + rightIv.setVisibility(View.VISIBLE); + rightTv.setVisibility(View.GONE); topTitle.setText("OCR识别"); - - fragmentList=new ArrayList<>(); - fragmentList.add(new ExportFragment()); - fragmentList.add(new ShareFragment()); - TabFragmentPagerAdapter adapter=new TabFragmentPagerAdapter(getSupportFragmentManager(),fragmentList); + fragmentList = new ArrayList<>(); + if (exportFragment == null) + exportFragment = new ExportFragment(); + if (shareFragment == null) + shareFragment = new ShareFragment(); + fragmentList.add(exportFragment); + fragmentList.add(shareFragment); + adapter = new TabFragmentPagerAdapter(getSupportFragmentManager(), fragmentList); viewPager.setAdapter(adapter); } + + + + + public void setIconSize() { + + //设置bottom icon å¤§å° +// ViewUtil.setNavImageSize(this, export, R.drawable.export, 55, 55);//40 + ViewUtil.setNavImageSize(this, share, R.drawable.share_focused, 40, 45);//40 +// ViewUtil.setNavImageSize(this, rename, R.drawable.rename, 50, 50);//40 + ViewUtil.setNavImageSize(this, delete, R.drawable.delete_normal, 35, 45);//32 + + } + private void setImageGone() { + layout1.setVisibility(View.GONE); layout2.setVisibility(View.INVISIBLE); layout3.setVisibility(View.INVISIBLE); @@ -132,17 +229,19 @@ public class MainActivity extends BaseActivity { break; case R.id.radio_2: tag = "导出记录"; - setViewShow(0); + setViewShow(0); break; case R.id.radio_3: tag = "分享记录"; - setViewShow(1); + setViewShow(1); break; } topTitle.setText(tag); } }); - + export.setOnClickListener(this); + share.setOnClickListener(this); + delete.setOnClickListener(this); viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { @@ -151,7 +250,7 @@ public class MainActivity extends BaseActivity { @Override public void onPageSelected(int position) { - setViewShow(position); + setViewShow(position); } @Override @@ -166,9 +265,9 @@ public class MainActivity extends BaseActivity { super.onResume(); } - public void setViewShow(int position){ + public void setViewShow(int position) { setImageGone(); - switch (position){ + switch (position) { case 0: layout2.setVisibility(View.VISIBLE); break; @@ -179,25 +278,288 @@ public class MainActivity extends BaseActivity { viewPager.setCurrentItem(position); } - @OnClick({R.id.rightTv, R.id.fabbtn}) + @OnClick({R.id.right_iv, R.id.fabbtn, R.id.tab_select, R.id.tab_back}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.rightTv: type = ScanConstants.OPEN_MEDIA; + Intent intent = new Intent(this, RecognizeActivity.class); + intent.putExtra("type", type); + startActivity(intent); + break; + case R.id.right_iv: + if(null== rightMenuWindow) + showHandleMenu(); + else if(rightMenuWindow !=null&&!rightMenuWindow.isShowing()) + showHandleMenu(); break; case R.id.fabbtn: type = ScanConstants.OPEN_CAMERA; + Intent intent2 = new Intent(this, RecognizeActivity.class); + intent2.putExtra("type", type); + startActivity(intent2); + break; + case R.id.tab_back: + setHandleMenu(View.GONE); + adapter.notifyDataSetChanged(); + break; + case R.id.tab_select://全选 + isAllSelected = !isAllSelected; + if (isAllSelected) + tabSelect.setText("å…¨ä¸é€‰"); + else + tabSelect.setText("全选"); + if (viewPager.getCurrentItem() == 0) + exportFragment.setAllItemChecked(isAllSelected); + else + shareFragment.setAllItemChecked(isAllSelected); break; } - Intent intent = new Intent(this, RecognizeActivity.class); - intent.putExtra("type", type); - startActivity(intent); } + //展示工具æ + public void showHandleMenu() { + View popupWindow = LayoutInflater.from(this).inflate(R.layout.main_menu_layout, null); + rightMenuWindow = new PopupWindow(popupWindow, LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); + popupWindow.findViewById(R.id.main_import).setOnClickListener(this); + popupWindow.findViewById(R.id.main_search).setOnClickListener(this); + rightMenuWindow.setTouchable(true); + rightMenuWindow.setOutsideTouchable(true); + rightMenuWindow.setBackgroundDrawable(new BitmapDrawable(getResources(), (Bitmap) null)); + int windowPos[] = ScreenUtil.calculatePopWindowPos(this, rightIv, popupWindow); + int xoff=windowPos[0]-60; + int wid=rightIv.getMeasuredWidth()-30; + rightMenuWindow.showAtLocation(rightIv, Gravity.TOP|Gravity.LEFT,xoff,windowPos[1]); +// rightMenuWindow.showAsDropDown(rightIv); + } + + @Override public void onBackPressed() { + if (tabBottom.getVisibility() == View.VISIBLE) { + if (viewPager.getCurrentItem() == 0) + exportFragment.setCheckBoxShow(View.GONE); + else + shareFragment.setCheckBoxShow(View.GONE); + setHandleMenu(View.GONE); + } else { + OcrApplication.getInstance().exit(); + super.onBackPressed(); + } + } + + @Override + public void onListTextCallBack(OcrRootBean info) { + clickedBean = info; + View view = LayoutInflater.from(this).inflate(R.layout.rename_dialog_layout, null); + view.findViewById(R.id.normal_name).setOnClickListener(this); + view.findViewById(R.id.positive).setOnClickListener(this); + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setView(view); + reNameEdit = (EditText) view.findViewById(R.id.edit); + reNameEdit.setHint(info.getIncludes().getCc_file().getFileName()); + dialog = builder.create(); + dialog.show(); + CustomDialogUtils.setDialogSize(this, dialog); + } + + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.positive: + reNameFile(); + dialog.dismiss(); + break; + case R.id.normal_name: + dialog.dismiss(); + break; + case R.id.export: + HttpHolder.volumeExport(reStatusList(0), this); + break; + case R.id.share: + if (selectedInfos != null && selectedInfos.size() > 0) { +// Toast.makeText(this,"æ£åœ¨æ£€æµ‹éœ€ä¸‹è½½æ–‡ä»¶ï¼Œè¯·ç¨ç‰...",Toast.LENGTH_SHORT).show(); + + getNotLoadFilesAndLoad(selectedInfos); + } else + Toast.makeText(this, "请选择è¦åˆ†äº«çš„æ•°æ®", Toast.LENGTH_SHORT).show(); + break; + case R.id.delete: + if (selectedInfos != null && selectedInfos.size() > 0) { + setHandleMenu(View.GONE); + HttpHolder.volumeDelete(reStatusList(-1), this); + } else + Toast.makeText(this, "请选择è¦åˆ 除的数æ®", Toast.LENGTH_SHORT).show(); + break; + case R.id.main_import: + type = ScanConstants.OPEN_MEDIA; + Intent intent = new Intent(this, RecognizeActivity.class); + intent.putExtra("type", type); + startActivity(intent); + rightMenuWindow.dismiss(); + break; + case R.id.main_search: + startActivity(new Intent(this, SearchActivity.class)); + rightMenuWindow.dismiss(); + break; + } + } + + public List<OcrRootBean.Superior> reStatusList(int type) { + List<OcrRootBean.Superior> list = new ArrayList<>(); + for (OcrRootBean info : selectedInfos) { + if (type != -1) + info.getSuperior().setType(type); + list.add(info.getSuperior()); + } + return list; + } - OcrApplication.getInstance().exit(); - super.onBackPressed(); + private void reNameFile() { + String url = RequestConfig.EDIT_FILE_URL + clickedBean.getSuperior().getFileId() + "/edit"; + RequestParams params = new RequestParams(url); + params.addHeader("X-Auth-Token", "1"); + String lastName=clickedBean.getIncludes().getCc_file().getFileName(); + params.addBodyParameter("fileName", reNameEdit.getText().toString()+lastName.substring(lastName.indexOf("."))); + //缺少修改人 + x.http().post(params, new MainHttpCallBack("edit", this)); } + + @Override + public void setHandleMenu(int v) { + if (View.GONE == v) { + tabHead.setVisibility(v); + tabBottom.setVisibility(v); + topBarLayout.setVisibility(View.VISIBLE); + mainBottomMenu.setVisibility(View.VISIBLE); + viewPager.setScanScroll(true); + adapter.notifyDataSetChanged(); + } else { + tabHead.setVisibility(View.VISIBLE); + tabBottom.setVisibility(View.VISIBLE); + topBarLayout.setVisibility(View.GONE); + mainBottomMenu.setVisibility(View.GONE); + num.setText("已选择"); + viewPager.setScanScroll(false); + } + } + + private void getNotLoadFilesAndLoad(List<OcrRootBean> list) { + List<OcrRootBean> loadBeans = new ArrayList<>(); + shareFileUris = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + OcrRootBean.Cc_file cc_file = list.get(i).getIncludes().getCc_file(); + String type = cc_file.getFileName().substring(cc_file.getFileName().indexOf(".") + 1); + String filePath = ""; + if ("doc".equals(type) || "docs".equals(type)) + filePath = Configs.WORD_BASE + "/" + cc_file.getFileName(); + else if ("txt".equals(type)) + filePath = Configs.TXT_BASE + "/" + cc_file.getFileName(); + else if ("pdf".equals(type)) + filePath = Configs.PDF_BASE + "/" + cc_file.getFileName(); + shareFileUris.add(Uri.parse(filePath)); + if (!FileUtil.isFileExist(filePath)) + loadBeans.add(selectedInfos.get(i)); + } + + if (loadBeans.size() != 0) { + dialog.setMessage("æ£åœ¨ä¸‹è½½ï¼Œè¯·ç¨åŽ"); + dialog.show(); + loadFile(loadBeans.get(0)); + handler = new LoadFileHandler(loadBeans); + } + + } + + private void loadFile(OcrRootBean bean) { + Map<String, String> map = new HashMap<>(); + map.put("fileName", bean.getIncludes().getCc_file().getFilePath()); + map.put("downloadName", bean.getIncludes().getCc_file().getFileName()); + HttpHolder.downLoad(map, new MainHttpCallBack("batch_load", this)); + } + + private LoadFileHandler handler; + private int loadIndex = 0; + + public class LoadFileHandler extends Handler { + List<OcrRootBean> loadList; + + public LoadFileHandler(List<OcrRootBean> list) { + loadList = list; + } + + @Override + public void handleMessage(Message msg) { + int position = msg.arg1; + switch (msg.what) { + case 0: + Toast.makeText(MainActivity.this, loadList.get(position).getIncludes().getCc_file().getFileName() + "下载失败,请ç¨åŽé‡è¯•", Toast.LENGTH_SHORT).show(); + break; + case 1: + loadIndex++; + if (loadIndex < loadList.size()) + loadFile(loadList.get(loadIndex)); + else { + dialog.dismiss(); + handleShareAction(selectedInfos); + } + break; + } + } + } + + private void handleShareAction(List<OcrRootBean> rootBeen) { + //分享文件 + Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);//å‘é€å¤šä¸ªæ–‡ä»¶ + intent.setType("*/*");//å¤šä¸ªæ–‡ä»¶æ ¼å¼ + intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, shareFileUris);//Intent.EXTRA_STREAMåŒäºŽä¼ è¾“æ–‡ä»¶æµ + startActivity(Intent.createChooser(intent, "多文件分享")); + setHandleMenu(View.GONE); + } + + @Override + public void noticeMessage(List<OcrRootBean> list) { + selectedInfos = list; + num.setText("已选择" + list.size() + "个"); + } + + //xutils的接å£å›žè°ƒ + @Override + public void success(String type, String result) { + if ("edit".equals(type)) { + Toast.makeText(this, "修改æˆåŠŸ", Toast.LENGTH_SHORT).show(); + adapter.notifyDataSetChanged(); + } else if ("delete".equals(type)) { + try { + JSONObject object = new JSONObject(result); + String data = object.getString("message"); + if (data.contains("success")) { + Toast.makeText(this, "åˆ é™¤æˆåŠŸ", Toast.LENGTH_SHORT).show(); + + adapter.notifyDataSetChanged(); + } + } catch (JSONException e) { + e.printStackTrace(); + } + } else if ("download".equals(type)) { + Toast.makeText(this, "下载æˆåŠŸ,冿¬¡ç‚¹å‡»å¯è¿›è¡ŒæŸ¥çœ‹", Toast.LENGTH_SHORT).show(); + } else if ("batch_load".equals(type)) { + Message message = Message.obtain(); + message.arg1 = loadIndex; + message.what = 1; + handler.sendMessage(message); + } + } + + @Override + public void error(String type, Throwable t) { + if ("batch_load".equals(type)) { + Message message = Message.obtain(); + message.arg1 = loadIndex; + handler.sendMessage(message); + } else + Toast.makeText(this, "网络连接异常,请调试=" + t.getMessage(), Toast.LENGTH_SHORT).show(); + } + + } diff --git a/app/src/main/java/cn/com/bril/androidocr/studio/ui/activity/VertifyActivity.java b/app/src/main/java/cn/com/bril/androidocr/studio/ui/activity/VertifyActivity.java index 10b214b..1ac7870 100644 --- a/app/src/main/java/cn/com/bril/androidocr/studio/ui/activity/VertifyActivity.java +++ b/app/src/main/java/cn/com/bril/androidocr/studio/ui/activity/VertifyActivity.java @@ -6,10 +6,9 @@ import android.content.Intent; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.os.Bundle; -import android.os.Handler; -import android.os.Message; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.widget.CompoundButton; @@ -42,19 +41,19 @@ import butterknife.ButterKnife; import butterknife.OnClick; import cn.com.bril.androidocr.studio.OcrApplication; import cn.com.bril.androidocr.studio.R; +import cn.com.bril.androidocr.studio.beans.ExportInfo; import cn.com.bril.androidocr.studio.beans.Image; import cn.com.bril.androidocr.studio.beans.OcrInfo; import cn.com.bril.androidocr.studio.configs.Configs; import cn.com.bril.androidocr.studio.configs.RequestConfig; import cn.com.bril.androidocr.studio.http.HttpHolder; -import cn.com.bril.androidocr.studio.interf.OnHttpListener; import cn.com.bril.androidocr.studio.utils.GsonUtil; import cn.com.bril.androidocr.studio.utils.ItextUtils; import cn.com.bril.androidocr.studio.utils.ScreenUtil; import cn.com.bril.androidocr.studio.utils.ShareUtil; -public class VertifyActivity extends AppCompatActivity implements OnHttpListener { +public class VertifyActivity extends AppCompatActivity { @BindView(R.id.left_iv) ImageView lefIv; @@ -85,6 +84,7 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener private PopupWindow mPopupWindow; private String statusType; + private OcrInfo ocrInfo; @Override protected void onCreate(Bundle savedInstanceState) { @@ -108,7 +108,7 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener return (Image) getIntent().getSerializableExtra("image"); } - @OnClick({R.id.rephoto, R.id.verrify, R.id.left_iv}) + @OnClick({R.id.rephoto, R.id.verrify, R.id.left_iv,R.id.right_iv}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.left_iv: @@ -122,9 +122,14 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener case R.id.verrify: Intent proofread = new Intent(this, ProofreadActivity.class); proofread.putExtra("image", getIntentData()); -// startActivity(proofread); startActivityForResult(proofread, 10); break; + case R.id.right_iv: + if(null== mPopupWindow ) + showHandleMenu(); + else if(mPopupWindow!=null&&!mPopupWindow.isShowing()) + showHandleMenu(); + break; } } @@ -137,11 +142,6 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener mPopupWindow.setTouchable(true); mPopupWindow.setOutsideTouchable(true); mPopupWindow.setBackgroundDrawable(new BitmapDrawable(getResources(), (Bitmap) null)); -// mPopupWindow.showAtLocation(toolbarTitle,Gravity.TOP|Gravity.LEFT,16,-64); - int windowPos[] = ScreenUtil.calculatePopWindowPos(this, rightIv, popupWindow); -// int xOff = 40;// å¯ä»¥è‡ªå·±è°ƒæ•´åç§» -// windowPos[0] += xOff; -// mPopupWindow.showAtLocation(topBarLayout, Gravity.TOP | Gravity.RIGHT, 10, windowPos[1]);//windowPos[0], windowPos[1] mPopupWindow.showAsDropDown(rightIv); // backgroundAlpha(0.5f); } @@ -156,11 +156,6 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener } } - @OnClick(R.id.right_iv) - public void onViewClicked() { - showHandleMenu(); - } - //导出选择视图 private void showExportDialog() { mPopupWindow.dismiss(); @@ -189,6 +184,7 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener view.findViewById(R.id.txtLayout).setOnClickListener(clickListener); } + private View.OnClickListener clickListener = new View.OnClickListener() { @Override public void onClick(View v) { @@ -212,11 +208,13 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener radio2.setEnabled(false); break; case R.id.export: + mPopupWindow.dismiss(); statusType="0"; showExportDialog(); break; case R.id.share: - statusType="1"; + mPopupWindow.dismiss(); + statusType="2"; exportDoc("share"); break; } @@ -232,19 +230,22 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener if (isChecked) { //设置åªç‚¹å‡»ä¸€æ¬¡ï¼Œå…¶ä½™å‡ä¸å¯ç‚¹å‡» - switch (buttonView.getId()) { case R.id.radio: pdf.setTextColor(getResources().getColor(R.color.yellow)); // handler.sendEmptyMessageDelayed(1,500); + statusType="0"; exportPdf(); + break; case R.id.radio1: img.setTextColor(getResources().getColor(R.color.yellow)); // handler.sendEmptyMessageDelayed(2,500); + statusType="0"; exportDoc("export"); break; case R.id.radio2: + statusType="0"; txt.setTextColor(getResources().getColor(R.color.yellow)); exportTxt(); break; @@ -262,17 +263,15 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener super.run(); boolean flg = ItextUtils.StringToPdf(recogniztion, pdfPath); if (flg) { - handler.sendEmptyMessage(1); - HttpHolder.upLoadFile(pdfPath,VertifyActivity.this); + HttpHolder.upLoadFile(pdfPath,new HttpCallBack("upload")); } - } }.start(); } private void exportTxt() { - String filename = image.getName().replace("png", "txt"); + String filename = image.getName().replace("jpg", "txt"); String path = Configs.TXT_BASE + "/" + filename; File file; try { @@ -285,8 +284,7 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener FileOutputStream outStream = new FileOutputStream(file); outStream.write(recogniztion.getBytes()); outStream.close(); - HttpHolder.upLoadFile(path, VertifyActivity.this); - handler.sendEmptyMessageDelayed(3, 500); + HttpHolder.upLoadFile(path,new HttpCallBack("upload")); } catch (IOException e) { e.printStackTrace(); } @@ -294,6 +292,7 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener } private void exportDoc(String type) { + if(null==ocrInfo) try { String filename = image.getName().replace("jpg", "doc"); String path = Configs.WORD_BASE + "/" + filename; @@ -309,81 +308,73 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener if("share".equals(type)) ShareUtil.shareFile(this,new File(path)); - HttpHolder.upLoadFile(path, this); + HttpHolder.upLoadFile(path, new HttpCallBack("upload")); } catch (IOException e) { - handler.sendEmptyMessage(5); + }else{ + Map<String,Object> map=new HashMap<>(); + map.put("header","X-Auth-Token"); + map.put("fileId",ocrInfo.getId()); + map.put("exportUser",Configs.USER_NAME + "_" + Configs.USER_ID); + map.put("type",statusType);//0导出;2分享 + HttpHolder.createFileRecord(RequestConfig.EXPORT_CREATE_URL,map,new HttpCallBack(statusType)); } } - private Handler handler = new Handler() { - @Override - public void handleMessage(Message msg) { - switch (msg.what) { - case 0: - break; - case 1: - dialog.dismiss(); - Toast.makeText(VertifyActivity.this, "pdf已导出,请在documentocr/pdfs下查看", Toast.LENGTH_SHORT).show(); - break; - case 2: - dialog.dismiss(); - Toast.makeText(VertifyActivity.this, "图片已导出,请在documentocr/images下查看", Toast.LENGTH_SHORT).show(); - break; - case 3: - dialog.dismiss(); - Toast.makeText(VertifyActivity.this, "txt文本已导出,请在documentocr/txts文件夹下查看", Toast.LENGTH_SHORT).show(); - break; - case 4: -// dialog.dismiss(); -// Toast.makeText(VertifyActivity.this, "word已导出,请在documentocr/docs文件夹下查看", Toast.LENGTH_SHORT).show(); - break; - case 5: - dialog.dismiss(); - Toast.makeText(VertifyActivity.this, "word导出异常,请é‡è¯•", Toast.LENGTH_SHORT).show(); - break; - } - } - }; - - @Override - public void success(String result) { - try { - JSONObject object = new JSONObject(result); - String filePath = object.getString("message"); - String fileName = filePath.substring(4); - Map<String, Object> map = new HashMap<>(); - map.put("header", filePath); - map.put("filePath", filePath); - map.put("fileName", fileName); - map.put("status", statusType); - map.put("uploadUser", Configs.USER_NAME + "_" + Configs.USER_ID); - HttpHolder.exportFile(RequestConfig.ADD_URL, map, creatListener); - } catch (JSONException e) { - e.printStackTrace(); + public class HttpCallBack implements Callback.CommonCallback<String>{ + String httpType; + public HttpCallBack(String type) { + httpType=type; } - - } - - @Override - public void error(Throwable t) { - - } - - private Callback.CommonCallback<String> creatListener = new Callback.CommonCallback<String>() { @Override public void onSuccess(String result) { - if(null!=dialog || dialog.isShowing()) - dialog.dismiss(); - OcrInfo ocrInfo = GsonUtil.getInstance().fromJson(result, new TypeToken<OcrInfo>() { - }.getType()); - if (null != ocrInfo.getId() || "" != ocrInfo.getId()) - Toast.makeText(VertifyActivity.this, "导出æˆåŠŸ", Toast.LENGTH_SHORT).show(); + if("upload".equals(httpType)){ + try { + JSONObject object = new JSONObject(result); + String filePath = object.getString("message"); + String fileName = filePath.substring(4); + Map<String, Object> map = new HashMap<>(); + map.put("header", filePath); + map.put("filePath", filePath); + map.put("fileName", fileName); + map.put("fileSuffix",fileName.substring(fileName.indexOf(".")+1)); + map.put("status","ocr"); + map.put("uploadPeple", Configs.USER_NAME + "_" + Configs.USER_ID); + HttpHolder.exportFile(RequestConfig.ADD_URL, map, new HttpCallBack("create_file")); + } catch (JSONException e) { + e.printStackTrace(); + } + }else if("create_file".equals(httpType)){ + ocrInfo = GsonUtil.getInstance().fromJson(result, new TypeToken<OcrInfo>() { + }.getType()); + + Map<String,Object> map=new HashMap<>(); + map.put("header","X-Auth-Token"); + map.put("fileId",ocrInfo.getId()); + map.put("exportUser",Configs.USER_NAME + "_" + Configs.USER_ID); + map.put("type",statusType);//0导出;1分享 + HttpHolder.createFileRecord(RequestConfig.EXPORT_CREATE_URL,map,new HttpCallBack(statusType)); + }else if("0".equals(httpType)){ + if(dialog!=null && dialog.isShowing()) + dialog.dismiss(); + ExportInfo exportInfo= GsonUtil.getInstance().fromJson(result, new TypeToken<ExportInfo>() { + }.getType()); + if(null!=exportInfo){ + Toast.makeText(VertifyActivity.this,"导出æˆåŠŸï¼Œè¯·åœ¨æ–‡ä»¶ç®¡ç†/documentocr下查看",Toast.LENGTH_SHORT).show(); + } + }else if ("1".equals(httpType)){ + ExportInfo exportInfo= GsonUtil.getInstance().fromJson(result, new TypeToken<ExportInfo>() { + }.getType()); + if(null==exportInfo){ + Toast.makeText(VertifyActivity.this,"分享记录æäº¤å¤±è´¥ï¼Œè¯·é‡æ–°å°è¯•",Toast.LENGTH_SHORT).show(); + } + } } @Override public void onError(Throwable ex, boolean isOnCallback) { - + Log.e("TAG",ex.toString()); + Toast.makeText(VertifyActivity.this, "连接异常,请调试", Toast.LENGTH_SHORT).show(); } @Override @@ -395,5 +386,7 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener public void onFinished() { } - }; + } + + } diff --git a/app/src/main/java/cn/com/bril/androidocr/studio/ui/adapter/FragmentListAdapter.java b/app/src/main/java/cn/com/bril/androidocr/studio/ui/adapter/FragmentListAdapter.java index c60aecc..322fb78 100644 --- a/app/src/main/java/cn/com/bril/androidocr/studio/ui/adapter/FragmentListAdapter.java +++ b/app/src/main/java/cn/com/bril/androidocr/studio/ui/adapter/FragmentListAdapter.java @@ -5,12 +5,15 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; +import android.widget.CheckBox; +import android.widget.CompoundButton; import android.widget.TextView; +import java.util.ArrayList; import java.util.List; import cn.com.bril.androidocr.studio.R; -import cn.com.bril.androidocr.studio.beans.OcrInfo; +import cn.com.bril.androidocr.studio.beans.OcrRootBean; /** * Created by sunny on 2018-3-19. @@ -19,13 +22,35 @@ import cn.com.bril.androidocr.studio.beans.OcrInfo; public class FragmentListAdapter extends BaseAdapter { private Context context; - private List<OcrInfo> infos; - - public FragmentListAdapter(Context context, List<OcrInfo> list) { + private List<OcrRootBean> infos; + private ListTextClickListener listTextClickListener; + private int show=View.GONE; + AdapterRadioSelectedListener radioSelectedListener; + public FragmentListAdapter(Context context, List<OcrRootBean> list, ListTextClickListener listTextClickListener, AdapterRadioSelectedListener radioSelectedListener) { this.context=context; this.infos=list; + this.listTextClickListener=listTextClickListener; + this.radioSelectedListener=radioSelectedListener; + } + + public void setRadioShow(int show){ + this.show=show; + notifyDataSetChanged(); } + public void setRadioAllSelected(boolean flg){ + for(OcrRootBean info:infos) + info.getSuperior().setChecked(flg); + notifyDataSetChanged(); + } + public List<OcrRootBean> getSelectedInfo(){ + List<OcrRootBean> newInfos=new ArrayList<>(); + for(OcrRootBean info:infos){ + if(info.getSuperior().isChecked()) + newInfos.add(info); + } + return newInfos; + } @Override public int getCount() { return infos.size(); @@ -43,24 +68,60 @@ public class FragmentListAdapter extends BaseAdapter { @Override public View getView(int position, View convertView, ViewGroup parent) { - ViewHolder holder; + final ViewHolder holder; if(convertView==null){ holder=new ViewHolder(); convertView= LayoutInflater.from(context).inflate(R.layout.listview_item_layout,null); holder.title= (TextView)convertView .findViewById(R.id.title); holder.time= (TextView) convertView.findViewById(R.id.time); + holder.radioButton= (CheckBox) convertView.findViewById(R.id.radio); convertView.setTag(holder); }else holder= (ViewHolder) convertView.getTag(); - OcrInfo info=infos.get(position); - holder.time.setText(info.getLastUpdateTime()); - String fileName=info.getFileName().substring(0,info.getFileName().indexOf(".")); + final OcrRootBean info=infos.get(position); + holder.time.setText(info.getSuperior().getCreateTime()); + String s=info.getIncludes().getCc_file().getFileName(); + String fileName; + if(s.contains(".")) + fileName=s.substring(0,s.indexOf(".")); + else + fileName=s; holder.title.setText(fileName); - + holder.title.setOnClickListener(new ListTextOnClickListener(position)); + holder.radioButton.setVisibility(show); + holder.radioButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + info.getSuperior().setChecked(isChecked); + radioSelectedListener.adapterRadioSelectedCallBack(); + notifyDataSetChanged(); + } + }); + holder.radioButton.setChecked(info.getSuperior().isChecked()); return convertView; + } + class ListTextOnClickListener implements View.OnClickListener{ + int position; + public ListTextOnClickListener(int index) { + position=index; + } + + @Override + public void onClick(View v) { + listTextClickListener.onListTextCallBack(infos.get(position)); + } + } + + public interface AdapterRadioSelectedListener{ + void adapterRadioSelectedCallBack(); + } + + public interface ListTextClickListener{ + void onListTextCallBack(OcrRootBean info); } class ViewHolder{ TextView title,time; + CheckBox radioButton; } } diff --git a/app/src/main/java/cn/com/bril/androidocr/studio/ui/adapter/TabFragmentPagerAdapter.java b/app/src/main/java/cn/com/bril/androidocr/studio/ui/adapter/TabFragmentPagerAdapter.java index cd73654..9a2dd1b 100644 --- a/app/src/main/java/cn/com/bril/androidocr/studio/ui/adapter/TabFragmentPagerAdapter.java +++ b/app/src/main/java/cn/com/bril/androidocr/studio/ui/adapter/TabFragmentPagerAdapter.java @@ -3,6 +3,7 @@ package cn.com.bril.androidocr.studio.ui.adapter; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; +import android.view.ViewGroup; import java.util.List; @@ -13,12 +14,19 @@ import java.util.List; public class TabFragmentPagerAdapter extends FragmentPagerAdapter { List<Fragment> fragments; - + List<String> tagList; + FragmentManager manager; public TabFragmentPagerAdapter(FragmentManager fm, List<Fragment> fragments) { super(fm); + manager=fm; this.fragments=fragments; } + @Override + public int getItemPosition(Object object) { + return POSITION_NONE; + } + @Override public Fragment getItem(int position) { return fragments.get(position); @@ -28,4 +36,12 @@ public class TabFragmentPagerAdapter extends FragmentPagerAdapter { public int getCount() { return fragments.size(); } + + + @Override + public Object instantiateItem(ViewGroup container, int position) { + return super.instantiateItem(container, position); + } + + } diff --git a/app/src/main/java/cn/com/bril/androidocr/studio/ui/fragment/ExportFragment.java b/app/src/main/java/cn/com/bril/androidocr/studio/ui/fragment/ExportFragment.java index b4d8344..67d425d 100644 --- a/app/src/main/java/cn/com/bril/androidocr/studio/ui/fragment/ExportFragment.java +++ b/app/src/main/java/cn/com/bril/androidocr/studio/ui/fragment/ExportFragment.java @@ -1,12 +1,17 @@ package cn.com.bril.androidocr.studio.ui.fragment; +import android.app.AlertDialog; +import android.app.ProgressDialog; import android.content.Context; +import android.content.Intent; +import android.net.Uri; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.AdapterView; import android.widget.ListView; import android.widget.Toast; @@ -16,18 +21,22 @@ import org.xutils.common.Callback; import org.xutils.http.RequestParams; import org.xutils.x; +import java.io.File; import java.util.ArrayList; import java.util.List; import cn.com.bril.androidocr.studio.R; -import cn.com.bril.androidocr.studio.beans.OcrInfo; +import cn.com.bril.androidocr.studio.beans.OcrRootBean; import cn.com.bril.androidocr.studio.configs.Configs; import cn.com.bril.androidocr.studio.configs.RequestConfig; +import cn.com.bril.androidocr.studio.interf.HandleMenuListener; import cn.com.bril.androidocr.studio.ui.adapter.FragmentListAdapter; import cn.com.bril.androidocr.studio.ui.pulltorefresh.PullToRefreshBase; import cn.com.bril.androidocr.studio.ui.pulltorefresh.PullToRefreshListView; +import cn.com.bril.androidocr.studio.utils.FileUtil; import cn.com.bril.androidocr.studio.utils.GsonUtil; import cn.com.bril.androidocr.studio.utils.HttpUtil; +import cn.com.bril.androidocr.studio.utils.IntentUtil; /** * Created by sunny on 2018-3-12. @@ -40,14 +49,31 @@ public class ExportFragment extends Fragment { private ListView listView; private Context context; private FragmentListAdapter adaper; - private List<OcrInfo> infos; + private List<OcrRootBean> exportInfos= new ArrayList<>(); private boolean isUpdate=false,hasMoreData=false; private int page=1,pageSize=10; + private AlertDialog dialog;//renameDialog + private ProgressDialog progressDialog; + private FragmentListAdapter.ListTextClickListener listener; + private HandleMenuListener handleMenuListener; + private List<OcrRootBean> selectedInfos=new ArrayList<>(); + private NoticeMessageToMain messageToMain; @Override public void onAttach(Context context) { super.onAttach(context); this.context=context; + handleMenuListener= (HandleMenuListener) context; + listener= (FragmentListAdapter.ListTextClickListener) context; + messageToMain= (NoticeMessageToMain) context; + } + + public List<OcrRootBean> getSelectedInfos() { + return selectedInfos; + } + + public void setSelectedInfos(List<OcrRootBean> selectedInfos) { + this.selectedInfos = selectedInfos; } @Nullable @@ -60,6 +86,7 @@ public class ExportFragment extends Fragment { initEvents(); + progressDialog=new ProgressDialog(context); return view; } @@ -67,11 +94,16 @@ public class ExportFragment extends Fragment { pullToRefreshListView= (PullToRefreshListView) view.findViewById(R.id.pullrefreshView); listView=pullToRefreshListView.getRefreshableView(); - pullToRefreshListView.doPullRefreshing(true,500); - adaper=new FragmentListAdapter(context,infos=new ArrayList<>()); + adaper=new FragmentListAdapter(context, exportInfos , listener, new FragmentListAdapter.AdapterRadioSelectedListener() { + @Override + public void adapterRadioSelectedCallBack() { + setSelectedInfos(adaper.getSelectedInfo()); + messageToMain.noticeMessage(adaper.getSelectedInfo()); + } + }); listView.setAdapter(adaper); - + pullToRefreshListView.doPullRefreshing(true,500); } public void initEvents(){ @@ -96,6 +128,7 @@ public class ExportFragment extends Fragment { page++; if(HttpUtil.isNetworkConnected(context)) getExportRecord(); + else{ Toast.makeText(context,"æš‚æ— ç½‘ç»œè¿žæŽ¥",Toast.LENGTH_LONG).show(); refreshView.onPullDownRefreshComplete(); @@ -103,33 +136,121 @@ public class ExportFragment extends Fragment { } }); + + listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { + @Override + public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { + handleMenuListener.setHandleMenu(View.VISIBLE); + adaper.setRadioShow(View.VISIBLE); + return true; + } + }); + listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView<?> parent, View view, int position, long id) { + String path=exportInfos.get(position).getIncludes().getCc_file().getFilePath(); + String fileName=exportInfos.get(position).getIncludes().getCc_file().getFileName(); + if(fileName.contains(".pdf")){ + if(FileUtil.isFileExist(Configs.PDF_BASE+"/"+fileName)) + startFileIntent("pdf",fileName); + else{ + progressDialog.setMessage("æ£åœ¨ä¸‹è½½..."); + progressDialog.show(); + downLoadFile(path, fileName); + } + }else if(fileName.contains(".doc")|| fileName.contains(".docs")){ + if(FileUtil.isFileExist(Configs.WORD_BASE+"/"+fileName)) + startFileIntent("word",fileName); + else + downLoadFile(path, fileName); + }else if(fileName.contains(".txt")){ + if(FileUtil.isFileExist(Configs.TXT_BASE+"/"+fileName)) + startFileIntent("txt",fileName); + else + downLoadFile(path, fileName); + } + } + }); + } + + private void downLoadFile(String path, String fileName) { + RequestParams params=new RequestParams(RequestConfig.DOWN_LOAD_URL); + params.addBodyParameter("fileName",path); + params.addBodyParameter("downloadName",fileName); + params.setSaveFilePath(Configs.WORD_BASE+"/"+fileName); + x.http().get(params, new Callback.CommonCallback<File>() { + @Override + public void onSuccess(File result) { + progressDialog.dismiss(); + Toast.makeText(context,"下载æˆåŠŸ", Toast.LENGTH_SHORT).show(); + } + @Override + public void onError(Throwable ex, boolean isOnCallback) { + } + @Override + public void onCancelled(CancelledException cex) { + } + @Override + public void onFinished() { + } + }); + } + private void startFileIntent(String type,String path){ + + Intent intent = new Intent("android.intent.action.VIEW"); + intent.addCategory("android.intent.category.DEFAULT"); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + File file; + Uri uri; + if("word".equals(type)){ + file= new File(Configs.WORD_BASE+"/"+path); + uri= Uri.fromFile(file); + intent.setDataAndType(uri, "application/msword"); + }else if("pdf".equals(type)){ + file= new File(Configs.PDF_BASE+"/"+path); + uri= Uri.fromFile(file); + intent.setDataAndType(uri, "application/pdf"); + }else if("txt".equals(type)){ + file= new File(Configs.TXT_BASE+"/"+path); + uri= Uri.fromFile(file); + intent.setDataAndType(uri, "text/plain"); + } + if(IntentUtil.isIntentAvailable(context,intent)) + startActivity(intent); + else + Toast.makeText(context,"请检测是å¦å·²å®‰è£…相应的文件打开工具",Toast.LENGTH_SHORT).show(); } private void getExportRecord(){ - RequestParams params=new RequestParams(RequestConfig.EXPORT_LIST_URL); + RequestParams params=new RequestParams(RequestConfig.EXPORT_RECORD_URL); params.addBodyParameter("page",page+""); params.addBodyParameter("sortItem","create_time"); params.addBodyParameter("sortOrder","desc"); String userInfo= Configs.USER_NAME+"_"+Configs.USER_ID; - String json="{\"cc_ocr_file\":{\"upload_user\":{\"equalTo\":\""+userInfo+"\"},\"status\":{\"equalTo\":\"0\"}}}"; + String json="{\"cc_export_record\":{\"export_user\":{\"equalTo\":\""+userInfo+"\"},\"type\":{\"equalTo\":0}}}"; params.addBodyParameter("filters",json); + String json2="{\"cc_file\":{\"includes\":[\"file_id\"]}}"; + params.addBodyParameter("includes",json2); x.http().post(params, new Callback.CommonCallback<String>() { @Override public void onSuccess(String result) { - String data=result; - List<OcrInfo> list = GsonUtil.getInstance().fromJson(data, new TypeToken<List<OcrInfo>>() {}.getType()); - if(isUpdate) - infos.clear(); - infos.addAll(list); - if(list.size()<10){ + List<OcrRootBean> been=GsonUtil.getInstance().fromJson(result,new TypeToken<List<OcrRootBean>>(){}.getType()); + if(isUpdate){ + exportInfos.clear(); + } + exportInfos.addAll(been); + if(been.size()==0){ + Toast.makeText(context,"æš‚æ— æ•°æ®",Toast.LENGTH_SHORT).show(); + } + else if(been.size()<10&& been.size()>0){ hasMoreData=false; - Toast.makeText(context,"æ— æ›´å¤šæ•°æ®",Toast.LENGTH_SHORT).show(); +// Toast.makeText(context,"æ— æ›´å¤šæ•°æ®",Toast.LENGTH_SHORT).show(); } else hasMoreData=true; adaper.notifyDataSetChanged(); -// List<OcrInfo> list=result; + pullToRefreshListView.onPullUpRefreshComplete(); pullToRefreshListView.onPullDownRefreshComplete(); pullToRefreshListView.setHasMoreData(hasMoreData); @@ -137,23 +258,28 @@ public class ExportFragment extends Fragment { @Override public void onError(Throwable ex, boolean isOnCallback) { + Toast.makeText(context,"网络异常,请检测...",Toast.LENGTH_SHORT).show(); pullToRefreshListView.onPullUpRefreshComplete(); pullToRefreshListView.onPullDownRefreshComplete(); } - @Override public void onCancelled(CancelledException cex) { - } - @Override public void onFinished() { - } }); + } - + public void setAllItemChecked(boolean flg){ + adaper.setRadioAllSelected(flg); + } + public void setCheckBoxShow(int v){ + adaper.setRadioShow(v); + } + public interface NoticeMessageToMain{ + void noticeMessage(List<OcrRootBean> list); } } diff --git a/app/src/main/java/cn/com/bril/androidocr/studio/ui/fragment/ShareFragment.java b/app/src/main/java/cn/com/bril/androidocr/studio/ui/fragment/ShareFragment.java index d2b77da..d4877b0 100644 --- a/app/src/main/java/cn/com/bril/androidocr/studio/ui/fragment/ShareFragment.java +++ b/app/src/main/java/cn/com/bril/androidocr/studio/ui/fragment/ShareFragment.java @@ -1,12 +1,16 @@ package cn.com.bril.androidocr.studio.ui.fragment; +import android.app.ProgressDialog; import android.content.Context; +import android.content.Intent; +import android.net.Uri; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.AdapterView; import android.widget.ListView; import android.widget.Toast; @@ -16,18 +20,22 @@ import org.xutils.common.Callback; import org.xutils.http.RequestParams; import org.xutils.x; +import java.io.File; import java.util.ArrayList; import java.util.List; import cn.com.bril.androidocr.studio.R; -import cn.com.bril.androidocr.studio.beans.OcrInfo; +import cn.com.bril.androidocr.studio.beans.OcrRootBean; import cn.com.bril.androidocr.studio.configs.Configs; import cn.com.bril.androidocr.studio.configs.RequestConfig; +import cn.com.bril.androidocr.studio.interf.HandleMenuListener; import cn.com.bril.androidocr.studio.ui.adapter.FragmentListAdapter; import cn.com.bril.androidocr.studio.ui.pulltorefresh.PullToRefreshBase; import cn.com.bril.androidocr.studio.ui.pulltorefresh.PullToRefreshListView; +import cn.com.bril.androidocr.studio.utils.FileUtil; import cn.com.bril.androidocr.studio.utils.GsonUtil; import cn.com.bril.androidocr.studio.utils.HttpUtil; +import cn.com.bril.androidocr.studio.utils.IntentUtil; /** * Created by sunny on 2018-3-12. @@ -40,14 +48,31 @@ public class ShareFragment extends Fragment { private ListView listView; private Context context; private FragmentListAdapter adaper; - private List<OcrInfo> infos; + private List<OcrRootBean> beanList=new ArrayList<>(); private boolean isUpdate=false,hasMoreData=false; private int page=1,pageSize=10; + private FragmentListAdapter.ListTextClickListener listTextClickListener; + private List<OcrRootBean> selectedInfos=new ArrayList<>(); + private ExportFragment.NoticeMessageToMain messageToMain; + private HandleMenuListener handleMenuListener; + private ProgressDialog dialog; @Override public void onAttach(Context context) { super.onAttach(context); this.context=context; + listTextClickListener=(FragmentListAdapter.ListTextClickListener)context; + handleMenuListener= (HandleMenuListener) context; + messageToMain= (ExportFragment.NoticeMessageToMain) context; + + } + + public List<OcrRootBean> getSelectedInfos() { + return selectedInfos; + } + + public void setSelectedInfos(List<OcrRootBean> selectedInfos) { + this.selectedInfos = selectedInfos; } @Nullable @@ -60,6 +85,8 @@ public class ShareFragment extends Fragment { initEvents(); + dialog=new ProgressDialog(context); + return view; } @@ -68,12 +95,15 @@ public class ShareFragment extends Fragment { pullToRefreshListView= (PullToRefreshListView) view.findViewById(R.id.pullrefreshView); listView=pullToRefreshListView.getRefreshableView(); pullToRefreshListView.doPullRefreshing(true,500); - adaper=new FragmentListAdapter(context,infos=new ArrayList<>()); + adaper=new FragmentListAdapter(context, beanList, listTextClickListener, new FragmentListAdapter.AdapterRadioSelectedListener() { + @Override + public void adapterRadioSelectedCallBack() { + setSelectedInfos(adaper.getSelectedInfo()); + messageToMain.noticeMessage(adaper.getSelectedInfo()); + } + }); listView.setAdapter(adaper); - - } - public void initEvents(){ pullToRefreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener<ListView>() { @@ -100,65 +130,143 @@ public class ShareFragment extends Fragment { Toast.makeText(context,"æš‚æ— ç½‘ç»œè¿žæŽ¥",Toast.LENGTH_LONG).show(); refreshView.onPullDownRefreshComplete(); } - } }); + listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { + @Override + public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { + handleMenuListener.setHandleMenu(View.VISIBLE); + adaper.setRadioShow(View.VISIBLE); + return true; + } + }); + listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView<?> parent, View view, int position, long id) { + String path=beanList.get(position).getIncludes().getCc_file().getFilePath(); + String fileName=beanList.get(position).getIncludes().getCc_file().getFileName(); + if(fileName.contains(".pdf")){ + if(FileUtil.isFileExist(Configs.PDF_BASE+"/"+fileName)) + startFileIntent("pdf",fileName); + else{ + downLoadFile(path, fileName); + } + }else if(fileName.contains(".doc")|| fileName.contains(".docs")){ + if(FileUtil.isFileExist(Configs.WORD_BASE+"/"+fileName)) + startFileIntent("word",fileName); + else + downLoadFile(path, fileName); + }else if(fileName.contains(".txt")){ + if(FileUtil.isFileExist(Configs.TXT_BASE+"/"+fileName)) + startFileIntent("txt",fileName); + else + downLoadFile(path, fileName); + } + } + }); + } + + public void setAllItemChecked(boolean flg){ + adaper.setRadioAllSelected(flg); + } + public void setCheckBoxShow(int v){ + adaper.setRadioShow(v); } + private void getShareRecord(){ - RequestParams params=new RequestParams(RequestConfig.EXPORT_LIST_URL); + RequestParams params=new RequestParams(RequestConfig.EXPORT_RECORD_URL); params.addBodyParameter("page",page+""); params.addBodyParameter("sortItem","create_time"); params.addBodyParameter("sortOrder","desc"); String userInfo= Configs.USER_NAME+"_"+Configs.USER_ID; - String json="{\"cc_ocr_file\":{\"upload_user\":{\"equalTo\":\""+userInfo+"\"},\"status\":{\"equalTo\":\"1\"}}}"; + String json="{\"cc_export_record\":{\"export_user\":{\"equalTo\":\""+userInfo+"\"},\"type\":{\"equalTo\":2}}}"; params.addBodyParameter("filters",json); + String json2="{\"cc_file\":{\"includes\":[\"file_id\"]}}"; + params.addBodyParameter("includes",json2); x.http().post(params, new Callback.CommonCallback<String>() { @Override public void onSuccess(String result) { - String data=result; - List<OcrInfo> list = GsonUtil.getInstance().fromJson(data, new TypeToken<List<OcrInfo>>() {}.getType()); - if(isUpdate) - infos.clear(); - infos.addAll(list); - if(list.size()<10){ - if (list.size()==0) - Toast.makeText(context,"æš‚æ— æ•°æ®",Toast.LENGTH_SHORT).show(); - else{ - hasMoreData=false; - Toast.makeText(context,"æ— æ›´å¤šæ•°æ®",Toast.LENGTH_SHORT).show(); - } - + List<OcrRootBean> been=GsonUtil.getInstance().fromJson(result,new TypeToken<List<OcrRootBean>>(){}.getType()); + if(isUpdate){ + beanList.clear(); + } + beanList.addAll(been); + if(been.size()==0){ + Toast.makeText(context,"æš‚æ— æ•°æ®",Toast.LENGTH_SHORT).show(); + } + else if(been.size()<10&& been.size()>0){ + hasMoreData=false; +// Toast.makeText(context,"æ— æ›´å¤šæ•°æ®",Toast.LENGTH_SHORT).show(); } else hasMoreData=true; - adaper.notifyDataSetChanged(); -// List<OcrInfo> list=result; + pullToRefreshListView.onPullUpRefreshComplete(); pullToRefreshListView.onPullDownRefreshComplete(); pullToRefreshListView.setHasMoreData(hasMoreData); } - @Override public void onError(Throwable ex, boolean isOnCallback) { pullToRefreshListView.onPullUpRefreshComplete(); pullToRefreshListView.onPullDownRefreshComplete(); - } - @Override public void onCancelled(CancelledException cex) { - } - @Override public void onFinished() { - } }); - - } + private void downLoadFile(String path, String fileName) { + dialog.setMessage("æ£åœ¨ä¸‹è¼‰..."); + dialog.show(); + RequestParams params=new RequestParams(RequestConfig.DOWN_LOAD_URL); + params.addBodyParameter("fileName",path); + params.addBodyParameter("downloadName",fileName); + params.setSaveFilePath(Configs.WORD_BASE+"/"+fileName); + x.http().get(params, new Callback.CommonCallback<File>() { + @Override + public void onSuccess(File result) { + Toast.makeText(context,"下载æˆåŠŸ", Toast.LENGTH_SHORT).show(); + } + @Override + public void onError(Throwable ex, boolean isOnCallback) { + } + @Override + public void onCancelled(CancelledException cex) { + } + @Override + public void onFinished() { + } + }); + } + private void startFileIntent(String type,String path){ + + Intent intent = new Intent("android.intent.action.VIEW"); + intent.addCategory("android.intent.category.DEFAULT"); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + File file; + Uri uri; + if("word".equals(type)){ + file= new File(Configs.WORD_BASE+"/"+path); + uri= Uri.fromFile(file); + intent.setDataAndType(uri, "application/msword"); + }else if("pdf".equals(type)){ + file= new File(Configs.PDF_BASE+"/"+path); + uri= Uri.fromFile(file); + intent.setDataAndType(uri, "application/pdf"); + }else if("txt".equals(type)){ + file= new File(Configs.TXT_BASE+"/"+path); + uri= Uri.fromFile(file); + intent.setDataAndType(uri, "text/plain"); + } + if(IntentUtil.isIntentAvailable(context,intent)) + startActivity(intent); + else + Toast.makeText(context,"请检测是å¦å·²å®‰è£…相应的文件打开工具",Toast.LENGTH_SHORT).show(); + } } diff --git a/app/src/main/java/cn/com/bril/androidocr/studio/utils/FileUtil.java b/app/src/main/java/cn/com/bril/androidocr/studio/utils/FileUtil.java index 8d18225..dcdf183 100644 --- a/app/src/main/java/cn/com/bril/androidocr/studio/utils/FileUtil.java +++ b/app/src/main/java/cn/com/bril/androidocr/studio/utils/FileUtil.java @@ -42,4 +42,22 @@ public class FileUtil { return filePic.getAbsolutePath(); } + //åˆ¤æ–æ–‡ä»¶æ˜¯å¦å˜åœ¨ + public static boolean isFileExist(String path){ + try + { + File f=new File(path); + if(!f.exists()) + { + return false; + } + + } + catch (Exception e) + { + return false; + } + + return true; + } } diff --git a/app/src/main/java/cn/com/bril/androidocr/studio/utils/ScreenUtil.java b/app/src/main/java/cn/com/bril/androidocr/studio/utils/ScreenUtil.java index 3ab00b1..db2e1d8 100644 --- a/app/src/main/java/cn/com/bril/androidocr/studio/utils/ScreenUtil.java +++ b/app/src/main/java/cn/com/bril/androidocr/studio/utils/ScreenUtil.java @@ -66,4 +66,12 @@ public class ScreenUtil { } return windowPos; } + + //清晰度设置 + public static void setBackgroundAlpha(Activity context, float bgAlpha) + { + WindowManager.LayoutParams lp = context.getWindow().getAttributes(); + lp.alpha = bgAlpha; //0.0-1.0 + context.getWindow().setAttributes(lp); + } } diff --git a/app/src/main/java/cn/com/bril/androidocr/studio/utils/ShareUtil.java b/app/src/main/java/cn/com/bril/androidocr/studio/utils/ShareUtil.java index 161b476..09ff8be 100644 --- a/app/src/main/java/cn/com/bril/androidocr/studio/utils/ShareUtil.java +++ b/app/src/main/java/cn/com/bril/androidocr/studio/utils/ShareUtil.java @@ -1,6 +1,6 @@ package cn.com.bril.androidocr.studio.utils; -import android.content.Context; +import android.app.Activity; import android.content.Intent; import android.media.MediaMetadataRetriever; import android.net.Uri; @@ -15,16 +15,17 @@ import java.io.File; public class ShareUtil { // 調用系統方法分享文件 - public static void shareFile(Context context, File file) { + public static void shareFile(Activity activity, File file) { if (null != file && file.exists()) { Intent share = new Intent(Intent.ACTION_SEND); share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file)); share.setType(getMimeType(file.getAbsolutePath()));//æ¤å¤„å¯å‘é€å¤šç§æ–‡ä»¶ share.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); share.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); - context.startActivity(Intent.createChooser(share, "分享文件")); + activity.startActivity(Intent.createChooser(share, "分享文件")); +// activity.startActivityForResult(share,0x00); } else { - Toast.makeText(context,"分享文件ä¸å˜åœ¨",Toast.LENGTH_SHORT).show(); + Toast.makeText(activity,"分享文件ä¸å˜åœ¨",Toast.LENGTH_SHORT).show(); } } diff --git a/app/src/main/res/color/bottom_tab_selector.xml b/app/src/main/res/color/bottom_tab_selector.xml index aab645b..9255f5e 100644 --- a/app/src/main/res/color/bottom_tab_selector.xml +++ b/app/src/main/res/color/bottom_tab_selector.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:color="@color/normal" android:state_checked="true"/> - <item android:color="@color/tab_grey" android:state_checked="false"/> + <item android:color="@color/white" android:state_pressed="true"/> + <item android:color="@color/tab_grey" android:state_pressed="false"/> </selector> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 1ab4a02..6da525e 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,15 +1,21 @@ <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/bg_normal"> - <include - android:id="@+id/header" - layout="@layout/top_title_layout"/> + <RelativeLayout + android:id="@+id/head_content" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + <include + layout="@layout/top_title_layout"/> + <include + layout="@layout/bottom_tab_head_layout" + /> + </RelativeLayout> <android.support.design.widget.FloatingActionButton android:id="@+id/fabbtn" android:layout_width="wrap_content" @@ -22,18 +28,18 @@ android:src="@drawable/camera_icon" android:layout_alignParentRight="true" android:layout_alignParentBottom="true" - android:layout_marginBottom="40dp" + android:layout_marginBottom="50dp" android:layout_marginRight="20dp" /> - <android.support.v4.view.ViewPager + <cn.com.bril.androidocr.studio.ui.widget.NoScrollViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_above="@+id/bottom_menu" - android:layout_below="@+id/header"/> + android:layout_below="@+id/head_content"/> - <LinearLayout + <RelativeLayout android:id="@+id/bottom_menu" android:layout_width="match_parent" android:layout_height="wrap_content" @@ -42,7 +48,10 @@ <include layout="@layout/main_bottom_layout" /> - </LinearLayout> + <include + layout="@layout/bottom_tab_layout" + /> + </RelativeLayout> diff --git a/app/src/main/res/layout/export_layout.xml b/app/src/main/res/layout/export_layout.xml index 8d024ae..15d9239 100644 --- a/app/src/main/res/layout/export_layout.xml +++ b/app/src/main/res/layout/export_layout.xml @@ -77,7 +77,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" - android:visibility="gone" android:padding="10dp"> <TextView diff --git a/app/src/main/res/layout/listview_item_layout.xml b/app/src/main/res/layout/listview_item_layout.xml index ef57775..1640fb5 100644 --- a/app/src/main/res/layout/listview_item_layout.xml +++ b/app/src/main/res/layout/listview_item_layout.xml @@ -22,11 +22,12 @@ android:layout_toRightOf="@+id/icon"> <TextView - android:layout_width="match_parent" + android:layout_width="wrap_content" android:layout_height="0dp" android:layout_weight="1" android:id="@+id/title" android:textSize="@dimen/txt16sp" + android:focusable="false" android:textColor="@color/txtcolor33" android:text="新文档"/> @@ -38,8 +39,8 @@ android:gravity="center_vertical"> <ImageView - android:layout_width="30dp" - android:layout_height="20dp" + android:layout_width="15dp" + android:layout_height="10dp" android:src="@drawable/date"/> <TextView android:id="@+id/time" @@ -52,6 +53,18 @@ </LinearLayout> + <CheckBox + android:id="@+id/radio" + android:layout_width="18dp" + android:layout_height="18dp" + android:layout_centerVertical="true" + android:layout_alignParentRight="true" + android:layout_marginRight="15dp" + android:button="@null" + android:focusable="false" + android:visibility="gone" + android:background="@drawable/radio_selector"/> + </RelativeLayout> diff --git a/app/src/main/res/layout/main_bottom_layout.xml b/app/src/main/res/layout/main_bottom_layout.xml index e38bedc..8cd94e0 100644 --- a/app/src/main/res/layout/main_bottom_layout.xml +++ b/app/src/main/res/layout/main_bottom_layout.xml @@ -1,7 +1,8 @@ <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" - android:layout_height="wrap_content" + android:layout_height="49dp" + android:id="@+id/main_bottom_menu" android:orientation="vertical" android:background="@color/white" android:layout_gravity="bottom" diff --git a/app/src/main/res/layout/top_title_layout.xml b/app/src/main/res/layout/top_title_layout.xml index 6320de3..53d274b 100644 --- a/app/src/main/res/layout/top_title_layout.xml +++ b/app/src/main/res/layout/top_title_layout.xml @@ -48,8 +48,9 @@ /> <ImageView android:id="@+id/right_iv" - android:layout_width="5dp" + android:layout_width="30dp" android:layout_height="20dp" + android:scaleType="centerInside" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="20dp" diff --git a/app/src/main/res/values/dimen.xml b/app/src/main/res/values/dimen.xml index ae28400..c353f18 100644 --- a/app/src/main/res/values/dimen.xml +++ b/app/src/main/res/values/dimen.xml @@ -4,6 +4,7 @@ <dimen name="txt18sp">18sp</dimen> <dimen name="txt16sp">16sp</dimen> <dimen name="txt14sp">14sp</dimen> + <dimen name="txt12sp">12sp</dimen> <!-- 下拉刷新å—体 --> <dimen name="picture_pull_to_refresh_loading_text_size">14dp</dimen> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8a83e3d..d414c5d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -4,8 +4,12 @@ <string name="back">返回</string> <string name="export">导出</string> <string name="recoginize">识别</string> + <string name="share">分享</string> + <string name="rename">é‡å‘½å</string> + <string name="delete">åˆ é™¤</string> <string name="rerecoginize">釿–°æ‹æ‘„</string> <string name="vertify">æ ¡å¯¹</string> + <string name="search_content">è¯·è¾“å…¥è¦æŸ¥è¯¢çš„内容</string> <string name="vertify_content"> 贵阳际会峰云会议æœåŠ¡æœ‰é™å…¬å¸å€¾åŠ›æ‰“é€ ä¸å›½ä¼šè®®ç–划第一å“牌; 专业æä¾›ä¼šè®®æ•´ä½“ç–划ã€åœºåœ°é¢„定ã€åœºåœ°æå»ºã€å°åˆ·ã€ç¤¼å“ã€ä¼šè®®æŽ¥å¾…ã€ä¸“车接待ã€è§†é¢‘会议ç‰ä¸€ç³»åˆ—会议æœåŠ¡ã€‚ç»è¿‡10年的历练,拥有éžå¸¸ä¸“业的会议ç–划团队; diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 5f36206..09dbe10 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -20,4 +20,16 @@ <!--引入定义的menu主题--> </style> + <style name="action_item"> + <item name="android:layout_width">0dp</item> + <item name="android:layout_height">wrap_content</item> + <item name="android:layout_weight">1</item> + <item name="android:gravity">center</item> + <item name="android:textSize">14sp</item> + <item name="android:drawablePadding">2dp</item> + <!--<item name="android:background">@drawable/bottom_nav_selector</item>--> + <item name="android:textColor">@color/white</item> + + </style> + </resources> -- 2.21.0