Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
R
RvApp
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
Merge Requests
1
Merge Requests
1
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
lify
RvApp
Commits
87fe641a
Commit
87fe641a
authored
Jul 12, 2019
by
jianglx
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
分享初次提交
parent
a8ba5f7b
Changes
30
Hide whitespace changes
Inline
Side-by-side
Showing
30 changed files
with
1023 additions
and
110 deletions
+1023
-110
AndroidManifest.xml
RvClient/src/main/AndroidManifest.xml
+2
-1
RvClientApplication.java
RvClient/src/main/java/com/xxfc/rv/RvClientApplication.java
+22
-0
WelcomeActivity.java
RvClient/src/main/java/com/xxfc/rv/WelcomeActivity.java
+22
-0
FileUtil.java
Utils/src/main/java/com/base/utils/tools/java/FileUtil.java
+0
-1
build.gradle
component_utils/build.gradle
+1
-0
ZxingUtils.java
...tils/src/main/java/com/rv/component/utils/ZxingUtils.java
+111
-0
PickUpTheCarQRCodeActivity.java
...module/ui/main/home/order/PickUpTheCarQRCodeActivity.java
+6
-98
build.gradle
module_mine/build.gradle
+1
-0
MineFragment.java
module_mine/src/main/java/com/rv/rvmine/MineFragment.java
+11
-7
activity_mine.xml
module_mine/src/main/res/layout/activity_mine.xml
+17
-2
strings.xml
module_mine/src/main/res/values/strings.xml
+1
-0
.gitignore
plugin_share/.gitignore
+1
-0
build.gradle
plugin_share/build.gradle
+40
-0
ShareInstall_1.2.0.aar
plugin_share/libs/ShareInstall_1.2.0.aar
+0
-0
proguard-rules.pro
plugin_share/proguard-rules.pro
+21
-0
AndroidManifest.xml
plugin_share/src/main/AndroidManifest.xml
+15
-0
BillActivity.java
plugin_share/src/main/java/com/rv/share/BillActivity.java
+86
-0
ShareActivity.java
plugin_share/src/main/java/com/rv/share/ShareActivity.java
+33
-0
BillPresenter.java
...e/src/main/java/com/rv/share/presenter/BillPresenter.java
+200
-0
SharePresenter.java
.../src/main/java/com/rv/share/presenter/SharePresenter.java
+131
-0
StorageUtils.java
..._share/src/main/java/com/rv/share/utils/StorageUtils.java
+18
-0
common_icon_avatar_default.png
...rc/main/res/drawable-xhdpi/common_icon_avatar_default.png
+0
-0
icon_bill_test.png
plugin_share/src/main/res/drawable-xhdpi/icon_bill_test.png
+0
-0
shape_rv_bg_bill.xml
plugin_share/src/main/res/drawable/shape_rv_bg_bill.xml
+5
-0
activity_bill.xml
plugin_share/src/main/res/layout/activity_bill.xml
+141
-0
activity_share.xml
plugin_share/src/main/res/layout/activity_share.xml
+39
-0
dialog_share_choice.xml
plugin_share/src/main/res/layout/dialog_share_choice.xml
+91
-0
color.xml
plugin_share/src/main/res/values/color.xml
+4
-0
strings.xml
plugin_share/src/main/res/values/strings.xml
+3
-0
settings.gradle
settings.gradle
+1
-1
No files found.
RvClient/src/main/AndroidManifest.xml
View file @
87fe641a
...
@@ -107,8 +107,9 @@
...
@@ -107,8 +107,9 @@
android:theme=
"@style/SplashTheme"
>
android:theme=
"@style/SplashTheme"
>
<intent-filter>
<intent-filter>
<action
android:name=
"android.intent.action.MAIN"
/>
<action
android:name=
"android.intent.action.MAIN"
/>
<category
android:name=
"android.intent.category.LAUNCHER"
/>
<category
android:name=
"android.intent.category.LAUNCHER"
/>
<category
android:name=
"android.intent.category.BROWSABLE"
/>
<data
android:scheme=
"shareinstall为当前应用分配的scheme"
/>
</intent-filter>
</intent-filter>
</activity>
<!-- 百度地图相关 -->
</activity>
<!-- 百度地图相关 -->
<!-- 声明service组件 -->
<!-- 声明service组件 -->
...
...
RvClient/src/main/java/com/xxfc/rv/RvClientApplication.java
View file @
87fe641a
...
@@ -2,6 +2,8 @@ package com.xxfc.rv;
...
@@ -2,6 +2,8 @@ package com.xxfc.rv;
import
android.app.Activity
;
import
android.app.Activity
;
import
android.app.ActivityManager
;
import
android.content.Context
;
import
android.os.StrictMode
;
import
android.os.StrictMode
;
import
com.alibaba.android.arouter.launcher.ARouter
;
import
com.alibaba.android.arouter.launcher.ARouter
;
...
@@ -17,6 +19,7 @@ import com.frame.base.bean.BeanHeartbeat;
...
@@ -17,6 +19,7 @@ import com.frame.base.bean.BeanHeartbeat;
import
com.frame.base.manager.MyFrameManager
;
import
com.frame.base.manager.MyFrameManager
;
import
com.frame.rv.config.RvFrameConfig
;
import
com.frame.rv.config.RvFrameConfig
;
import
com.ruiwenliu.wrapper.util.LogUtils
;
import
com.ruiwenliu.wrapper.util.LogUtils
;
import
com.sh.sdk.shareinstall.ShareInstall
;
import
com.tencent.bugly.crashreport.CrashReport
;
import
com.tencent.bugly.crashreport.CrashReport
;
import
com.umeng.commonsdk.UMConfigure
;
import
com.umeng.commonsdk.UMConfigure
;
import
com.umeng.socialize.PlatformConfig
;
import
com.umeng.socialize.PlatformConfig
;
...
@@ -46,6 +49,9 @@ public class RvClientApplication extends FrameApp {
...
@@ -46,6 +49,9 @@ public class RvClientApplication extends FrameApp {
StrictMode
.
VmPolicy
.
Builder
builder
=
new
StrictMode
.
VmPolicy
.
Builder
();
StrictMode
.
VmPolicy
.
Builder
builder
=
new
StrictMode
.
VmPolicy
.
Builder
();
StrictMode
.
setVmPolicy
(
builder
.
build
());
StrictMode
.
setVmPolicy
(
builder
.
build
());
builder
.
detectFileUriExposure
();
builder
.
detectFileUriExposure
();
if
(
isMainProcess
())
{
ShareInstall
.
getInstance
().
init
(
getApplicationContext
());
}
CrashHandler
.
getInstance
().
init
(
this
);
CrashHandler
.
getInstance
().
init
(
this
);
...
@@ -95,6 +101,22 @@ public class RvClientApplication extends FrameApp {
...
@@ -95,6 +101,22 @@ public class RvClientApplication extends FrameApp {
}
}
/**
* 判断当前进程是否是应用的主进程
*
* @return
*/
public
boolean
isMainProcess
()
{
int
pid
=
android
.
os
.
Process
.
myPid
();
ActivityManager
activityManager
=
(
ActivityManager
)
getSystemService
(
Context
.
ACTIVITY_SERVICE
);
for
(
ActivityManager
.
RunningAppProcessInfo
appProcess
:
activityManager
.
getRunningAppProcesses
())
{
if
(
appProcess
.
pid
==
pid
)
{
return
getApplicationInfo
().
packageName
.
equals
(
appProcess
.
processName
);
}
}
return
false
;
}
@Override
@Override
public
void
onTerminate
()
{
public
void
onTerminate
()
{
super
.
onTerminate
();
super
.
onTerminate
();
...
...
RvClient/src/main/java/com/xxfc/rv/WelcomeActivity.java
View file @
87fe641a
...
@@ -3,6 +3,7 @@ package com.xxfc.rv;
...
@@ -3,6 +3,7 @@ package com.xxfc.rv;
import
android.content.Intent
;
import
android.content.Intent
;
import
android.os.Bundle
;
import
android.os.Bundle
;
import
android.text.TextUtils
;
import
android.text.TextUtils
;
import
android.util.Log
;
import
com.ruiwenliu.wrapper.base.BaseActivity
;
import
com.ruiwenliu.wrapper.base.BaseActivity
;
import
com.ruiwenliu.wrapper.base.BaseBean
;
import
com.ruiwenliu.wrapper.base.BaseBean
;
...
@@ -10,8 +11,13 @@ import com.ruiwenliu.wrapper.util.UtilsManager;
...
@@ -10,8 +11,13 @@ import com.ruiwenliu.wrapper.util.UtilsManager;
import
com.ruiwenliu.wrapper.weight.TitleView
;
import
com.ruiwenliu.wrapper.weight.TitleView
;
import
com.rv.home.rv.module.basic.presenter.CommonPresenter
;
import
com.rv.home.rv.module.basic.presenter.CommonPresenter
;
import
com.sh.sdk.shareinstall.ShareInstall
;
import
com.sh.sdk.shareinstall.listener.AppGetInfoListener
;
import
com.yuyife.okgo.OkGoUtil
;
import
com.yuyife.okgo.OkGoUtil
;
import
org.json.JSONException
;
import
org.json.JSONObject
;
import
java.util.concurrent.TimeUnit
;
import
java.util.concurrent.TimeUnit
;
import
io.reactivex.Flowable
;
import
io.reactivex.Flowable
;
...
@@ -37,6 +43,22 @@ public class WelcomeActivity extends BaseActivity<CommonPresenter> {
...
@@ -37,6 +43,22 @@ public class WelcomeActivity extends BaseActivity<CommonPresenter> {
protected
void
initView
(
Bundle
savedInstanceState
,
TitleView
titleView
,
Intent
intent
)
{
protected
void
initView
(
Bundle
savedInstanceState
,
TitleView
titleView
,
Intent
intent
)
{
showTitle
(
false
);
//隐藏菜单栏
showTitle
(
false
);
//隐藏菜单栏
interval
();
interval
();
ShareInstall
.
getInstance
().
getInfo
(
getIntent
(),
new
AppGetInfoListener
()
{
@Override
public
void
onGetInfoFinish
(
String
info
)
{
// 客户端获取到的参数是json字符串格式
Log
.
d
(
"ShareInstall"
,
"info = "
+
info
);
try
{
JSONObject
object
=
new
JSONObject
(
info
);
// 通过该方法拿到设置的渠道值,剩余值为自定义的其他参数
String
channel
=
object
.
optString
(
"channel"
);
Log
.
d
(
"ShareInstall"
,
"channel = "
+
channel
);
}
catch
(
JSONException
e
)
{
e
.
printStackTrace
();
}
}
});
}
}
@Override
@Override
...
...
Utils/src/main/java/com/base/utils/tools/java/FileUtil.java
View file @
87fe641a
...
@@ -43,7 +43,6 @@ public class FileUtil {
...
@@ -43,7 +43,6 @@ public class FileUtil {
* 在程序入口时就建立了
* 在程序入口时就建立了
*/
*/
public
static
void
setAppFileDir
()
{
public
static
void
setAppFileDir
()
{
File
sd
=
Environment
.
getExternalStorageDirectory
();
File
sd
=
Environment
.
getExternalStorageDirectory
();
String
rootPath
=
sd
.
getPath
()
+
Config
.
appDir
;
String
rootPath
=
sd
.
getPath
()
+
Config
.
appDir
;
File
rootFile
=
new
File
(
rootPath
);
File
rootFile
=
new
File
(
rootPath
);
...
...
component_utils/build.gradle
View file @
87fe641a
...
@@ -30,4 +30,5 @@ dependencies {
...
@@ -30,4 +30,5 @@ dependencies {
testImplementation
'junit:junit:4.12'
testImplementation
'junit:junit:4.12'
androidTestImplementation
'com.android.support.test:runner:1.0.2'
androidTestImplementation
'com.android.support.test:runner:1.0.2'
androidTestImplementation
'com.android.support.test.espresso:espresso-core:3.0.2'
androidTestImplementation
'com.android.support.test.espresso:espresso-core:3.0.2'
implementation
'com.google.zxing:core:3.3.0'
}
}
component_utils/src/main/java/com/rv/component/utils/ZxingUtils.java
0 → 100644
View file @
87fe641a
package
com
.
rv
.
component
.
utils
;
import
android.graphics.Bitmap
;
import
android.graphics.Canvas
;
import
com.google.zxing.BarcodeFormat
;
import
com.google.zxing.EncodeHintType
;
import
com.google.zxing.WriterException
;
import
com.google.zxing.common.BitMatrix
;
import
com.google.zxing.qrcode.QRCodeWriter
;
import
com.google.zxing.qrcode.decoder.ErrorCorrectionLevel
;
import
java.util.HashMap
;
import
java.util.Map
;
public
class
ZxingUtils
{
public
static
Bitmap
createQRImage
(
String
content
,
int
widthPix
,
int
heightPix
,
Bitmap
logoBm
)
{
try
{
//配置参数
Map
<
EncodeHintType
,
Object
>
hints
=
new
HashMap
<>();
hints
.
put
(
EncodeHintType
.
CHARACTER_SET
,
"utf-8"
);
//容错级别
hints
.
put
(
EncodeHintType
.
ERROR_CORRECTION
,
ErrorCorrectionLevel
.
H
);
//设置空白边距的宽度
hints
.
put
(
EncodeHintType
.
MARGIN
,
1
);
//default is 4
// 图像数据转换,使用了矩阵转换
BitMatrix
bitMatrix
=
null
;
try
{
bitMatrix
=
new
QRCodeWriter
().
encode
(
content
,
BarcodeFormat
.
QR_CODE
,
widthPix
,
heightPix
,
hints
);
}
catch
(
WriterException
e
)
{
e
.
printStackTrace
();
}
int
[]
pixels
=
new
int
[
widthPix
*
heightPix
];
// 下面这里按照二维码的算法,逐个生成二维码的图片,
// 两个for循环是图片横列扫描的结果
for
(
int
y
=
0
;
y
<
heightPix
;
y
++)
{
for
(
int
x
=
0
;
x
<
widthPix
;
x
++)
{
if
(
bitMatrix
.
get
(
x
,
y
))
{
pixels
[
y
*
widthPix
+
x
]
=
0xff000000
;
}
else
{
pixels
[
y
*
widthPix
+
x
]
=
0xffffffff
;
}
}
}
// 生成二维码图片的格式,使用ARGB_8888
Bitmap
bitmap
=
Bitmap
.
createBitmap
(
widthPix
,
heightPix
,
Bitmap
.
Config
.
ARGB_8888
);
bitmap
.
setPixels
(
pixels
,
0
,
widthPix
,
0
,
0
,
widthPix
,
heightPix
);
if
(
logoBm
!=
null
)
{
bitmap
=
Logo
(
bitmap
,
logoBm
);
}
//必须使用compress方法将bitmap保存到文件中再进行读取。直接返回的bitmap是没有任何压缩的,
// 内存消耗巨大!
return
bitmap
;
// return bitmap != null && bitmap.compress(Bitmap.CompressFormat.JPEG, 100);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
private
static
Bitmap
Logo
(
Bitmap
src
,
Bitmap
logo
)
{
if
(
src
==
null
)
{
return
null
;
}
if
(
logo
==
null
)
{
return
src
;
}
//获取图片的宽高
int
srcWidth
=
src
.
getWidth
();
int
srcHeight
=
src
.
getHeight
();
int
logoWidth
=
logo
.
getWidth
();
int
logoHeight
=
logo
.
getHeight
();
if
(
srcWidth
==
0
||
srcHeight
==
0
)
{
return
null
;
}
if
(
logoWidth
==
0
||
logoHeight
==
0
)
{
return
src
;
}
//logo大小为二维码整体大小的1/5
float
scaleFactor
=
srcWidth
*
1.0f
/
5
/
logoWidth
;
Bitmap
bitmap
=
Bitmap
.
createBitmap
(
srcWidth
,
srcHeight
,
Bitmap
.
Config
.
ARGB_8888
);
try
{
Canvas
canvas
=
new
Canvas
(
bitmap
);
canvas
.
drawBitmap
(
src
,
0
,
0
,
null
);
canvas
.
scale
(
scaleFactor
,
scaleFactor
,
srcWidth
/
2
,
srcHeight
/
2
);
canvas
.
drawBitmap
(
logo
,
(
srcWidth
-
logoWidth
)
/
2
,
(
srcHeight
-
logoHeight
)
/
2
,
null
);
canvas
.
save
();
canvas
.
restore
();
}
catch
(
Exception
e
)
{
bitmap
=
null
;
e
.
getStackTrace
();
}
return
bitmap
;
}
}
module_home/src/main/java/com/rv/home/rv/module/ui/main/home/order/PickUpTheCarQRCodeActivity.java
View file @
87fe641a
...
@@ -22,6 +22,7 @@ import com.ruiwenliu.wrapper.base.BaseBean;
...
@@ -22,6 +22,7 @@ import com.ruiwenliu.wrapper.base.BaseBean;
import
com.ruiwenliu.wrapper.util.TimeManager
;
import
com.ruiwenliu.wrapper.util.TimeManager
;
import
com.ruiwenliu.wrapper.util.glide.GlideManager
;
import
com.ruiwenliu.wrapper.util.glide.GlideManager
;
import
com.ruiwenliu.wrapper.weight.TitleView
;
import
com.ruiwenliu.wrapper.weight.TitleView
;
import
com.rv.component.utils.ZxingUtils
;
import
com.rv.home.R
;
import
com.rv.home.R
;
import
com.rv.home.R2
;
import
com.rv.home.R2
;
import
com.rv.home.rv.module.basic.BaseStatusActivity
;
import
com.rv.home.rv.module.basic.BaseStatusActivity
;
...
@@ -83,15 +84,15 @@ public class PickUpTheCarQRCodeActivity extends BaseStatusActivity<PickerPresent
...
@@ -83,15 +84,15 @@ public class PickUpTheCarQRCodeActivity extends BaseStatusActivity<PickerPresent
showTitle
(
false
);
showTitle
(
false
);
dataBean
=
(
OrderListBean
.
DataBeanX
.
DataBean
)
intent
.
getSerializableExtra
(
"dataBean"
);
dataBean
=
(
OrderListBean
.
DataBeanX
.
DataBean
)
intent
.
getSerializableExtra
(
"dataBean"
);
if
(
dataBean
!=
null
){
if
(
dataBean
!=
null
)
{
if
(
4
==
dataBean
.
getStatusX
())
{
if
(
4
==
dataBean
.
getStatusX
())
{
tvCenter
.
setText
(
"出示取车二维码"
);
tvCenter
.
setText
(
"出示取车二维码"
);
}
else
if
(
5
==
dataBean
.
getStatusX
())
{
}
else
if
(
5
==
dataBean
.
getStatusX
())
{
tvCenter
.
setText
(
"出示还车二维码"
);
tvCenter
.
setText
(
"出示还车二维码"
);
}
}
tvCarType
.
setText
(
dataBean
.
getName
());
tvCarType
.
setText
(
dataBean
.
getName
());
OrderListBean
.
DataBeanX
.
DataBean
.
OrderRentVehicleDetail
detail
=
dataBean
.
getOrderRentVehicleDetail
();
OrderListBean
.
DataBeanX
.
DataBean
.
OrderRentVehicleDetail
detail
=
dataBean
.
getOrderRentVehicleDetail
();
if
(
detail
!=
null
)
{
if
(
detail
!=
null
)
{
tvGetAddress
.
setText
(
detail
.
getStart_addr
());
tvGetAddress
.
setText
(
detail
.
getStart_addr
());
tvGetTime
.
setText
(
TimeManager
.
stampToDate
(
String
.
valueOf
(
detail
.
getStart_time
())));
tvGetTime
.
setText
(
TimeManager
.
stampToDate
(
String
.
valueOf
(
detail
.
getStart_time
())));
tvOutAddress
.
setText
(
detail
.
getEnd_addr
());
tvOutAddress
.
setText
(
detail
.
getEnd_addr
());
...
@@ -102,7 +103,7 @@ public class PickUpTheCarQRCodeActivity extends BaseStatusActivity<PickerPresent
...
@@ -102,7 +103,7 @@ public class PickUpTheCarQRCodeActivity extends BaseStatusActivity<PickerPresent
}
}
//生成带中间图标的二维码
//生成带中间图标的二维码
Bitmap
success
=
createQRImage
(
dataBean
.
getQrcodeStr
(),
100
,
100
,
Bitmap
success
=
ZxingUtils
.
createQRImage
(
dataBean
.
getQrcodeStr
(),
100
,
100
,
BitmapFactory
.
decodeResource
(
getResources
(),
R
.
mipmap
.
ic_launcher
));
BitmapFactory
.
decodeResource
(
getResources
(),
R
.
mipmap
.
ic_launcher
));
ivZxing
.
setImageBitmap
(
success
);
ivZxing
.
setImageBitmap
(
success
);
}
}
...
@@ -128,97 +129,4 @@ public class PickUpTheCarQRCodeActivity extends BaseStatusActivity<PickerPresent
...
@@ -128,97 +129,4 @@ public class PickUpTheCarQRCodeActivity extends BaseStatusActivity<PickerPresent
showToast
(
"该功能还在开发中..."
);
showToast
(
"该功能还在开发中..."
);
}
}
}
}
public
static
Bitmap
createQRImage
(
String
content
,
int
widthPix
,
int
heightPix
,
Bitmap
logoBm
)
{
try
{
//配置参数
Map
<
EncodeHintType
,
Object
>
hints
=
new
HashMap
<>();
hints
.
put
(
EncodeHintType
.
CHARACTER_SET
,
"utf-8"
);
//容错级别
hints
.
put
(
EncodeHintType
.
ERROR_CORRECTION
,
ErrorCorrectionLevel
.
H
);
//设置空白边距的宽度
hints
.
put
(
EncodeHintType
.
MARGIN
,
1
);
//default is 4
// 图像数据转换,使用了矩阵转换
BitMatrix
bitMatrix
=
null
;
try
{
bitMatrix
=
new
QRCodeWriter
().
encode
(
content
,
BarcodeFormat
.
QR_CODE
,
widthPix
,
heightPix
,
hints
);
}
catch
(
WriterException
e
)
{
e
.
printStackTrace
();
}
int
[]
pixels
=
new
int
[
widthPix
*
heightPix
];
// 下面这里按照二维码的算法,逐个生成二维码的图片,
// 两个for循环是图片横列扫描的结果
for
(
int
y
=
0
;
y
<
heightPix
;
y
++)
{
for
(
int
x
=
0
;
x
<
widthPix
;
x
++)
{
if
(
bitMatrix
.
get
(
x
,
y
))
{
pixels
[
y
*
widthPix
+
x
]
=
0xff000000
;
}
else
{
pixels
[
y
*
widthPix
+
x
]
=
0xffffffff
;
}
}
}
// 生成二维码图片的格式,使用ARGB_8888
Bitmap
bitmap
=
Bitmap
.
createBitmap
(
widthPix
,
heightPix
,
Bitmap
.
Config
.
ARGB_8888
);
bitmap
.
setPixels
(
pixels
,
0
,
widthPix
,
0
,
0
,
widthPix
,
heightPix
);
if
(
logoBm
!=
null
)
{
bitmap
=
Logo
(
bitmap
,
logoBm
);
}
//必须使用compress方法将bitmap保存到文件中再进行读取。直接返回的bitmap是没有任何压缩的,
// 内存消耗巨大!
return
bitmap
;
// return bitmap != null && bitmap.compress(Bitmap.CompressFormat.JPEG, 100);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
private
static
Bitmap
Logo
(
Bitmap
src
,
Bitmap
logo
)
{
if
(
src
==
null
)
{
return
null
;
}
if
(
logo
==
null
)
{
return
src
;
}
//获取图片的宽高
int
srcWidth
=
src
.
getWidth
();
int
srcHeight
=
src
.
getHeight
();
int
logoWidth
=
logo
.
getWidth
();
int
logoHeight
=
logo
.
getHeight
();
if
(
srcWidth
==
0
||
srcHeight
==
0
)
{
return
null
;
}
if
(
logoWidth
==
0
||
logoHeight
==
0
)
{
return
src
;
}
//logo大小为二维码整体大小的1/5
float
scaleFactor
=
srcWidth
*
1.0f
/
5
/
logoWidth
;
Bitmap
bitmap
=
Bitmap
.
createBitmap
(
srcWidth
,
srcHeight
,
Bitmap
.
Config
.
ARGB_8888
);
try
{
Canvas
canvas
=
new
Canvas
(
bitmap
);
canvas
.
drawBitmap
(
src
,
0
,
0
,
null
);
canvas
.
scale
(
scaleFactor
,
scaleFactor
,
srcWidth
/
2
,
srcHeight
/
2
);
canvas
.
drawBitmap
(
logo
,
(
srcWidth
-
logoWidth
)
/
2
,
(
srcHeight
-
logoHeight
)
/
2
,
null
);
canvas
.
save
();
canvas
.
restore
();
}
catch
(
Exception
e
)
{
bitmap
=
null
;
e
.
getStackTrace
();
}
return
bitmap
;
}
}
}
module_mine/build.gradle
View file @
87fe641a
...
@@ -47,4 +47,5 @@ dependencies {
...
@@ -47,4 +47,5 @@ dependencies {
//动态权限申请库
//动态权限申请库
implementation
'pub.devrel:easypermissions:1.3.0'
implementation
'pub.devrel:easypermissions:1.3.0'
implementation
'com.alibaba:fastjson:1.2.21'
implementation
'com.alibaba:fastjson:1.2.21'
api
project
(
':plugin_share'
)
}
}
module_mine/src/main/java/com/rv/rvmine/MineFragment.java
View file @
87fe641a
...
@@ -33,6 +33,7 @@ import com.rv.home.rv.module.ApiConfig;
...
@@ -33,6 +33,7 @@ import com.rv.home.rv.module.ApiConfig;
import
com.rv.home.rv.module.basic.presenter.CommonPresenter
;
import
com.rv.home.rv.module.basic.presenter.CommonPresenter
;
import
com.rv.home.rv.module.ui.login.LoginRvActivity
;
import
com.rv.home.rv.module.ui.login.LoginRvActivity
;
import
com.rv.home.rv.module.ui.main.home.DrivingListActivity
;
import
com.rv.home.rv.module.ui.main.home.DrivingListActivity
;
import
com.rv.home.rv.module.ui.main.home.ShareImageActivity
;
import
com.rv.home.rv.module.ui.main.home.bean.BeanHomeBanner
;
import
com.rv.home.rv.module.ui.main.home.bean.BeanHomeBanner
;
import
com.rv.home.rv.module.ui.main.home.order.OrderListActivity
;
import
com.rv.home.rv.module.ui.main.home.order.OrderListActivity
;
import
com.rv.member.MemberCenterActivity
;
import
com.rv.member.MemberCenterActivity
;
...
@@ -43,6 +44,7 @@ import com.rv.rvmine.traveler.ChooseAVisitorActivity;
...
@@ -43,6 +44,7 @@ import com.rv.rvmine.traveler.ChooseAVisitorActivity;
import
com.rv.rvmine.traveler.CollectionActivity
;
import
com.rv.rvmine.traveler.CollectionActivity
;
import
com.rv.rvmine.traveler.PersonalInformationActivity
;
import
com.rv.rvmine.traveler.PersonalInformationActivity
;
import
com.rv.rvmine.traveler.SettingActivity
;
import
com.rv.rvmine.traveler.SettingActivity
;
import
com.rv.share.ShareActivity
;
import
com.yuyife.banner.Banner
;
import
com.yuyife.banner.Banner
;
import
com.yuyife.banner.BannerConfig
;
import
com.yuyife.banner.BannerConfig
;
import
com.yuyife.banner.listener.OnBannerListener
;
import
com.yuyife.banner.listener.OnBannerListener
;
...
@@ -60,6 +62,7 @@ import butterknife.ButterKnife;
...
@@ -60,6 +62,7 @@ import butterknife.ButterKnife;
import
butterknife.OnClick
;
import
butterknife.OnClick
;
import
butterknife.Unbinder
;
import
butterknife.Unbinder
;
import
io.reactivex.schedulers.Schedulers
;
import
io.reactivex.schedulers.Schedulers
;
/**
/**
* 我的
* 我的
*/
*/
...
@@ -109,7 +112,8 @@ public class MineFragment extends BaseFragment<CommonPresenter> implements Simpl
...
@@ -109,7 +112,8 @@ public class MineFragment extends BaseFragment<CommonPresenter> implements Simpl
SimpleRefreshLayout
mSimpleRefreshLayout
;
SimpleRefreshLayout
mSimpleRefreshLayout
;
@BindView
(
R2
.
id
.
tv_user_identity
)
@BindView
(
R2
.
id
.
tv_user_identity
)
TextView
tvUserIdentity
;
TextView
tvUserIdentity
;
@BindView
(
R2
.
id
.
rl_item_share
)
RelativeLayout
rlItemShare
;
Unbinder
unbinder
;
Unbinder
unbinder
;
...
@@ -190,7 +194,7 @@ public class MineFragment extends BaseFragment<CommonPresenter> implements Simpl
...
@@ -190,7 +194,7 @@ public class MineFragment extends BaseFragment<CommonPresenter> implements Simpl
@OnClick
({
R2
.
id
.
iv_avatar
,
R2
.
id
.
tv_login
,
R2
.
id
.
tv_verified
,
R2
.
id
.
rl_item_to_be_paid
,
R2
.
id
.
rl_item_staying
,
@OnClick
({
R2
.
id
.
iv_avatar
,
R2
.
id
.
tv_login
,
R2
.
id
.
tv_verified
,
R2
.
id
.
rl_item_to_be_paid
,
R2
.
id
.
rl_item_staying
,
R2
.
id
.
rl_item_traveling
,
R2
.
id
.
rl_item_completed
,
R2
.
id
.
rl_item_all
,
R2
.
id
.
rl_item_collection
,
R2
.
id
.
rl_item_personal_information
,
R2
.
id
.
rl_item_traveling
,
R2
.
id
.
rl_item_completed
,
R2
.
id
.
rl_item_all
,
R2
.
id
.
rl_item_collection
,
R2
.
id
.
rl_item_personal_information
,
R2
.
id
.
rl_item_setting
,
R2
.
id
.
rl_item_driver
,
R2
.
id
.
rl_item_traveler
,
R2
.
id
.
rl_item_my_pat
,
R2
.
id
.
tv_view_privileges
})
R2
.
id
.
rl_item_setting
,
R2
.
id
.
rl_item_driver
,
R2
.
id
.
rl_item_traveler
,
R2
.
id
.
tv_view_privileges
,
R2
.
id
.
rl_item_share
})
public
void
onViewClicked
(
View
view
)
{
public
void
onViewClicked
(
View
view
)
{
int
id
=
view
.
getId
();
int
id
=
view
.
getId
();
if
(
id
==
R
.
id
.
iv_avatar
)
{
if
(
id
==
R
.
id
.
iv_avatar
)
{
...
@@ -259,10 +263,10 @@ public class MineFragment extends BaseFragment<CommonPresenter> implements Simpl
...
@@ -259,10 +263,10 @@ public class MineFragment extends BaseFragment<CommonPresenter> implements Simpl
//出游人
//出游人
if
(
isLogin
())
return
;
if
(
isLogin
())
return
;
startActivity
(
new
Intent
(
_mActivity
,
ChooseAVisitorActivity
.
class
));
startActivity
(
new
Intent
(
_mActivity
,
ChooseAVisitorActivity
.
class
));
}
else
if
(
id
==
R
.
id
.
rl_item_my_pat
)
{
//我的拍拍
}
else
if
(
id
==
R
.
id
.
tv_view_privileges
)
{
}
else
if
(
id
==
R
.
id
.
tv_view_privileges
)
{
startActivity
(
MemberCenterActivity
.
getIntent
(
_mActivity
));
startActivity
(
MemberCenterActivity
.
getIntent
(
_mActivity
));
}
else
if
(
id
==
R
.
id
.
rl_item_share
)
{
startActivity
(
new
Intent
(
_mActivity
,
ShareActivity
.
class
));
}
}
}
}
...
@@ -394,9 +398,9 @@ public class MineFragment extends BaseFragment<CommonPresenter> implements Simpl
...
@@ -394,9 +398,9 @@ public class MineFragment extends BaseFragment<CommonPresenter> implements Simpl
if
(!
TextUtils
.
isEmpty
(
info
.
getIcon
()))
if
(!
TextUtils
.
isEmpty
(
info
.
getIcon
()))
GlideManager
.
getInstance
(
getContext
()).
loadImage
(
info
.
getIcon
(),
ivMember
);
GlideManager
.
getInstance
(
getContext
()).
loadImage
(
info
.
getIcon
(),
ivMember
);
if
(
TextUtils
.
isEmpty
(
info
.
getPositionName
())){
if
(
TextUtils
.
isEmpty
(
info
.
getPositionName
()))
{
tvUserIdentity
.
setVisibility
(
View
.
GONE
);
tvUserIdentity
.
setVisibility
(
View
.
GONE
);
}
else
{
}
else
{
tvUserIdentity
.
setText
(
info
.
getPositionName
());
tvUserIdentity
.
setText
(
info
.
getPositionName
());
tvUserIdentity
.
setVisibility
(
View
.
VISIBLE
);
tvUserIdentity
.
setVisibility
(
View
.
VISIBLE
);
...
...
module_mine/src/main/res/layout/activity_mine.xml
View file @
87fe641a
...
@@ -108,7 +108,6 @@
...
@@ -108,7 +108,6 @@
</LinearLayout>
</LinearLayout>
<TextView
<TextView
android:id=
"@+id/tv_login"
android:id=
"@+id/tv_login"
android:layout_width=
"@dimen/size_150"
android:layout_width=
"@dimen/size_150"
...
@@ -513,12 +512,28 @@
...
@@ -513,12 +512,28 @@
</RelativeLayout>
</RelativeLayout>
<RelativeLayout
<RelativeLayout
android:id=
"@+id/rl_item_
my_pat
"
android:id=
"@+id/rl_item_
share
"
android:layout_width=
"0dp"
android:layout_width=
"0dp"
android:layout_height=
"@dimen/size_60"
android:layout_height=
"@dimen/size_60"
android:layout_weight=
"1"
android:layout_weight=
"1"
android:orientation=
"vertical"
>
android:orientation=
"vertical"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_centerHorizontal=
"true"
android:src=
"@drawable/mycenter_icon_visitors"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_alignParentBottom=
"true"
android:layout_centerHorizontal=
"true"
android:layout_marginTop=
"@dimen/size_18"
android:text=
"@string/tv_share"
android:textColor=
"@color/colorMain"
android:textSize=
"@dimen/size_12"
/>
</RelativeLayout>
</RelativeLayout>
<RelativeLayout
<RelativeLayout
...
...
module_mine/src/main/res/values/strings.xml
View file @
87fe641a
...
@@ -36,6 +36,7 @@
...
@@ -36,6 +36,7 @@
<string
name=
"add_a_visitor_title"
>
添加出游人
</string>
<string
name=
"add_a_visitor_title"
>
添加出游人
</string>
<string
name=
"tv_driver"
>
驾驶人
</string>
<string
name=
"tv_driver"
>
驾驶人
</string>
<string
name=
"tv_traveler"
>
出游人
</string>
<string
name=
"tv_traveler"
>
出游人
</string>
<string
name=
"tv_share"
>
分享
</string>
<string
name=
"tv_my_release"
>
我的发布
</string>
<string
name=
"tv_my_release"
>
我的发布
</string>
<string
name=
"tv_open_membership"
>
立即开通普通会员
</string>
<string
name=
"tv_open_membership"
>
立即开通普通会员
</string>
...
...
plugin_share/.gitignore
0 → 100644
View file @
87fe641a
/build
plugin_share/build.gradle
0 → 100644
View file @
87fe641a
apply
plugin:
'com.android.library'
apply
plugin:
'com.jakewharton.butterknife'
android
{
compileSdkVersion
28
defaultConfig
{
minSdkVersion
19
targetSdkVersion
28
testInstrumentationRunner
"android.support.test.runner.AndroidJUnitRunner"
}
buildTypes
{
release
{
minifyEnabled
false
proguardFiles
getDefaultProguardFile
(
'proguard-android.txt'
),
'proguard-rules.pro'
}
}
}
repositories
{
flatDir
{
dirs
'libs'
}
}
dependencies
{
implementation
fileTree
(
include:
[
'*.jar'
],
dir:
'libs'
)
implementation
'com.android.support:appcompat-v7:28.0.0'
annotationProcessor
'com.jakewharton:butterknife-compiler:9.0.0-rc1'
implementation
'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation
'junit:junit:4.12'
androidTestImplementation
'com.android.support.test:runner:1.0.2'
androidTestImplementation
'com.android.support.test.espresso:espresso-core:3.0.2'
implementation
project
(
':module_home'
)
api
files
(
'libs/ShareInstall_1.2.0.aar'
)
}
plugin_share/libs/ShareInstall_1.2.0.aar
0 → 100644
View file @
87fe641a
File added
plugin_share/proguard-rules.pro
0 → 100644
View file @
87fe641a
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
plugin_share/src/main/AndroidManifest.xml
0 → 100644
View file @
87fe641a
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
package=
"com.rv.share"
>
<application>
<activity
android:name=
".ShareActivity"
/>
<meta-data
android:name=
"com.shareinstall.APP_KEY"
android:value=
"shareinstall为当前应用分配的appkey"
/>
<activity
android:name=
".BillActivity"
></activity>
</application>
</manifest>
\ No newline at end of file
plugin_share/src/main/java/com/rv/share/BillActivity.java
0 → 100644
View file @
87fe641a
package
com
.
rv
.
share
;
import
android.content.Intent
;
import
android.graphics.Bitmap
;
import
android.graphics.Canvas
;
import
android.graphics.Color
;
import
android.support.v7.app.AppCompatActivity
;
import
android.os.Bundle
;
import
android.view.View
;
import
android.widget.Button
;
import
android.widget.ImageView
;
import
android.widget.LinearLayout
;
import
android.widget.TextView
;
import
com.alibaba.android.arouter.launcher.ARouter
;
import
com.base.utils.ui.image.round.RoundImageView
;
import
com.frame.base.url.Constance
;
import
com.ruiwenliu.wrapper.base.BaseActivity
;
import
com.ruiwenliu.wrapper.base.BaseBean
;
import
com.ruiwenliu.wrapper.base.BaseStatusActivity
;
import
com.ruiwenliu.wrapper.weight.TitleView
;
import
com.rv.home.rv.module.basic.presenter.CommonPresenter
;
import
com.rv.share.presenter.BillPresenter
;
import
butterknife.BindView
;
import
butterknife.OnClick
;
/********
*
* 海报界面
* created by john
*/
public
class
BillActivity
extends
BaseStatusActivity
<
BillPresenter
>
{
@BindView
(
R2
.
id
.
tv_back_title
)
TextView
tvBackTitle
;
@BindView
(
R2
.
id
.
btn_share
)
Button
btnShare
;
@BindView
(
R2
.
id
.
rimg_avatar
)
RoundImageView
imageView
;
@BindView
(
R2
.
id
.
tv_name
)
TextView
tvName
;
@BindView
(
R2
.
id
.
img_zxing
)
ImageView
imgZxing
;
@BindView
(
R2
.
id
.
ll_long_click
)
LinearLayout
llLongClick
;
@BindView
(
R2
.
id
.
ll_bill_content
)
LinearLayout
llBillContent
;
@Override
protected
int
setLayout
()
{
return
R
.
layout
.
activity_bill
;
}
@Override
protected
void
initView
(
Bundle
savedInstanceState
,
TitleView
titleView
,
Intent
intent
)
{
titleView
.
setVisibility
(
View
.
GONE
);
llLongClick
.
setOnLongClickListener
(
new
View
.
OnLongClickListener
()
{
@Override
public
boolean
onLongClick
(
View
view
)
{
mPresenter
.
showShareDialog
(
llBillContent
);
return
false
;
}
});
}
@Override
protected
void
loadData
(
Bundle
savedInstanceState
,
Intent
intent
)
{
}
@Override
public
void
onShowResult
(
int
requestType
,
BaseBean
result
)
{
}
@OnClick
({
R2
.
id
.
tv_back_title
,
R2
.
id
.
btn_share
,
R2
.
id
.
ll_long_click
})
public
void
onViewClicked
(
View
view
)
{
int
id
=
view
.
getId
();
if
(
id
==
R
.
id
.
tv_back_title
)
{
finish
();
}
else
if
(
id
==
R
.
id
.
btn_share
)
{
mPresenter
.
showShareDialog
(
llBillContent
);
}
}
}
plugin_share/src/main/java/com/rv/share/ShareActivity.java
0 → 100644
View file @
87fe641a
package
com
.
rv
.
share
;
import
android.content.Intent
;
import
android.os.Bundle
;
import
com.ruiwenliu.wrapper.base.BaseBean
;
import
com.ruiwenliu.wrapper.weight.TitleView
;
import
com.rv.home.rv.module.basic.BaseStatusActivity
;
import
com.rv.share.presenter.SharePresenter
;
public
class
ShareActivity
extends
BaseStatusActivity
<
SharePresenter
>
{
@Override
protected
int
setLayout
()
{
return
R
.
layout
.
activity_share
;
}
@Override
protected
void
initView
(
Bundle
savedInstanceState
,
TitleView
titleView
,
Intent
intent
)
{
}
@Override
protected
void
loadData
(
Bundle
savedInstanceState
,
Intent
intent
)
{
super
.
loadData
(
savedInstanceState
,
intent
);
mPresenter
.
showShareDialog
();
}
@Override
public
void
onShowResult
(
int
requestType
,
BaseBean
result
)
{
}
}
plugin_share/src/main/java/com/rv/share/presenter/BillPresenter.java
0 → 100644
View file @
87fe641a
package
com
.
rv
.
share
.
presenter
;
import
android.app.Activity
;
import
android.content.ClipData
;
import
android.content.ClipboardManager
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.graphics.Bitmap
;
import
android.graphics.Canvas
;
import
android.graphics.Color
;
import
android.net.Uri
;
import
android.os.Environment
;
import
android.util.Log
;
import
android.view.View
;
import
android.widget.LinearLayout
;
import
android.widget.Toast
;
import
com.rv.home.rv.module.basic.presenter.CommonPresenter
;
import
com.rv.share.BillActivity
;
import
com.rv.share.utils.StorageUtils
;
import
com.rv.share.view.ShareChoiceDialog
;
import
com.umeng.socialize.ShareAction
;
import
com.umeng.socialize.ShareContent
;
import
com.umeng.socialize.UMShareListener
;
import
com.umeng.socialize.bean.SHARE_MEDIA
;
import
com.umeng.socialize.media.UMImage
;
import
java.io.BufferedOutputStream
;
import
java.io.File
;
import
java.io.FileOutputStream
;
import
java.io.IOException
;
public
class
BillPresenter
extends
CommonPresenter
{
private
ShareChoiceDialog
dialog
=
null
;
private
ShareAction
shareAction
=
null
;
private
LinearLayout
view
=
null
;
private
Bitmap
bitmap
=
null
;
private
UMImage
image
=
null
;
public
void
showShareDialog
(
LinearLayout
llBillContent
)
{
this
.
view
=
llBillContent
;
if
(
dialog
==
null
)
{
dialog
=
new
ShareChoiceDialog
.
Builder
(
getPresenterContext
())
.
setShareListener
(
myListener
)
.
setWxVisiable
(
true
)
.
setWxCVisiable
(
true
)
.
setQQVisiable
(
true
)
.
create
();
}
dialog
.
show
();
}
/******
* 分享地址
* @param var1
* @param var2
*/
private
void
share
(
SHARE_MEDIA
var1
,
String
var2
)
{
if
(
shareAction
==
null
)
{
shareAction
=
new
ShareAction
((
Activity
)
getPresenterContext
()).
setCallback
(
shareListener
);
}
shareAction
.
setPlatform
(
var1
)
//传入平台
.
withText
(
var2
);
//分享内容
shareAction
.
share
();
}
/******
* 分享文件
* @param var1
* @param var2
*/
private
void
share
(
SHARE_MEDIA
var1
,
UMImage
var2
,
String
content
)
{
if
(
shareAction
==
null
)
{
shareAction
=
new
ShareAction
((
Activity
)
getPresenterContext
()).
setCallback
(
shareListener
);
}
shareAction
.
setPlatform
(
var1
)
//传入平台
.
withText
(
content
)
.
withMedia
(
var2
);
//分享内容
shareAction
.
share
();
}
/**
* view转bitmap
*/
public
Bitmap
viewConversionBitmap
(
View
v
)
{
int
w
=
v
.
getWidth
();
int
h
=
v
.
getHeight
();
int
startX
=
(
int
)
v
.
getX
();
int
startY
=
(
int
)
v
.
getY
();
Bitmap
bmp
=
Bitmap
.
createBitmap
(
w
,
h
,
Bitmap
.
Config
.
ARGB_8888
);
Canvas
c
=
new
Canvas
(
bmp
);
c
.
drawColor
(
Color
.
WHITE
);
v
.
layout
(
startX
,
startY
,
w
+
startX
,
h
+
startY
);
v
.
draw
(
c
);
return
bmp
;
}
public
File
saveBitmapFile
(
Bitmap
bitmap
)
{
File
file
=
new
File
(
StorageUtils
.
getCachePath
(
getPresenterContext
())
+
System
.
currentTimeMillis
()
+
".jpg"
);
//将要保存图片的路径
try
{
BufferedOutputStream
bos
=
new
BufferedOutputStream
(
new
FileOutputStream
(
file
));
bitmap
.
compress
(
Bitmap
.
CompressFormat
.
JPEG
,
100
,
bos
);
bos
.
flush
();
bos
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
return
file
;
}
private
UMShareListener
shareListener
=
new
UMShareListener
()
{
@Override
public
void
onStart
(
SHARE_MEDIA
share_media
)
{
Log
.
e
(
"xxxxxxxxxx"
,
"shareOnstart"
);
}
@Override
public
void
onResult
(
SHARE_MEDIA
share_media
)
{
Log
.
e
(
"xxxxxxxxxx"
,
"shareonResult"
);
}
@Override
public
void
onError
(
SHARE_MEDIA
share_media
,
Throwable
throwable
)
{
Log
.
e
(
"xxxxxxxxxx"
,
"shareonError:"
+
throwable
.
getMessage
());
}
@Override
public
void
onCancel
(
SHARE_MEDIA
share_media
)
{
Log
.
e
(
"xxxxxxxxxx"
,
"shareonCancel"
);
}
};
private
ShareChoiceDialog
.
ShareListener
myListener
=
new
ShareChoiceDialog
.
ShareListener
()
{
private
void
shareDeal
()
{
if
(
view
!=
null
&&
bitmap
==
null
)
{
bitmap
=
viewConversionBitmap
(
view
);
}
File
file
=
null
;
if
(
bitmap
!=
null
)
{
file
=
saveBitmapFile
(
bitmap
);
}
if
(
file
!=
null
)
{
image
=
new
UMImage
(
getPresenterContext
(),
file
);
//bitmap文件
image
.
compressStyle
=
UMImage
.
CompressStyle
.
SCALE
;
//大小压缩,默认为大小压缩,适合普通很大的图
image
.
compressStyle
=
UMImage
.
CompressStyle
.
QUALITY
;
//质量压缩,适合长图的分享
image
.
compressFormat
=
Bitmap
.
CompressFormat
.
PNG
;
}
}
@Override
public
void
copyShare
()
{
}
@Override
public
void
wxShare
()
{
if
(
image
==
null
)
{
shareDeal
();
}
if
(
image
!=
null
)
{
share
(
SHARE_MEDIA
.
WEIXIN
,
image
,
"hello"
);
}
}
@Override
public
void
wxCShare
()
{
share
(
SHARE_MEDIA
.
WEIXIN_CIRCLE
,
"hello"
);
}
@Override
public
void
qqShare
()
{
}
@Override
public
void
billShare
()
{
}
@Override
public
void
close
()
{
}
};
@Override
public
void
detachView
()
{
super
.
detachView
();
if
(
bitmap
!=
null
)
{
bitmap
.
recycle
();
}
}
}
plugin_share/src/main/java/com/rv/share/presenter/SharePresenter.java
0 → 100644
View file @
87fe641a
package
com
.
rv
.
share
.
presenter
;
import
android.app.Activity
;
import
android.content.ClipData
;
import
android.content.ClipboardManager
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.net.Uri
;
import
android.util.Log
;
import
android.widget.Toast
;
import
com.rv.home.rv.module.basic.presenter.CommonPresenter
;
import
com.rv.share.BillActivity
;
import
com.rv.share.view.ShareChoiceDialog
;
import
com.umeng.socialize.ShareAction
;
import
com.umeng.socialize.UMShareListener
;
import
com.umeng.socialize.bean.SHARE_MEDIA
;
import
java.io.File
;
public
class
SharePresenter
extends
CommonPresenter
{
private
ShareChoiceDialog
dialog
=
null
;
private
ShareAction
shareAction
=
null
;
public
void
showShareDialog
()
{
if
(
dialog
==
null
)
{
dialog
=
new
ShareChoiceDialog
.
Builder
(
getPresenterContext
())
.
setShareListener
(
myListener
)
.
setCopyVisiable
(
true
)
.
setWxVisiable
(
true
)
.
setWxCVisiable
(
true
)
.
setQQVisiable
(
true
)
.
setBillVisiable
(
true
)
.
create
();
}
dialog
.
show
();
}
/******
* 分享地址
* @param var1
* @param var2
*/
private
void
share
(
SHARE_MEDIA
var1
,
String
var2
)
{
if
(
shareAction
==
null
)
{
shareAction
=
new
ShareAction
((
Activity
)
getPresenterContext
()).
setCallback
(
shareListener
);
}
shareAction
.
setPlatform
(
var1
)
//传入平台
.
withText
(
var2
);
//分享内容
shareAction
.
share
();
}
/******
* 分享文件
* @param var1
* @param var2
*/
private
void
share
(
SHARE_MEDIA
var1
,
File
var2
)
{
if
(
shareAction
==
null
)
{
shareAction
=
new
ShareAction
((
Activity
)
getPresenterContext
()).
setCallback
(
shareListener
);
}
shareAction
.
setPlatform
(
var1
)
//传入平台
.
withFile
(
var2
);
//分享内容
shareAction
.
share
();
}
/*******
* 复制地址
* @param url
*/
private
void
copy
(
String
url
)
{
ClipboardManager
cm
=
(
ClipboardManager
)
getPresenterContext
().
getSystemService
(
Context
.
CLIPBOARD_SERVICE
);
ClipData
mClipData
=
ClipData
.
newRawUri
(
"Label"
,
Uri
.
parse
(
url
));
cm
.
setPrimaryClip
(
mClipData
);
Toast
.
makeText
(
getPresenterContext
(),
"复制成功"
,
Toast
.
LENGTH_SHORT
).
show
();
}
private
UMShareListener
shareListener
=
new
UMShareListener
()
{
@Override
public
void
onStart
(
SHARE_MEDIA
share_media
)
{
Log
.
e
(
"xxxxxxxxxx"
,
"shareOnstart"
);
}
@Override
public
void
onResult
(
SHARE_MEDIA
share_media
)
{
Log
.
e
(
"xxxxxxxxxx"
,
"shareonResult"
);
}
@Override
public
void
onError
(
SHARE_MEDIA
share_media
,
Throwable
throwable
)
{
Log
.
e
(
"xxxxxxxxxx"
,
"shareonError:"
+
throwable
.
getMessage
());
}
@Override
public
void
onCancel
(
SHARE_MEDIA
share_media
)
{
Log
.
e
(
"xxxxxxxxxx"
,
"shareonCancel"
);
}
};
private
ShareChoiceDialog
.
ShareListener
myListener
=
new
ShareChoiceDialog
.
ShareListener
()
{
@Override
public
void
copyShare
()
{
copy
(
"http://www.baidu.com"
);
}
@Override
public
void
wxShare
()
{
share
(
SHARE_MEDIA
.
WEIXIN
,
"hello"
);
}
@Override
public
void
wxCShare
()
{
share
(
SHARE_MEDIA
.
WEIXIN_CIRCLE
,
"hello"
);
}
@Override
public
void
qqShare
()
{
}
@Override
public
void
billShare
()
{
getPresenterContext
().
startActivity
(
new
Intent
(
getPresenterContext
(),
BillActivity
.
class
));
}
@Override
public
void
close
()
{
}
};
}
plugin_share/src/main/java/com/rv/share/utils/StorageUtils.java
0 → 100644
View file @
87fe641a
package
com
.
rv
.
share
.
utils
;
import
android.content.Context
;
import
android.os.Environment
;
public
class
StorageUtils
{
public
static
String
getCachePath
(
Context
context
)
{
String
cachePath
=
null
;
if
(
Environment
.
MEDIA_MOUNTED
.
equals
(
Environment
.
getExternalStorageState
())
||
!
Environment
.
isExternalStorageRemovable
())
{
cachePath
=
context
.
getExternalCacheDir
().
getPath
();
}
else
{
cachePath
=
context
.
getCacheDir
().
getPath
();
}
return
cachePath
;
}
}
plugin_share/src/main/res/drawable-xhdpi/common_icon_avatar_default.png
0 → 100644
View file @
87fe641a
3.8 KB
plugin_share/src/main/res/drawable-xhdpi/icon_bill_test.png
0 → 100644
View file @
87fe641a
433 KB
plugin_share/src/main/res/drawable/shape_rv_bg_bill.xml
0 → 100644
View file @
87fe641a
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<corners
android:radius=
"5dp"
/>
<solid
android:color=
"@color/white"
/>
</shape>
\ No newline at end of file
plugin_share/src/main/res/layout/activity_bill.xml
0 → 100644
View file @
87fe641a
<?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=
"#FE6E2F"
tools:context=
".BillActivity"
>
<TextView
android:id=
"@+id/tv_back_title"
android:layout_width=
"wrap_content"
android:layout_height=
"@dimen/size_40"
android:layout_alignParentLeft=
"true"
android:layout_alignParentTop=
"true"
android:layout_marginLeft=
"@dimen/dp_10"
android:drawableLeft=
"@drawable/rv_common_icon_back_white"
android:drawablePadding=
"@dimen/size_5"
android:gravity=
"center_vertical"
android:text=
"生成海报"
android:textColor=
"@color/white"
android:textSize=
"@dimen/text_18"
/>
<LinearLayout
android:id=
"@+id/ll_bottom"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_alignParentBottom=
"true"
android:layout_marginBottom=
"@dimen/dp_10"
android:gravity=
"center"
android:orientation=
"vertical"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"分享海报,可以让好友一起参加啦~"
android:textColor=
"@color/gray_f5f5f5"
android:textSize=
"@dimen/sp_12"
/>
<Button
android:id=
"@+id/btn_share"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_48"
android:layout_marginLeft=
"@dimen/dp_10"
android:layout_marginTop=
"@dimen/size_5"
android:layout_marginRight=
"@dimen/dp_10"
android:background=
"@drawable/shape_rv_bg_dark_yellow"
android:gravity=
"center"
android:text=
"立即分享"
android:textColor=
"@color/white"
android:textSize=
"@dimen/sp_16"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/ll_bill_content"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_above=
"@id/ll_bottom"
android:layout_centerInParent=
"true"
android:layout_marginLeft=
"@dimen/dp_10"
android:layout_marginRight=
"@dimen/dp_10"
android:layout_marginBottom=
"@dimen/size_20"
android:background=
"@drawable/shape_rv_bg_bill"
android:orientation=
"vertical"
>
<ImageView
android:scaleType=
"fitXY"
android:src=
"@drawable/icon_bill_test"
android:layout_width=
"match_parent"
android:layout_height=
"280dp"
/>
<LinearLayout
android:gravity=
"left|center_vertical"
android:id=
"@+id/ll_long_click"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_120"
android:orientation=
"horizontal"
>
<com.base.utils.ui.image.round.RoundImageView
android:id=
"@+id/rimg_avatar"
android:layout_width=
"@dimen/size_60"
android:layout_height=
"@dimen/size_60"
android:layout_alignParentLeft=
"true"
android:layout_centerVertical=
"true"
android:src=
"@drawable/common_icon_avatar_default"
/>
<LinearLayout
android:layout_marginLeft=
"@dimen/size_5"
android:layout_weight=
"1"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_alignRight=
"@id/rimg_avatar"
android:layout_centerVertical=
"true"
android:gravity=
"left"
android:orientation=
"vertical"
>
<TextView
android:id=
"@+id/tv_name"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"房车旅行家Rose"
android:textSize=
"@dimen/sp_16"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"邀请你一起参加"
android:textColor=
"@color/gray_50000000"
android:textSize=
"@dimen/sp_12"
/>
</LinearLayout>
<LinearLayout
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_alignParentRight=
"true"
android:layout_centerVertical=
"true"
android:layout_marginRight=
"@dimen/dp_10"
android:gravity=
"center"
android:orientation=
"vertical"
>
<ImageView
android:id=
"@+id/img_zxing"
android:layout_width=
"@dimen/size_80"
android:layout_height=
"@dimen/size_80"
android:scaleType=
"centerCrop"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"长按领50元现金"
android:textColor=
"@color/gray_50000000"
android:textSize=
"@dimen/dp_10"
/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
\ No newline at end of file
plugin_share/src/main/res/layout/activity_share.xml
0 → 100644
View file @
87fe641a
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
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:orientation=
"vertical"
tools:context=
".ShareActivity"
>
<RelativeLayout
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_200"
android:background=
"@drawable/shape_rv_bg_purple"
>
<ImageButton
android:id=
"@+id/imb_act"
android:layout_width=
"@dimen/size_80"
android:layout_height=
"@dimen/size_30"
android:layout_alignParentTop=
"true"
android:layout_alignParentRight=
"true"
android:layout_marginTop=
"@dimen/size_20"
/>
<LinearLayout
android:layout_width=
"@dimen/size_200"
android:layout_height=
"@dimen/dp_40"
android:layout_alignParentBottom=
"true"
android:layout_centerHorizontal=
"true"
android:orientation=
"horizontal"
>
<!--<ImageView-->
<!--android:layout_width=""-->
<!--android:layout_height="" />-->
</LinearLayout>
</RelativeLayout>
</LinearLayout>
\ No newline at end of file
plugin_share/src/main/res/layout/dialog_share_choice.xml
0 → 100644
View file @
87fe641a
<?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:background=
"#66ffffff"
android:orientation=
"vertical"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:gravity=
"left|center_vertical"
android:weightSum=
"5"
android:orientation=
"horizontal"
>
<TextView
android:id=
"@+id/tv_copy"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"13dp"
android:layout_marginBottom=
"13dp"
android:layout_weight=
"1"
android:gravity=
"center"
android:text=
"复制链接"
android:visibility=
"gone"
/>
<TextView
android:id=
"@+id/tv_weixin"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"13dp"
android:layout_marginBottom=
"13dp"
android:layout_weight=
"1"
android:gravity=
"center"
android:text=
"微信"
android:visibility=
"gone"
/>
<TextView
android:id=
"@+id/tv_weixin_circle"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"13dp"
android:layout_marginBottom=
"13dp"
android:layout_weight=
"1"
android:gravity=
"center"
android:text=
"朋友圈"
android:visibility=
"gone"
/>
<TextView
android:id=
"@+id/tv_qq"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"13dp"
android:layout_marginBottom=
"13dp"
android:layout_weight=
"1"
android:gravity=
"center"
android:text=
"QQ"
android:visibility=
"gone"
/>
<TextView
android:id=
"@+id/tv_bill"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"13dp"
android:layout_marginBottom=
"13dp"
android:layout_weight=
"1"
android:text=
"生成海报"
android:visibility=
"gone"
/>
</LinearLayout>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/size_10"
android:layout_marginRight=
"@dimen/dp_10"
>
<include
layout=
"@layout/common_line"
/>
</LinearLayout>
<TextView
android:id=
"@+id/tv_cancel"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_48"
android:gravity=
"center"
android:text=
"取消"
/>
</LinearLayout>
plugin_share/src/main/res/values/color.xml
0 → 100644
View file @
87fe641a
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color
name=
"white"
>
#ffffff
</color>
</resources>
plugin_share/src/main/res/values/strings.xml
0 → 100644
View file @
87fe641a
<resources>
<string
name=
"app_name"
>
plugin_share
</string>
</resources>
settings.gradle
View file @
87fe641a
//include ':WXPay'
//include ':WXPay'
include
':RvFrame'
,
':plugin_calendar'
,
':plugin_time'
include
':RvFrame'
,
':plugin_calendar'
,
':plugin_time'
,
':plugin_share'
include
':RvTravel'
include
':RvTravel'
include
':RvClient'
include
':RvClient'
include
':RvWrapper'
include
':RvWrapper'
...
...
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