Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
ocr-oa
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
陈赛康
ocr-oa
Commits
0fdb8fa8
Commit
0fdb8fa8
authored
Apr 09, 2018
by
陈赛康
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
搜索功能添加;
parent
18f2e07c
Changes
26
Show whitespace changes
Inline
Side-by-side
Showing
26 changed files
with
1083 additions
and
250 deletions
+1083
-250
build.gradle
app/build.gradle
+4
-2
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+2
-1
OcrApplication.java
...in/java/cn/com/bril/androidocr/studio/OcrApplication.java
+0
-6
OcrInfo.java
...ain/java/cn/com/bril/androidocr/studio/beans/OcrInfo.java
+59
-12
RequestConfig.java
.../cn/com/bril/androidocr/studio/configs/RequestConfig.java
+17
-4
HttpHolder.java
...n/java/cn/com/bril/androidocr/studio/http/HttpHolder.java
+72
-31
OnHttpListener.java
.../cn/com/bril/androidocr/studio/interf/OnHttpListener.java
+2
-2
BaseActivity.java
.../com/bril/androidocr/studio/ui/activity/BaseActivity.java
+2
-0
MainActivity.java
.../com/bril/androidocr/studio/ui/activity/MainActivity.java
+383
-21
VertifyActivity.java
...m/bril/androidocr/studio/ui/activity/VertifyActivity.java
+81
-88
FragmentListAdapter.java
...ril/androidocr/studio/ui/adapter/FragmentListAdapter.java
+70
-9
TabFragmentPagerAdapter.java
...androidocr/studio/ui/adapter/TabFragmentPagerAdapter.java
+17
-1
ExportFragment.java
...om/bril/androidocr/studio/ui/fragment/ExportFragment.java
+146
-20
ShareFragment.java
...com/bril/androidocr/studio/ui/fragment/ShareFragment.java
+140
-32
FileUtil.java
...in/java/cn/com/bril/androidocr/studio/utils/FileUtil.java
+18
-0
ScreenUtil.java
.../java/cn/com/bril/androidocr/studio/utils/ScreenUtil.java
+8
-0
ShareUtil.java
...n/java/cn/com/bril/androidocr/studio/utils/ShareUtil.java
+5
-4
bottom_tab_selector.xml
app/src/main/res/color/bottom_tab_selector.xml
+2
-2
activity_main.xml
app/src/main/res/layout/activity_main.xml
+18
-9
export_layout.xml
app/src/main/res/layout/export_layout.xml
+0
-1
listview_item_layout.xml
app/src/main/res/layout/listview_item_layout.xml
+16
-3
main_bottom_layout.xml
app/src/main/res/layout/main_bottom_layout.xml
+2
-1
top_title_layout.xml
app/src/main/res/layout/top_title_layout.xml
+2
-1
dimen.xml
app/src/main/res/values/dimen.xml
+1
-0
strings.xml
app/src/main/res/values/strings.xml
+4
-0
styles.xml
app/src/main/res/values/styles.xml
+12
-0
No files found.
app/build.gradle
View file @
0fdb8fa8
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'
}
app/src/main/AndroidManifest.xml
View file @
0fdb8fa8
...
...
@@ -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
app/src/main/java/cn/com/bril/androidocr/studio/OcrApplication.java
View file @
0fdb8fa8
...
...
@@ -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
());
//强制结束当前应用程序
}
...
...
app/src/main/java/cn/com/bril/androidocr/studio/beans/OcrInfo.java
View file @
0fdb8fa8
...
...
@@ -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
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
get
UploadUser
()
{
return
uploadUser
;
public
String
get
FileSuffix
()
{
return
fileSuffix
;
}
public
void
set
UploadUser
(
String
uploadUser
)
{
this
.
uploadUser
=
uploadUser
;
public
void
set
FileSuffix
(
String
fileSuffix
)
{
this
.
fileSuffix
=
fileSuffix
;
}
public
String
get
LastUpdateTim
e
()
{
return
lastUpdateTim
e
;
public
String
get
UploadPepl
e
()
{
return
uploadPepl
e
;
}
public
void
set
LastUpdateTime
(
String
lastUpdateTim
e
)
{
this
.
lastUpdateTime
=
lastUpdateTim
e
;
public
void
set
UploadPeple
(
String
uploadPepl
e
)
{
this
.
uploadPeple
=
uploadPepl
e
;
}
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
;
}
}
app/src/main/java/cn/com/bril/androidocr/studio/configs/RequestConfig.java
View file @
0fdb8fa8
...
...
@@ -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"
;
...
...
app/src/main/java/cn/com/bril/androidocr/studio/http/HttpHolder.java
View file @
0fdb8fa8
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
>
callb
ack
){
public
static
void
exportFile
(
String
url
,
Map
<
String
,
Object
>
map
,
VertifyActivity
.
HttpCallBack
callB
ack
){
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
,
call
b
ack
);
x
.
http
().
post
(
params
,
call
B
ack
);
}
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
);
}
}
app/src/main/java/cn/com/bril/androidocr/studio/interf/OnHttpListener.java
View file @
0fdb8fa8
...
...
@@ -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
);
}
app/src/main/java/cn/com/bril/androidocr/studio/ui/activity/BaseActivity.java
View file @
0fdb8fa8
...
...
@@ -59,4 +59,6 @@ public class BaseActivity extends AppCompatActivity {
private
void
dispatchBadLicense
()
{
showDialog
(
BaseActivity
.
DIALOG_BAD_LICENSE
);
}
}
app/src/main/java/cn/com/bril/androidocr/studio/ui/activity/MainActivity.java
View file @
0fdb8fa8
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
);
...
...
@@ -142,7 +239,9 @@ public class MainActivity extends BaseActivity {
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
)
{
...
...
@@ -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
.
right
Tv
,
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
;
}
}
//展示工具栏
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
;
}
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
onBackPressed
()
{
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
);
}
}
OcrApplication
.
getInstance
().
exit
();
super
.
onBackPressed
();
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
();
}
}
app/src/main/java/cn/com/bril/androidocr/studio/ui/activity/VertifyActivity.java
View file @
0fdb8fa8
...
...
@@ -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
(
"
pn
g"
,
"txt"
);
String
filename
=
image
.
getName
().
replace
(
"
jp
g"
,
"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,45 +308,27 @@ 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
;
}
public
class
HttpCallBack
implements
Callback
.
CommonCallback
<
String
>{
String
httpType
;
public
HttpCallBack
(
String
type
)
{
httpType
=
type
;
}
};
@Override
public
void
success
(
String
result
)
{
public
void
onSuccess
(
String
result
)
{
if
(
"upload"
.
equals
(
httpType
)){
try
{
JSONObject
object
=
new
JSONObject
(
result
);
String
filePath
=
object
.
getString
(
"message"
);
...
...
@@ -356,34 +337,44 @@ public class VertifyActivity extends AppCompatActivity implements OnHttpListener
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
);
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
());
}
@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
())
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
();
OcrInfo
ocrInfo
=
GsonUtil
.
getInstance
().
fromJson
(
result
,
new
TypeToken
<
Ocr
Info
>()
{
ExportInfo
exportInfo
=
GsonUtil
.
getInstance
().
fromJson
(
result
,
new
TypeToken
<
Export
Info
>()
{
}.
getType
());
if
(
null
!=
ocrInfo
.
getId
()
||
""
!=
ocrInfo
.
getId
())
Toast
.
makeText
(
VertifyActivity
.
this
,
"导出成功"
,
Toast
.
LENGTH_SHORT
).
show
();
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
()
{
}
};
}
}
app/src/main/java/cn/com/bril/androidocr/studio/ui/adapter/FragmentListAdapter.java
View file @
0fdb8fa8
...
...
@@ -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.Ocr
Info
;
import
cn.com.bril.androidocr.studio.beans.Ocr
RootBean
;
/**
* 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
;
}
}
app/src/main/java/cn/com/bril/androidocr/studio/ui/adapter/TabFragmentPagerAdapter.java
View file @
0fdb8fa8
...
...
@@ -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
);
}
}
app/src/main/java/cn/com/bril/androidocr/studio/ui/fragment/ExportFragment.java
View file @
0fdb8fa8
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.Ocr
Info
;
import
cn.com.bril.androidocr.studio.beans.Ocr
RootBean
;
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
<
Ocr
Info
>
infos
;
private
List
<
Ocr
RootBean
>
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
);
}
}
app/src/main/java/cn/com/bril/androidocr/studio/ui/fragment/ShareFragment.java
View file @
0fdb8fa8
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.Ocr
Info
;
import
cn.com.bril.androidocr.studio.beans.Ocr
RootBean
;
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
<
Ocr
Info
>
infos
;
private
List
<
Ocr
RootBean
>
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
)
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
{
hasMoreData
=
false
;
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
();
}
}
app/src/main/java/cn/com/bril/androidocr/studio/utils/FileUtil.java
View file @
0fdb8fa8
...
...
@@ -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
;
}
}
app/src/main/java/cn/com/bril/androidocr/studio/utils/ScreenUtil.java
View file @
0fdb8fa8
...
...
@@ -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
);
}
}
app/src/main/java/cn/com/bril/androidocr/studio/utils/ShareUtil.java
View file @
0fdb8fa8
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
();
}
}
...
...
app/src/main/res/color/bottom_tab_selector.xml
View file @
0fdb8fa8
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<item
android:color=
"@color/
normal"
android:state_check
ed=
"true"
/>
<item
android:color=
"@color/tab_grey"
android:state_
check
ed=
"false"
/>
<item
android:color=
"@color/
white"
android:state_press
ed=
"true"
/>
<item
android:color=
"@color/tab_grey"
android:state_
press
ed=
"false"
/>
</selector>
\ No newline at end of file
app/src/main/res/layout/activity_main.xml
View file @
0fdb8fa8
<?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"
>
<RelativeLayout
android:id=
"@+id/head_content"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
>
<include
android:id=
"@+id/header"
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=
"
4
0dp"
android:layout_marginBottom=
"
5
0dp"
android:layout_marginRight=
"20dp"
/>
<
android.support.v4.view.
ViewPager
<
cn.com.bril.androidocr.studio.ui.widget.NoScroll
ViewPager
android:id=
"@+id/viewPager"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_above=
"@+id/bottom_menu"
android:layout_below=
"@+id/head
er
"
/>
android:layout_below=
"@+id/head
_content
"
/>
<
Linear
Layout
<
Relative
Layout
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>
...
...
app/src/main/res/layout/export_layout.xml
View file @
0fdb8fa8
...
...
@@ -77,7 +77,6 @@
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:orientation=
"horizontal"
android:visibility=
"gone"
android:padding=
"10dp"
>
<TextView
...
...
app/src/main/res/layout/listview_item_layout.xml
View file @
0fdb8fa8
...
...
@@ -22,11 +22,12 @@
android:layout_toRightOf=
"@+id/icon"
>
<TextView
android:layout_width=
"
match_par
ent"
android:layout_width=
"
wrap_cont
ent"
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=
"
30
dp"
android:layout_height=
"
2
0dp"
android:layout_width=
"
15
dp"
android:layout_height=
"
1
0dp"
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>
app/src/main/res/layout/main_bottom_layout.xml
View file @
0fdb8fa8
<?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"
...
...
app/src/main/res/layout/top_title_layout.xml
View file @
0fdb8fa8
...
...
@@ -48,8 +48,9 @@
/>
<ImageView
android:id=
"@+id/right_iv"
android:layout_width=
"
5
dp"
android:layout_width=
"
30
dp"
android:layout_height=
"20dp"
android:scaleType=
"centerInside"
android:layout_alignParentRight=
"true"
android:layout_centerVertical=
"true"
android:layout_marginRight=
"20dp"
...
...
app/src/main/res/values/dimen.xml
View file @
0fdb8fa8
...
...
@@ -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>
...
...
app/src/main/res/values/strings.xml
View file @
0fdb8fa8
...
...
@@ -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年的历练,拥有非常专业的会议策划团队;
...
...
app/src/main/res/values/styles.xml
View file @
0fdb8fa8
...
...
@@ -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>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment