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
859d9a34
Commit
859d9a34
authored
Oct 10, 2019
by
jianglx
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master-video' of
http://113.105.137.151:22280/lify/rvapp
into dev_im
parents
dbde7cd2
8d604e43
Changes
24
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
1255 additions
and
236 deletions
+1255
-236
AndroidManifest.xml
RvClient/src/main/AndroidManifest.xml
+15
-2
ActivityImageBrowseUrl.java
.../com/ruiwenliu/wrapper/browse/ActivityImageBrowseUrl.java
+2
-0
ActivityImageBrowseUrl2.java
...com/ruiwenliu/wrapper/browse/ActivityImageBrowseUrl2.java
+195
-0
FragmentImageBrowse.java
...ava/com/ruiwenliu/wrapper/browse/FragmentImageBrowse.java
+7
-0
FragmentImageBrowse2.java
...va/com/ruiwenliu/wrapper/browse/FragmentImageBrowse2.java
+131
-0
BottomPromptTwoDialog.java
...a/com/ruiwenliu/wrapper/dialog/BottomPromptTwoDialog.java
+27
-0
ImageFileUtil.java
...c/main/java/com/ruiwenliu/wrapper/util/ImageFileUtil.java
+147
-0
dialog_prompt_two_bottom.xml
RvWrapper/src/main/res/layout/dialog_prompt_two_bottom.xml
+37
-0
colors.xml
RvWrapper/src/main/res/values/colors.xml
+2
-0
ButtonPromptDialog.java
...main/java/com/rv/component/dialog/ButtonPromptDialog.java
+25
-0
rv_dialog_button_prompt.xml
...nt_dialog/src/main/res/layout/rv_dialog_button_prompt.xml
+37
-0
DiscoveryPostPatAdapter.java
...a/com/xxfc/discovery/adapter/DiscoveryPostPatAdapter.java
+60
-0
DetailPatActivity.java
...main/java/com/xxfc/discovery/other/DetailPatActivity.java
+5
-4
PostPatActivity.java
...c/main/java/com/xxfc/discovery/other/PostPatActivity.java
+125
-117
MyCallBack.java
...y/src/main/java/com/xxfc/discovery/widget/MyCallBack.java
+226
-0
OnRecyclerItemClickListener.java
...om/xxfc/discovery/widget/OnRecyclerItemClickListener.java
+65
-0
icon_discover_pat_trash_can.png
...c/main/res/drawable-xhdpi/icon_discover_pat_trash_can.png
+0
-0
icon_discover_pat_trash_can2.png
.../main/res/drawable-xhdpi/icon_discover_pat_trash_can2.png
+0
-0
activity_post_pat.xml
module_discovery/src/main/res/layout/activity_post_pat.xml
+101
-92
rv_item_discovery_pat_post_icon.xml
...y/src/main/res/layout/rv_item_discovery_pat_post_icon.xml
+14
-0
strings.xml
module_discovery/src/main/res/values/strings.xml
+1
-0
LoginRvActivity.java
.../java/com/rv/home/rv/module/ui/login/LoginRvActivity.java
+1
-1
PwdLoginActivity.java
...java/com/rv/home/rv/module/ui/login/PwdLoginActivity.java
+31
-19
XmppConnectionManager.java
...m/src/main/java/com/rv/im/xmpp/XmppConnectionManager.java
+1
-1
No files found.
RvClient/src/main/AndroidManifest.xml
View file @
859d9a34
...
...
@@ -303,7 +303,9 @@
android:maxAspectRatio=
"2.4"
android:screenOrientation=
"portrait"
android:theme=
"@style/MyFrameTheme"
android:windowSoftInputMode=
"adjustResize|stateHidden"
/>
<!-- 查看预览图 -->
android:windowSoftInputMode=
"adjustResize|stateHidden"
/>
<!-- 查看预览图 -->
<activity
android:name=
"com.ruiwenliu.wrapper.browse.ActivityImageBrowseUrl"
android:configChanges=
"orientation|keyboardHidden"
...
...
@@ -311,7 +313,18 @@
android:maxAspectRatio=
"2.4"
android:screenOrientation=
"portrait"
android:theme=
"@style/MyFrameTheme"
android:windowSoftInputMode=
"adjustResize|stateHidden"
/>
<!-- ================================================================= -->
android:windowSoftInputMode=
"adjustResize|stateHidden"
/>
<activity
android:name=
"com.ruiwenliu.wrapper.browse.ActivityImageBrowseUrl2"
android:configChanges=
"orientation|keyboardHidden"
android:launchMode=
"singleInstance"
android:maxAspectRatio=
"2.4"
android:screenOrientation=
"portrait"
android:theme=
"@style/MyFrameTheme"
android:windowSoftInputMode=
"adjustResize|stateHidden"
/>
<!-- ================================================================= -->
<!-- 高德 -->
<meta-data
android:name=
"com.amap.api.v2.apikey"
...
...
RvWrapper/src/main/java/com/ruiwenliu/wrapper/browse/ActivityImageBrowseUrl.java
View file @
859d9a34
...
...
@@ -18,6 +18,7 @@ import android.widget.ImageView;
import
com.base.utils.base.BaseActivity
;
import
com.ruiwenliu.wrapper.R
;
import
com.ruiwenliu.wrapper.util.ImageFileUtil
;
import
java.util.ArrayList
;
import
java.util.List
;
...
...
@@ -104,6 +105,7 @@ public class ActivityImageBrowseUrl extends BaseActivity {
}
viewPager
.
setCurrentItem
(
select
);
}
@Override
...
...
RvWrapper/src/main/java/com/ruiwenliu/wrapper/browse/ActivityImageBrowseUrl2.java
0 → 100644
View file @
859d9a34
package
com
.
ruiwenliu
.
wrapper
.
browse
;
import
android.os.Bundle
;
import
android.support.annotation.NonNull
;
import
android.support.annotation.Nullable
;
import
android.support.v4.app.Fragment
;
import
android.support.v4.app.FragmentManager
;
import
android.support.v4.app.FragmentPagerAdapter
;
import
android.support.v4.content.ContextCompat
;
import
android.support.v4.view.ViewPager
;
import
android.support.v7.widget.LinearLayoutManager
;
import
android.support.v7.widget.RecyclerView
;
import
android.text.TextUtils
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.widget.FrameLayout
;
import
android.widget.ImageView
;
import
com.baidu.mapapi.model.LatLng
;
import
com.base.utils.base.BaseActivity
;
import
com.ruiwenliu.wrapper.R
;
import
com.ruiwenliu.wrapper.dialog.BottomPromptTwoDialog
;
import
com.ruiwenliu.wrapper.util.ImageFileUtil
;
import
com.ruiwenliu.wrapper.util.MapUtil
;
import
com.ruiwenliu.wrapper.util.ViewHolder
;
import
com.rv.component.utils.LocationRecord
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* 图片浏览
* 使用方法:
* 1.图片id集合,2.背景
* ArrayList<String> images = new ArrayList<>();
* images.add("url");
* Bundle bundle = new Bundle();
* bundle.putInt(ActivityImageBrowseInt.KEY_BACKGROUND,R.color.colorPrimary);
* bundle.putIntegerArrayList(ActivityImageBrowseUrl.KEY_IMAGE,images);
* IntentUtil.startActivity(baseContext,ActivityImageBrowseUrl.class,bundle);
*/
public
class
ActivityImageBrowseUrl2
extends
BaseActivity
{
final
public
static
String
KEY_IMAGE
=
"image"
;
final
public
static
String
KEY_BACKGROUND
=
"background"
;
final
public
static
String
KEY_SELECTPOSITION
=
"select"
;
FrameLayout
root
;
ViewPager
viewPager
;
RecyclerView
recyclerView
;
ArrayList
<
String
>
urlList
;
@Override
protected
void
onCreate
(
@Nullable
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
setContentView
(
R
.
layout
.
activity_image_browse
);
root
=
findViewById
(
R
.
id
.
activity_image_browse_root
);
viewPager
=
findViewById
(
R
.
id
.
activity_image_browse_view_pager
);
recyclerView
=
findViewById
(
R
.
id
.
activity_image_browse_recycler_view
);
onData
();
onView
();
}
private
List
<
FragmentImageBrowse2
>
fragmentImageBrowseList
;
private
AdapterRecyclerViewIndicator
adapterRecyclerViewIndicator
;
@Override
public
void
onData
()
{
fragmentImageBrowseList
=
new
ArrayList
<>();
int
select
=
getIntent
().
getIntExtra
(
ActivityImageBrowseInt
.
KEY_SELECTPOSITION
,
0
);
int
background
=
getIntent
().
getIntExtra
(
ActivityImageBrowseInt
.
KEY_BACKGROUND
,
0
);
if
(
background
!=
0
)
{
root
.
setBackgroundColor
(
ContextCompat
.
getColor
(
baseContext
,
background
));
}
urlList
=
getIntent
().
getStringArrayListExtra
(
ActivityImageBrowseUrl2
.
KEY_IMAGE
);
if
(
urlList
!=
null
)
{
for
(
String
url
:
urlList
)
{
fragmentImageBrowseList
.
add
(
FragmentImageBrowse2
.
getInstance
(
url
));
}
}
viewPager
.
setAdapter
(
new
AdapterViewPager
(
getSupportFragmentManager
()));
viewPager
.
addOnPageChangeListener
(
new
ViewPager
.
OnPageChangeListener
()
{
@Override
public
void
onPageScrolled
(
int
position
,
float
positionOffset
,
int
positionOffsetPixels
)
{
}
@Override
public
void
onPageSelected
(
int
position
)
{
index
=
position
;
adapterRecyclerViewIndicator
.
notifyDataSetChanged
();
}
@Override
public
void
onPageScrollStateChanged
(
int
state
)
{
}
});
if
(
fragmentImageBrowseList
.
size
()
>=
2
)
{
recyclerView
.
setVisibility
(
View
.
VISIBLE
);
LinearLayoutManager
linearLayoutManager
=
new
LinearLayoutManager
(
baseContext
);
linearLayoutManager
.
setOrientation
(
LinearLayoutManager
.
HORIZONTAL
);
recyclerView
.
setLayoutManager
(
linearLayoutManager
);
adapterRecyclerViewIndicator
=
new
AdapterRecyclerViewIndicator
();
recyclerView
.
setAdapter
(
adapterRecyclerViewIndicator
);
}
viewPager
.
setCurrentItem
(
select
);
viewPager
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
new
BottomPromptTwoDialog
(
ActivityImageBrowseUrl2
.
this
)
{
@Override
public
void
helper
(
ViewHolder
helper
)
{
super
.
helper
(
helper
);
}
}.
show
();
}
});
}
@Override
public
void
onView
()
{
}
class
AdapterViewPager
extends
FragmentPagerAdapter
{
public
AdapterViewPager
(
FragmentManager
fm
)
{
super
(
fm
);
}
@Override
public
Fragment
getItem
(
int
position
)
{
return
fragmentImageBrowseList
.
get
(
position
);
}
@Override
public
int
getCount
()
{
return
fragmentImageBrowseList
.
size
();
}
}
private
static
int
index
=
0
;
class
AdapterRecyclerViewIndicator
extends
RecyclerView
.
Adapter
<
AdapterRecyclerViewIndicator
.
ViewHolderIndicator
>
{
@Override
public
ViewHolderIndicator
onCreateViewHolder
(
@NonNull
ViewGroup
parent
,
int
viewType
)
{
View
view
=
LayoutInflater
.
from
(
baseContext
).
inflate
(
R
.
layout
.
item_image_browse_indicator_point
,
parent
,
false
);
return
new
ViewHolderIndicator
(
view
);
}
@Override
public
void
onBindViewHolder
(
@NonNull
ViewHolderIndicator
holder
,
int
position
)
{
if
(
index
==
position
)
{
holder
.
imageView
.
setImageResource
(
R
.
drawable
.
ic_indicator_point_select
);
}
else
{
holder
.
imageView
.
setImageResource
(
R
.
drawable
.
ic_indicator_point_normal
);
}
}
@Override
public
int
getItemCount
()
{
return
fragmentImageBrowseList
.
size
();
}
class
ViewHolderIndicator
extends
RecyclerView
.
ViewHolder
{
ImageView
imageView
;
public
ViewHolderIndicator
(
View
itemView
)
{
super
(
itemView
);
imageView
=
itemView
.
findViewById
(
R
.
id
.
item_image_browse_indicator_point_image_view
);
}
}
}
@Override
protected
void
onDestroy
()
{
super
.
onDestroy
();
index
=
0
;
}
}
RvWrapper/src/main/java/com/ruiwenliu/wrapper/browse/FragmentImageBrowse.java
View file @
859d9a34
...
...
@@ -4,14 +4,21 @@ import android.os.Bundle;
import
android.support.annotation.IntegerRes
;
import
android.support.annotation.NonNull
;
import
android.support.annotation.Nullable
;
import
android.text.TextUtils
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
com.baidu.mapapi.model.LatLng
;
import
com.base.utils.base.BaseFragment
;
import
com.base.utils.ui.image.pinch.PinchImageView
;
import
com.ruiwenliu.wrapper.R
;
import
com.ruiwenliu.wrapper.dialog.BottomPromptTwoDialog
;
import
com.ruiwenliu.wrapper.util.ImageFileUtil
;
import
com.ruiwenliu.wrapper.util.MapUtil
;
import
com.ruiwenliu.wrapper.util.ViewHolder
;
import
com.ruiwenliu.wrapper.util.glide.GlideManager
;
import
com.rv.component.utils.LocationRecord
;
import
java.util.Objects
;
...
...
RvWrapper/src/main/java/com/ruiwenliu/wrapper/browse/FragmentImageBrowse2.java
0 → 100644
View file @
859d9a34
package
com
.
ruiwenliu
.
wrapper
.
browse
;
import
android.os.Bundle
;
import
android.support.annotation.IntegerRes
;
import
android.support.annotation.NonNull
;
import
android.support.annotation.Nullable
;
import
android.text.TextUtils
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
com.base.utils.base.BaseFragment
;
import
com.base.utils.ui.image.pinch.PinchImageView
;
import
com.ruiwenliu.wrapper.R
;
import
com.ruiwenliu.wrapper.dialog.BottomPromptTwoDialog
;
import
com.ruiwenliu.wrapper.util.ImageFileUtil
;
import
com.ruiwenliu.wrapper.util.ViewHolder
;
import
com.ruiwenliu.wrapper.util.glide.GlideManager
;
import
java.util.Objects
;
/**
* 浏览图片的碎片
* FragmentImageBrowse
*/
public
class
FragmentImageBrowse2
extends
BaseFragment
{
final
private
static
String
KEY_IMAGE_INT
=
"image_int"
;
final
private
static
String
KEY_IMAGE_STRING
=
"image_string"
;
private
int
getImageInt
()
{
if
(
getArguments
()
==
null
)
return
0
;
return
getArguments
().
getInt
(
FragmentImageBrowse2
.
KEY_IMAGE_INT
);
}
private
String
getImageString
()
{
if
(
getArguments
()
==
null
)
return
""
;
return
getArguments
().
getString
(
FragmentImageBrowse2
.
KEY_IMAGE_STRING
);
}
public
static
FragmentImageBrowse2
getInstance
(
@IntegerRes
int
imageRes
)
{
FragmentImageBrowse2
instance
=
new
FragmentImageBrowse2
();
Bundle
bundle
=
new
Bundle
();
bundle
.
putInt
(
FragmentImageBrowse2
.
KEY_IMAGE_INT
,
imageRes
);
instance
.
setArguments
(
bundle
);
return
instance
;
}
public
static
FragmentImageBrowse2
getInstance
(
String
imageUrl
)
{
FragmentImageBrowse2
instance
=
new
FragmentImageBrowse2
();
Bundle
bundle
=
new
Bundle
();
bundle
.
putString
(
FragmentImageBrowse2
.
KEY_IMAGE_STRING
,
imageUrl
);
instance
.
setArguments
(
bundle
);
return
instance
;
}
PinchImageView
pinchImageView
;
@Nullable
@Override
public
View
onCreateView
(
@NonNull
LayoutInflater
inflater
,
@Nullable
ViewGroup
container
,
@Nullable
Bundle
savedInstanceState
)
{
View
view
=
inflater
.
inflate
(
R
.
layout
.
fragment_image_browse
,
container
,
false
);
pinchImageView
=
view
.
findViewById
(
R
.
id
.
image_browse_pinch_image_view
);
onData
();
return
view
;
}
@Override
public
void
onViewCreated
(
@NonNull
View
view
,
@Nullable
Bundle
savedInstanceState
)
{
super
.
onViewCreated
(
view
,
savedInstanceState
);
onView
();
}
@Override
public
void
onData
()
{
}
@Override
public
void
onView
()
{
if
(
getImageInt
()
!=
0
)
{
pinchImageView
.
setImageResource
(
getImageInt
());
}
else
{
GlideManager
.
getInstance
(
baseContext
).
loadImage
(
getImageString
(),
pinchImageView
);
}
pinchImageView
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
if
(
Objects
.
requireNonNull
(
getActivity
())
!=
null
)
Objects
.
requireNonNull
(
getActivity
()).
finish
();
}
});
pinchImageView
.
setOnLongClickListener
(
new
View
.
OnLongClickListener
()
{
@Override
public
boolean
onLongClick
(
View
v
)
{
new
BottomPromptTwoDialog
(
baseContext
)
{
@Override
public
void
helper
(
ViewHolder
helper
)
{
super
.
helper
(
helper
);
helper
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
int
i
=
v
.
getId
();
if
(
i
==
R
.
id
.
btn1
)
{
if
(
TextUtils
.
isEmpty
(
getImageString
()))
{
return
;
}
if
(
getImageString
().
toLowerCase
().
endsWith
(
"gif"
))
{
// 保存Gif
ImageFileUtil
.
downImageToGallery
(
baseContext
,
getImageString
());
}
else
{
// 保存图片
ImageFileUtil
.
downImageToGallery
(
baseContext
,
getImageString
());
}
dismiss
();
}
else
if
(
i
==
R
.
id
.
btn2
)
{
dismiss
();
}
}
},
R
.
id
.
btn1
,
R
.
id
.
btn2
);
}
}.
show
();
return
false
;
}
});
}
}
RvWrapper/src/main/java/com/ruiwenliu/wrapper/dialog/BottomPromptTwoDialog.java
0 → 100644
View file @
859d9a34
package
com
.
ruiwenliu
.
wrapper
.
dialog
;
import
android.content.Context
;
import
android.support.annotation.NonNull
;
import
android.view.Gravity
;
import
android.view.ViewGroup
;
import
com.ruiwenliu.wrapper.R
;
import
com.ruiwenliu.wrapper.dialog.BaseDialog
;
/**
* 提示
*/
public
class
BottomPromptTwoDialog
extends
BaseDialog
{
public
BottomPromptTwoDialog
(
@NonNull
Context
context
)
{
super
(
context
);
setDialogParams
(
ViewGroup
.
LayoutParams
.
MATCH_PARENT
,
ViewGroup
.
LayoutParams
.
WRAP_CONTENT
,
Gravity
.
BOTTOM
);
}
@Override
public
int
getViewLayout
()
{
return
R
.
layout
.
dialog_prompt_two_bottom
;
}
}
RvWrapper/src/main/java/com/ruiwenliu/wrapper/util/ImageFileUtil.java
0 → 100644
View file @
859d9a34
package
com
.
ruiwenliu
.
wrapper
.
util
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.graphics.Bitmap
;
import
android.graphics.drawable.Drawable
;
import
android.net.Uri
;
import
android.os.Environment
;
import
android.provider.MediaStore
;
import
android.support.annotation.NonNull
;
import
android.support.annotation.Nullable
;
import
android.text.TextUtils
;
import
android.widget.Toast
;
import
com.bumptech.glide.request.target.SimpleTarget
;
import
com.bumptech.glide.request.transition.Transition
;
import
com.ruiwenliu.wrapper.util.glide.GlideApp
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.FileOutputStream
;
import
java.io.InputStream
;
public
class
ImageFileUtil
{
/**
* 将图片(本地/网络)保存至相册
*/
public
static
void
downImageToGallery
(
final
Context
context
,
String
url
)
{
if
(
url
.
toLowerCase
().
endsWith
(
"gif"
))
{
File
file
=
new
File
(
url
);
if
(
file
.
exists
())
{
// 将Gif拷贝到指定路径
String
imagePath
=
Environment
.
getExternalStorageDirectory
().
getAbsolutePath
()
+
"/"
+
System
.
currentTimeMillis
()
+
".gif"
;
copyFile
(
url
,
imagePath
);
Toast
.
makeText
(
context
,
"Gif图保存成功"
,
Toast
.
LENGTH_SHORT
).
show
();
Intent
intentBroadcast
=
new
Intent
(
Intent
.
ACTION_MEDIA_SCANNER_SCAN_FILE
);
File
mGifFile
=
new
File
(
imagePath
);
intentBroadcast
.
setData
(
Uri
.
fromFile
(
mGifFile
));
context
.
sendBroadcast
(
intentBroadcast
);
}
else
{
Toast
.
makeText
(
context
,
"Gif图保存失败"
,
Toast
.
LENGTH_SHORT
).
show
();
}
}
else
{
GlideApp
.
with
(
context
)
.
asBitmap
()
.
load
(
url
)
.
dontAnimate
()
.
into
(
new
SimpleTarget
<
Bitmap
>()
{
@Override
public
void
onResourceReady
(
@NonNull
Bitmap
resource
,
@Nullable
Transition
<?
super
Bitmap
>
transition
)
{
saveImageToGallery
(
context
,
resource
);
Toast
.
makeText
(
context
,
"图片保存成功!"
,
Toast
.
LENGTH_SHORT
).
show
();
}
});
}
}
/**
* 保存bitmap到本地
*/
public
static
String
saveBitmap
(
Bitmap
bitmap
)
{
File
imageDir
=
new
File
(
Environment
.
getExternalStorageDirectory
(),
"image"
);
if
(!
imageDir
.
exists
())
{
imageDir
.
mkdir
();
}
String
fileName
=
System
.
currentTimeMillis
()
+
".jpg"
;
File
file
=
new
File
(
imageDir
,
fileName
);
try
{
FileOutputStream
fileOutputStream
=
new
FileOutputStream
(
file
);
bitmap
.
compress
(
Bitmap
.
CompressFormat
.
JPEG
,
100
,
fileOutputStream
);
fileOutputStream
.
flush
();
fileOutputStream
.
close
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
file
.
getAbsolutePath
();
}
public
static
File
createImageFileForEdit
()
{
File
imageDir
=
new
File
(
Environment
.
getExternalStorageDirectory
(),
"image"
);
if
(!
imageDir
.
exists
())
{
imageDir
.
mkdir
();
}
String
fileName
=
System
.
currentTimeMillis
()
+
".jpg"
;
return
new
File
(
imageDir
,
fileName
);
}
public
static
boolean
isExist
(
String
path
)
{
if
(
TextUtils
.
isEmpty
(
path
))
{
return
false
;
}
File
file
=
new
File
(
path
);
return
file
.
exists
();
}
private
static
void
copyFile
(
String
oldPath
,
String
newPath
)
{
try
{
int
bytesum
=
0
;
int
byteread
=
0
;
File
oldfile
=
new
File
(
oldPath
);
if
(
oldfile
.
exists
())
{
//文件存在时
InputStream
inStream
=
new
FileInputStream
(
oldPath
);
//读入原文件
FileOutputStream
fs
=
new
FileOutputStream
(
newPath
);
byte
[]
buffer
=
new
byte
[
1444
];
int
length
;
while
((
byteread
=
inStream
.
read
(
buffer
))
!=
-
1
)
{
bytesum
+=
byteread
;
//字节数 文件大小
System
.
out
.
println
(
bytesum
);
fs
.
write
(
buffer
,
0
,
byteread
);
}
inStream
.
close
();
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
private
static
void
saveImageToGallery
(
Context
content
,
Bitmap
bitmap
)
{
File
appDir
=
new
File
(
Environment
.
getExternalStorageDirectory
(),
"image"
);
if
(!
appDir
.
exists
())
{
appDir
.
mkdir
();
}
String
fileName
=
System
.
currentTimeMillis
()
+
".jpg"
;
File
file
=
new
File
(
appDir
,
fileName
);
try
{
FileOutputStream
fileOutputStream
=
new
FileOutputStream
(
file
);
bitmap
.
compress
(
Bitmap
.
CompressFormat
.
JPEG
,
100
,
fileOutputStream
);
fileOutputStream
.
flush
();
fileOutputStream
.
close
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
// 通知图库更新
content
.
sendBroadcast
(
new
Intent
(
Intent
.
ACTION_MEDIA_SCANNER_SCAN_FILE
,
Uri
.
parse
(
"file://"
+
file
.
getAbsolutePath
())));
}
}
RvWrapper/src/main/res/layout/dialog_prompt_two_bottom.xml
0 → 100644
View file @
859d9a34
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:gravity=
"bottom"
android:orientation=
"vertical"
tools:ignore=
"MissingDefaultResource"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:orientation=
"vertical"
>
<Button
android:id=
"@+id/btn1"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@color/colorWrite"
android:padding=
"13dp"
android:text=
"保存图片"
android:textColor=
"@color/text_Main"
android:textSize=
"16sp"
/>
<include
layout=
"@layout/common_line"
/>
<Button
android:id=
"@+id/btn2"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@color/colorWrite"
android:padding=
"13dp"
android:text=
"取消"
android:textColor=
"@color/text_Main"
android:textSize=
"16sp"
/>
</LinearLayout>
</LinearLayout>
\ No newline at end of file
RvWrapper/src/main/res/values/colors.xml
View file @
859d9a34
...
...
@@ -45,6 +45,8 @@
<color
name=
"gray_47E270"
>
#47E270
</color>
<color
name=
"gray_B4B4B4"
>
#B4B4B4
</color>
<color
name=
"gray_50171413"
>
#50171413
</color>
<color
name=
"gray_ffcc0000"
>
#ffcc0000
</color>
<color
name=
"gray_ffff4444"
>
#ffff4444
</color>
<!--end-->
</resources>
component_dialog/src/main/java/com/rv/component/dialog/ButtonPromptDialog.java
0 → 100644
View file @
859d9a34
package
com
.
rv
.
component
.
dialog
;
import
android.content.Context
;
import
android.support.annotation.NonNull
;
import
android.view.Gravity
;
import
android.view.ViewGroup
;
import
com.ruiwenliu.wrapper.dialog.BaseDialog
;
/**
* 提示
*/
public
class
ButtonPromptDialog
extends
BaseDialog
{
public
ButtonPromptDialog
(
@NonNull
Context
context
)
{
super
(
context
);
setDialogParams
(
ViewGroup
.
LayoutParams
.
MATCH_PARENT
,
ViewGroup
.
LayoutParams
.
WRAP_CONTENT
,
Gravity
.
CENTER
);
}
@Override
public
int
getViewLayout
()
{
return
R
.
layout
.
rv_dialog_button_prompt
;
}
}
component_dialog/src/main/res/layout/rv_dialog_button_prompt.xml
0 → 100644
View file @
859d9a34
<?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:orientation=
"vertical"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/size_40"
android:layout_marginRight=
"@dimen/size_40"
android:background=
"@drawable/shape_rv_bg_while_circle"
android:orientation=
"vertical"
>
<TextView
android:id=
"@+id/tv1"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_60"
android:layout_marginLeft=
"@dimen/size_20"
android:gravity=
"center_vertical"
android:text=
"拍摄"
android:textColor=
"@color/colorMain"
android:textSize=
"16sp"
/>
<include
layout=
"@layout/common_line"
/>
<TextView
android:id=
"@+id/tv2"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_60"
android:layout_marginLeft=
"@dimen/size_20"
android:gravity=
"center_vertical"
android:text=
"从相册选择"
android:textColor=
"@color/colorMain"
android:textSize=
"16sp"
/>
</LinearLayout>
</LinearLayout>
\ No newline at end of file
module_discovery/src/main/java/com/xxfc/discovery/adapter/DiscoveryPostPatAdapter.java
0 → 100644
View file @
859d9a34
package
com
.
xxfc
.
discovery
.
adapter
;
import
android.content.Context
;
import
android.support.v7.widget.RecyclerView
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.widget.ImageView
;
import
com.ruiwenliu.wrapper.util.glide.GlideManager
;
import
com.xxfc.discovery.R
;
import
java.util.List
;
/**
* 拍拍
*/
public
class
DiscoveryPostPatAdapter
extends
RecyclerView
.
Adapter
<
DiscoveryPostPatAdapter
.
MyViewHolder
>
{
private
List
<
String
>
mDatas
;
private
final
LayoutInflater
mLayoutInflater
;
private
final
Context
mContext
;
public
DiscoveryPostPatAdapter
(
Context
context
,
List
<
String
>
datas
)
{
this
.
mDatas
=
datas
;
this
.
mContext
=
context
;
this
.
mLayoutInflater
=
LayoutInflater
.
from
(
context
);
}
@Override
public
MyViewHolder
onCreateViewHolder
(
ViewGroup
parent
,
int
viewType
)
{
return
new
MyViewHolder
(
mLayoutInflater
.
inflate
(
R
.
layout
.
rv_item_discovery_pat_post_icon
,
parent
,
false
));
}
@Override
public
void
onBindViewHolder
(
final
MyViewHolder
holder
,
final
int
position
)
{
if
(
position
>=
9
)
{
//图片已选完时,隐藏添加按钮
holder
.
imageView
.
setVisibility
(
View
.
GONE
);
}
else
{
holder
.
imageView
.
setVisibility
(
View
.
VISIBLE
);
}
GlideManager
.
getInstance
(
mContext
).
loadImage
(
mDatas
.
get
(
position
),
holder
.
imageView
);
}
@Override
public
int
getItemCount
()
{
return
mDatas
==
null
?
0
:
mDatas
.
size
();
}
public
static
class
MyViewHolder
extends
RecyclerView
.
ViewHolder
{
ImageView
imageView
;
public
MyViewHolder
(
View
itemView
)
{
super
(
itemView
);
imageView
=
itemView
.
findViewById
(
R
.
id
.
iv_icon
);
}
}
}
\ No newline at end of file
module_discovery/src/main/java/com/xxfc/discovery/other/DetailPatActivity.java
View file @
859d9a34
...
...
@@ -38,6 +38,7 @@ import com.ruiwenliu.wrapper.base.BaseBean;
import
com.ruiwenliu.wrapper.base.BaseStatusActivity
;
import
com.ruiwenliu.wrapper.bean.BeanUserInfo
;
import
com.ruiwenliu.wrapper.browse.ActivityImageBrowseUrl
;
import
com.ruiwenliu.wrapper.browse.ActivityImageBrowseUrl2
;
import
com.ruiwenliu.wrapper.util.um.CustomShareListener
;
import
com.ruiwenliu.wrapper.util.um.ShareManager
;
import
com.ruiwenliu.wrapper.weight.TitleView
;
...
...
@@ -317,10 +318,10 @@ public class DetailPatActivity extends BaseStatusActivity<DiscoveryPresenter> {
new
TypeToken
<
List
<
String
>>()
{
}.
getType
());
Bundle
bundle
=
new
Bundle
();
bundle
.
putInt
(
ActivityImageBrowseUrl
.
KEY_BACKGROUND
,
R
.
color
.
colorPrimary
);
bundle
.
putInt
(
ActivityImageBrowseUrl
.
KEY_SELECTPOSITION
,
selectPosition
);
bundle
.
putStringArrayList
(
ActivityImageBrowseUrl
.
KEY_IMAGE
,
(
ArrayList
<
String
>)
imagesList
);
IntentUtil
.
startActivity
(
mActivity
,
ActivityImageBrowseUrl
.
class
,
bundle
);
bundle
.
putInt
(
ActivityImageBrowseUrl
2
.
KEY_BACKGROUND
,
R
.
color
.
colorPrimary
);
bundle
.
putInt
(
ActivityImageBrowseUrl
2
.
KEY_SELECTPOSITION
,
selectPosition
);
bundle
.
putStringArrayList
(
ActivityImageBrowseUrl
2
.
KEY_IMAGE
,
(
ArrayList
<
String
>)
imagesList
);
IntentUtil
.
startActivity
(
mActivity
,
ActivityImageBrowseUrl
2
.
class
,
bundle
);
}
}
...
...
module_discovery/src/main/java/com/xxfc/discovery/other/PostPatActivity.java
View file @
859d9a34
This diff is collapsed.
Click to expand it.
module_discovery/src/main/java/com/xxfc/discovery/widget/MyCallBack.java
0 → 100644
View file @
859d9a34
package
com
.
xxfc
.
discovery
.
widget
;
import
android.app.Activity
;
import
android.content.Context
;
import
android.graphics.Canvas
;
import
android.support.v7.widget.RecyclerView
;
import
android.support.v7.widget.StaggeredGridLayoutManager
;
import
android.support.v7.widget.helper.ItemTouchHelper
;
import
android.view.View
;
import
com.xxfc.discovery.R
;
import
com.xxfc.discovery.adapter.DiscoveryPostPatAdapter
;
import
java.util.Collections
;
import
java.util.List
;
/**
* 自定义拖拽
*/
public
class
MyCallBack
extends
ItemTouchHelper
.
Callback
{
private
int
dragFlags
;
private
int
swipeFlags
;
private
DiscoveryPostPatAdapter
adapter
;
private
List
<
String
>
images
;
//图片经过压缩处理
// private List<String> originImages;//图片没有经过处理,这里传这个进来是为了使原图片的顺序与拖拽顺序保持一致
private
boolean
up
;
//手指抬起标记位
private
Activity
activity
;
public
MyCallBack
(
Activity
activity
,
DiscoveryPostPatAdapter
adapter
,
List
<
String
>
images
,
List
<
String
>
originImages
)
{
this
.
activity
=
activity
;
this
.
adapter
=
adapter
;
this
.
images
=
images
;
// this.originImages = originImages;
}
/**
* 设置item是否处理拖拽事件和滑动事件,以及拖拽和滑动操作的方向
*
* @param recyclerView
* @param viewHolder
* @return
*/
@Override
public
int
getMovementFlags
(
RecyclerView
recyclerView
,
RecyclerView
.
ViewHolder
viewHolder
)
{
//判断 recyclerView的布局管理器数据
if
(
recyclerView
.
getLayoutManager
()
instanceof
StaggeredGridLayoutManager
)
{
//设置能拖拽的方向
dragFlags
=
ItemTouchHelper
.
UP
|
ItemTouchHelper
.
DOWN
|
ItemTouchHelper
.
LEFT
|
ItemTouchHelper
.
RIGHT
;
swipeFlags
=
0
;
//0则不响应事件
}
return
makeMovementFlags
(
dragFlags
,
swipeFlags
);
}
/**
* 当用户从item原来的位置拖动可以拖动的item到新位置的过程中调用
*
* @param recyclerView
* @param viewHolder
* @param target
* @return
*/
@Override
public
boolean
onMove
(
RecyclerView
recyclerView
,
RecyclerView
.
ViewHolder
viewHolder
,
RecyclerView
.
ViewHolder
target
)
{
int
fromPosition
=
viewHolder
.
getAdapterPosition
();
//得到item原来的position
int
toPosition
=
target
.
getAdapterPosition
();
//得到目标position
if
(
toPosition
==
images
.
size
()
-
1
||
images
.
size
()
-
1
==
fromPosition
)
{
return
true
;
}
if
(
fromPosition
<
toPosition
)
{
for
(
int
i
=
fromPosition
;
i
<
toPosition
;
i
++)
{
Collections
.
swap
(
images
,
i
,
i
+
1
);
// Collections.swap(originImages, i, i + 1);
}
}
else
{
for
(
int
i
=
fromPosition
;
i
>
toPosition
;
i
--)
{
Collections
.
swap
(
images
,
i
,
i
-
1
);
// Collections.swap(originImages, i, i - 1);
}
}
adapter
.
notifyItemMoved
(
fromPosition
,
toPosition
);
return
true
;
}
/**
* 设置是否支持长按拖拽
*
* @return
*/
@Override
public
boolean
isLongPressDragEnabled
()
{
return
false
;
}
/**
* @param viewHolder
* @param direction
*/
@Override
public
void
onSwiped
(
RecyclerView
.
ViewHolder
viewHolder
,
int
direction
)
{
}
/**
* 当用户与item的交互结束并且item也完成了动画时调用
*
* @param recyclerView
* @param viewHolder
*/
@Override
public
void
clearView
(
RecyclerView
recyclerView
,
RecyclerView
.
ViewHolder
viewHolder
)
{
super
.
clearView
(
recyclerView
,
viewHolder
);
adapter
.
notifyDataSetChanged
();
initData
();
if
(
dragListener
!=
null
)
{
dragListener
.
clearView
();
}
}
/**
* 重置
*/
private
void
initData
()
{
if
(
dragListener
!=
null
)
{
dragListener
.
deleteState
(
false
);
dragListener
.
dragState
(
false
);
}
up
=
false
;
}
/**
* 自定义拖动与滑动交互
*
* @param c
* @param recyclerView
* @param viewHolder
* @param dX
* @param dY
* @param actionState
* @param isCurrentlyActive
*/
@Override
public
void
onChildDraw
(
Canvas
c
,
RecyclerView
recyclerView
,
RecyclerView
.
ViewHolder
viewHolder
,
float
dX
,
float
dY
,
int
actionState
,
boolean
isCurrentlyActive
)
{
if
(
null
==
dragListener
)
{
return
;
}
if
(
dY
>=
(
recyclerView
.
getHeight
()
-
viewHolder
.
itemView
.
getBottom
()
//item底部距离recyclerView顶部高度
-
activity
.
getResources
().
getDimensionPixelSize
(
R
.
dimen
.
size_60
)))
{
//拖到删除处
dragListener
.
deleteState
(
true
);
if
(
up
)
{
//在删除处放手,则删除item
viewHolder
.
itemView
.
setVisibility
(
View
.
INVISIBLE
);
//先设置不可见,如果不设置的话,会看到viewHolder返回到原位置时才消失,因为remove会在viewHolder动画执行完成后才将viewHolder删除
// originImages.remove(viewHolder.getAdapterPosition());
images
.
remove
(
viewHolder
.
getAdapterPosition
());
adapter
.
notifyItemRemoved
(
viewHolder
.
getAdapterPosition
());
initData
();
return
;
}
}
else
{
//没有到删除处
if
(
View
.
INVISIBLE
==
viewHolder
.
itemView
.
getVisibility
())
{
//如果viewHolder不可见,则表示用户放手,重置删除区域状态
dragListener
.
dragState
(
false
);
}
dragListener
.
deleteState
(
false
);
}
super
.
onChildDraw
(
c
,
recyclerView
,
viewHolder
,
dX
,
dY
,
actionState
,
isCurrentlyActive
);
}
/**
* 当长按选中item的时候(拖拽开始的时候)调用
*
* @param viewHolder
* @param actionState
*/
@Override
public
void
onSelectedChanged
(
RecyclerView
.
ViewHolder
viewHolder
,
int
actionState
)
{
if
(
ItemTouchHelper
.
ACTION_STATE_DRAG
==
actionState
&&
dragListener
!=
null
)
{
dragListener
.
dragState
(
true
);
}
super
.
onSelectedChanged
(
viewHolder
,
actionState
);
}
/**
* 设置手指离开后ViewHolder的动画时间,在用户手指离开后调用
*
* @param recyclerView
* @param animationType
* @param animateDx
* @param animateDy
* @return
*/
@Override
public
long
getAnimationDuration
(
RecyclerView
recyclerView
,
int
animationType
,
float
animateDx
,
float
animateDy
)
{
//手指放开
up
=
true
;
return
super
.
getAnimationDuration
(
recyclerView
,
animationType
,
animateDx
,
animateDy
);
}
public
interface
DragListener
{
/**
* 用户是否将 item拖动到删除处,根据状态改变颜色
*
* @param delete
*/
void
deleteState
(
boolean
delete
);
/**
* 是否于拖拽状态
*
* @param start
*/
void
dragState
(
boolean
start
);
/**
* 当用户与item的交互结束并且item也完成了动画时调用
*/
void
clearView
();
}
private
DragListener
dragListener
;
public
void
setDragListener
(
DragListener
dragListener
)
{
this
.
dragListener
=
dragListener
;
}
}
module_discovery/src/main/java/com/xxfc/discovery/widget/OnRecyclerItemClickListener.java
0 → 100644
View file @
859d9a34
package
com
.
xxfc
.
discovery
.
widget
;
import
android.support.v4.view.GestureDetectorCompat
;
import
android.support.v7.widget.RecyclerView
;
import
android.view.GestureDetector
;
import
android.view.MotionEvent
;
import
android.view.View
;
/**
* 手势监听
* Created by kuyue on 2017/6/20 上午10:45.
* 邮箱:595327086@qq.com
*/
public
abstract
class
OnRecyclerItemClickListener
implements
RecyclerView
.
OnItemTouchListener
{
private
GestureDetectorCompat
mGestureDetector
;
private
RecyclerView
recyclerView
;
public
OnRecyclerItemClickListener
(
RecyclerView
recyclerView
)
{
this
.
recyclerView
=
recyclerView
;
mGestureDetector
=
new
GestureDetectorCompat
(
recyclerView
.
getContext
(),
new
ItemTouchHelperGestureListener
());
}
@Override
public
boolean
onInterceptTouchEvent
(
RecyclerView
rv
,
MotionEvent
e
)
{
mGestureDetector
.
onTouchEvent
(
e
);
return
false
;
}
@Override
public
void
onTouchEvent
(
RecyclerView
rv
,
MotionEvent
e
)
{
mGestureDetector
.
onTouchEvent
(
e
);
}
@Override
public
void
onRequestDisallowInterceptTouchEvent
(
boolean
disallowIntercept
)
{
}
private
class
ItemTouchHelperGestureListener
extends
GestureDetector
.
SimpleOnGestureListener
{
@Override
public
boolean
onSingleTapUp
(
MotionEvent
e
)
{
View
child
=
recyclerView
.
findChildViewUnder
(
e
.
getX
(),
e
.
getY
());
if
(
child
!=
null
)
{
RecyclerView
.
ViewHolder
vh
=
recyclerView
.
getChildViewHolder
(
child
);
onItemClick
(
vh
);
}
return
true
;
}
@Override
public
void
onLongPress
(
MotionEvent
e
)
{
View
child
=
recyclerView
.
findChildViewUnder
(
e
.
getX
(),
e
.
getY
());
if
(
child
!=
null
)
{
RecyclerView
.
ViewHolder
vh
=
recyclerView
.
getChildViewHolder
(
child
);
onItemLongClick
(
vh
);
}
}
}
public
abstract
void
onItemClick
(
RecyclerView
.
ViewHolder
vh
);
public
abstract
void
onItemLongClick
(
RecyclerView
.
ViewHolder
vh
);
}
module_discovery/src/main/res/drawable-xhdpi/icon_discover_pat_trash_can.png
0 → 100644
View file @
859d9a34
941 Bytes
module_discovery/src/main/res/drawable-xhdpi/icon_discover_pat_trash_can2.png
0 → 100644
View file @
859d9a34
1.26 KB
module_discovery/src/main/res/layout/activity_post_pat.xml
View file @
859d9a34
<?xml version="1.0" encoding="utf-8"?>
<
Linear
Layout
xmlns:android=
"http://schemas.android.com/apk/res/android"
<
Relative
Layout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
...
...
@@ -7,111 +7,120 @@
android:orientation=
"vertical"
tools:context=
".other.PostPatActivity"
>
<LinearLayout
<EditText
android:id=
"@+id/et_content"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_weight=
"1"
android:orientation=
"vertical"
>
android:layout_height=
"@dimen/size_100"
android:background=
"@null"
android:ellipsize=
"middle"
android:gravity=
"top"
android:hint=
"说点什么吧..."
android:inputType=
"textMultiLine"
android:padding=
"@dimen/size_15"
android:textColor=
"@color/colorMain"
android:textColorHint=
"@color/colorGray"
android:textSize=
"@dimen/text_14"
/>
<android.support.v7.widget.RecyclerView
android:id=
"@+id/rv_icon"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_marginTop=
"@dimen/size_100"
android:clipToPadding=
"false"
android:paddingLeft=
"@dimen/size_10"
android:paddingRight=
"@dimen/size_10"
/>
<EditText
android:id=
"@+id/et_content"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@null"
android:ellipsize=
"middle"
android:gravity=
"top"
android:hint=
"说点什么吧..."
android:inputType=
"textMultiLine"
android:maxHeight=
"@dimen/size_200"
android:minHeight=
"@dimen/size_150"
android:padding=
"@dimen/size_15"
android:textColor=
"@color/colorMain"
android:textColorHint=
"@color/colorGray"
android:textSize=
"@dimen/text_14"
/>
<LinearLayout
android:id=
"@+id/ll_item_select_address"
android:layout_width=
"378dp"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/size_15"
android:layout_marginTop=
"@dimen/size_100"
android:layout_marginRight=
"@dimen/size_15"
android:gravity=
"center_vertical"
android:paddingTop=
"@dimen/size_10"
android:paddingBottom=
"@dimen/size_10"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:paddingTop=
"@dimen/size_8"
android:paddingBottom=
"@dimen/size_8"
android:src=
"@drawable/campsite_icon_citylocation_hint"
/>
<
LinearLayout
android:id=
"@+id/
ll_item_select_icon
"
android:layout_width=
"
match_parent
"
<
TextView
android:id=
"@+id/
tv_pat_address
"
android:layout_width=
"
0dp
"
android:layout_height=
"wrap_content"
android:paddingLeft=
"@dimen/size_15"
android:paddingRight=
"@dimen/size_15"
>
<com.rv.component.control.MyGridView
android:id=
"@+id/rv_icon"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:gravity=
"center"
android:listSelector=
"#00000000"
android:numColumns=
"4"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/ll_item_select_address"
android:layout_width=
"match_parent"
android:layout_marginLeft=
"@dimen/size_5"
android:layout_weight=
"1"
android:maxLines=
"1"
android:singleLine=
"true"
android:text=
"您所在的位置"
android:textColor=
"@color/colorGray"
android:textSize=
"@dimen/text_12"
/>
<ImageView
android:id=
"@+id/iv_item_delete"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/size_15"
android:layout_marginRight=
"@dimen/size_15"
android:gravity=
"center_vertical"
android:paddingTop=
"@dimen/size_10"
android:paddingBottom=
"@dimen/size_10"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:paddingTop=
"@dimen/size_8"
android:paddingBottom=
"@dimen/size_8"
android:src=
"@drawable/campsite_icon_citylocation_hint"
/>
<TextView
android:id=
"@+id/tv_pat_address"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/size_5"
android:layout_weight=
"1"
android:maxLines=
"1"
android:singleLine=
"true"
android:text=
"您所在的位置"
android:textColor=
"@color/colorGray"
android:textSize=
"@dimen/text_12"
/>
<ImageView
android:id=
"@+id/iv_item_delete"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:padding=
"@dimen/size_8"
android:visibility=
"gone"
android:src=
"@drawable/common_icon_circle_delete"
/>
</LinearLayout>
<View
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_1"
android:layout_marginLeft=
"@dimen/size_15"
android:layout_marginRight=
"@dimen/size_15"
android:background=
"@color/colorLine"
/>
android:padding=
"@dimen/size_8"
android:src=
"@drawable/common_icon_circle_delete"
android:visibility=
"gone"
/>
</LinearLayout>
<View
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_1"
android:layout_marginLeft=
"@dimen/size_15"
android:layout_marginRight=
"@dimen/size_15"
android:background=
"@color/colorLine"
/>
<include
layout=
"@layout/common_line"
/>
<TextView
android:id=
"@+id/tv_pat_ok"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_45"
android:layout_alignParentBottom=
"true"
android:layout_marginLeft=
"@dimen/size_15"
android:layout_marginTop=
"@dimen/size_10"
android:layout_marginRight=
"@dimen/size_15"
android:layout_marginBottom=
"@dimen/size_10"
android:background=
"@drawable/shape_rv_bg_shallow_dark_yellow_circle"
android:gravity=
"center"
android:text=
"立即发布"
android:textColor=
"@color/colorWrite"
android:textSize=
"@dimen/text_14"
/>
<LinearLayout
android:id=
"@+id/ll_item_delete"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
>
android:layout_height=
"@dimen/size_60"
android:layout_alignParentBottom=
"true"
android:background=
"@android:color/holo_red_light"
android:gravity=
"center"
android:orientation=
"vertical"
android:visibility=
"gone"
>
<ImageView
android:id=
"@+id/iv_trash_can"
android:layout_width=
"@dimen/size_20"
android:layout_height=
"@dimen/size_20"
android:src=
"@drawable/icon_discover_pat_trash_can"
/>
<TextView
android:id=
"@+id/tv_pat_ok"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_45"
android:layout_marginLeft=
"@dimen/size_15"
android:layout_marginTop=
"@dimen/size_10"
android:layout_marginRight=
"@dimen/size_15"
android:layout_marginBottom=
"@dimen/size_15"
android:background=
"@drawable/shape_rv_bg_shallow_dark_yellow_circle"
android:gravity=
"center"
android:text=
"立即发布"
android:textColor=
"@color/colorWrite"
android:id=
"@+id/tv_delete"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"拖动到此处,进行删除"
android:textColor=
"@color/white"
android:textSize=
"@dimen/text_14"
/>
</LinearLayout>
</LinearLayout>
\ No newline at end of file
</RelativeLayout>
\ No newline at end of file
module_discovery/src/main/res/layout/rv_item_discovery_pat_post_icon.xml
0 → 100644
View file @
859d9a34
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
>
<com.rv.component.control.SquareCenterImageView
android:id=
"@+id/iv_icon"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginBottom=
"4dp"
android:layout_marginRight=
"4dp"
android:scaleType=
"centerCrop"
android:src=
"@drawable/icon_pic_error"
/>
</LinearLayout>
module_discovery/src/main/res/values/strings.xml
View file @
859d9a34
...
...
@@ -7,4 +7,5 @@
<string
name=
"discovery_question_and_answer_null"
>
暂无问答数据
</string>
<string
name=
"done_with_count"
>
完成(%1$d/%2$d)
</string>
<string
name=
"preview"
>
预览
</string>
<string
name=
"glide_plus_icon_string"
>
android.resource://
</string>
</resources>
module_home/src/main/java/com/rv/home/rv/module/ui/login/LoginRvActivity.java
View file @
859d9a34
...
...
@@ -183,7 +183,7 @@ public class LoginRvActivity extends BaseLoginActivity<CommonPresenter> {
}
umLogin
(
SHARE_MEDIA
.
QQ
);
}
else
if
(
view
.
getId
()
==
R
.
id
.
tv_pwd_login
)
{
startActivity
(
PwdLoginActivity
.
getIntent
(
mActivity
,
jumptype
));
startActivity
(
PwdLoginActivity
.
getIntent
(
mActivity
,
jumptype
,
getPhone
()
));
}
else
if
(
view
.
getId
()
==
R
.
id
.
tv_registered
)
{
startActivity
(
RegisteredActivity
.
getIntent
(
mActivity
,
0
,
jumptype
));
}
else
if
(
view
.
getId
()
==
R
.
id
.
iv_clear_phone
)
{
...
...
module_home/src/main/java/com/rv/home/rv/module/ui/login/PwdLoginActivity.java
View file @
859d9a34
...
...
@@ -4,6 +4,7 @@ import android.content.Context;
import
android.content.Intent
;
import
android.os.Bundle
;
import
android.text.Editable
;
import
android.text.TextUtils
;
import
android.text.method.HideReturnsTransformationMethod
;
import
android.text.method.PasswordTransformationMethod
;
import
android.view.View
;
...
...
@@ -49,16 +50,27 @@ public class PwdLoginActivity extends BaseLoginActivity<CommonPresenter> {
private
boolean
isShow
;
private
int
jumptype
;
public
static
Intent
getIntent
(
Context
context
,
int
jumptyp
e
)
{
public
static
Intent
getIntent
(
Context
context
,
int
jumptype
,
String
phon
e
)
{
return
new
Intent
(
context
,
PwdLoginActivity
.
class
)
.
putExtra
(
"jumptype"
,
jumptype
);
.
putExtra
(
"jumptype"
,
jumptype
)
.
putExtra
(
"phone"
,
phone
);
}
@Override
protected
void
initView
(
Bundle
savedInstanceState
,
TitleView
titleView
,
Intent
intent
)
{
super
.
initView
(
savedInstanceState
,
titleView
,
intent
);
titleView
.
setTitle
(
mActivity
.
getString
(
R
.
string
.
rv_pwd_login
));
jumptype
=
intent
.
getIntExtra
(
"jumptype"
,
0
);
jumptype
=
intent
.
getIntExtra
(
"jumptype"
,
0
);
String
phone
=
intent
.
getStringExtra
(
"phone"
);
if
(!
TextUtils
.
isEmpty
(
phone
))
{
etPhone
.
setText
(
phone
);
if
(
phone
.
length
()
<=
11
)
{
etPhone
.
setSelection
(
phone
.
length
());
}
else
{
etPhone
.
setSelection
(
11
);
}
}
editListener
(
etPhone
);
editListener
(
etPwd
);
}
...
...
@@ -77,37 +89,37 @@ public class PwdLoginActivity extends BaseLoginActivity<CommonPresenter> {
public
void
onShowResult
(
int
requestType
,
BaseBean
result
)
{
if
(
requestType
==
0
)
{
processLoginData
((
RegisteredBean
)
result
);
}
else
if
(
requestType
==
10
)
{
setDataUser
((
BeanUserInfo
)
result
);
}
else
if
(
requestType
==
10
)
{
setDataUser
((
BeanUserInfo
)
result
);
}
}
@OnClick
({
R2
.
id
.
iv_clear_phone
,
R2
.
id
.
iv_clear_pwd
,
R2
.
id
.
tv_login
,
R2
.
id
.
tv_phone_login
,
R2
.
id
.
tv_registered
,
R2
.
id
.
iv_weixin
,
R2
.
id
.
iv_qq
,
R2
.
id
.
tv_forget_pwd
})
public
void
onViewClicked
(
View
view
)
{
if
(
view
.
getId
()==
R
.
id
.
iv_clear_phone
)
{
if
(
view
.
getId
()
==
R
.
id
.
iv_clear_phone
)
{
clearEditData
(
etPhone
);
}
else
if
(
view
.
getId
()==
R
.
id
.
iv_clear_pwd
)
{
isShow
=
!
isShow
;
}
else
if
(
view
.
getId
()
==
R
.
id
.
iv_clear_pwd
)
{
isShow
=
!
isShow
;
ivClearPwd
.
setSelected
(
isShow
);
etPwd
.
setTransformationMethod
(
isShow
?
HideReturnsTransformationMethod
.
getInstance
()
:
PasswordTransformationMethod
.
getInstance
());
}
else
if
(
view
.
getId
()==
R
.
id
.
tv_login
)
{
etPwd
.
setTransformationMethod
(
isShow
?
HideReturnsTransformationMethod
.
getInstance
()
:
PasswordTransformationMethod
.
getInstance
());
}
else
if
(
view
.
getId
()
==
R
.
id
.
tv_login
)
{
if
(
getPwd
().
length
()
<
8
)
{
showToast
(
mActivity
.
getString
(
R
.
string
.
rv_pwd_length
));
return
;
}
pwdLogin
();
}
else
if
(
view
.
getId
()==
R
.
id
.
tv_phone_login
)
{
}
else
if
(
view
.
getId
()
==
R
.
id
.
tv_phone_login
)
{
finish
();
}
else
if
(
view
.
getId
()==
R
.
id
.
tv_registered
)
{
startActivity
(
RegisteredActivity
.
getIntent
(
mActivity
,
0
,
jumptype
));
}
else
if
(
view
.
getId
()
==
R
.
id
.
tv_registered
)
{
startActivity
(
RegisteredActivity
.
getIntent
(
mActivity
,
0
,
jumptype
));
finish
();
}
else
if
(
view
.
getId
()==
R
.
id
.
iv_weixin
)
{
}
else
if
(
view
.
getId
()
==
R
.
id
.
iv_weixin
)
{
umLogin
(
SHARE_MEDIA
.
WEIXIN
);
}
else
if
(
view
.
getId
()==
R
.
id
.
iv_qq
)
{
}
else
if
(
view
.
getId
()
==
R
.
id
.
iv_qq
)
{
umLogin
(
SHARE_MEDIA
.
QQ
);
}
else
if
(
view
.
getId
()==
R
.
id
.
tv_forget_pwd
)
{
startActivity
(
RegisteredActivity
.
getIntent
(
mActivity
,
1
,
0
));
}
else
if
(
view
.
getId
()
==
R
.
id
.
tv_forget_pwd
)
{
startActivity
(
RegisteredActivity
.
getIntent
(
mActivity
,
1
,
0
));
finish
();
}
...
...
@@ -208,9 +220,9 @@ public class PwdLoginActivity extends BaseLoginActivity<CommonPresenter> {
@Override
public
void
afterTextChanged
(
Editable
s
)
{
super
.
afterTextChanged
(
s
);
if
(
editText
.
getId
()==
R
.
id
.
et_phone
)
{
if
(
editText
.
getId
()
==
R
.
id
.
et_phone
)
{
ivClearPhone
.
setVisibility
(
getPhone
().
length
()
>
0
?
View
.
VISIBLE
:
View
.
GONE
);
}
else
if
(
editText
.
getId
()==
R
.
id
.
et_phone_code
)
{
}
else
if
(
editText
.
getId
()
==
R
.
id
.
et_phone_code
)
{
}
// switch (editText.getId()) {
...
...
plugin_im/src/main/java/com/rv/im/xmpp/XmppConnectionManager.java
View file @
859d9a34
...
...
@@ -268,7 +268,7 @@ public class XmppConnectionManager {
}
public
synchronized
void
login
(
final
String
userId
,
final
String
password
)
{
if
(
mConnection
.
isAuthenticated
())
{
if
(
mConnection
!=
null
&&
mConnection
.
isAuthenticated
())
{
/*// 如果已经登陆
if (StringUtils.parseName(mConnection.getUser()).equals(userId)) {
// 如果登陆的用户和需要在登陆的是同一个用户,赋予可能改变的用户名和密码,返回
...
...
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