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
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 @@
...
@@ -303,7 +303,9 @@
android:maxAspectRatio=
"2.4"
android:maxAspectRatio=
"2.4"
android:screenOrientation=
"portrait"
android:screenOrientation=
"portrait"
android:theme=
"@style/MyFrameTheme"
android:theme=
"@style/MyFrameTheme"
android:windowSoftInputMode=
"adjustResize|stateHidden"
/>
<!-- 查看预览图 -->
android:windowSoftInputMode=
"adjustResize|stateHidden"
/>
<!-- 查看预览图 -->
<activity
<activity
android:name=
"com.ruiwenliu.wrapper.browse.ActivityImageBrowseUrl"
android:name=
"com.ruiwenliu.wrapper.browse.ActivityImageBrowseUrl"
android:configChanges=
"orientation|keyboardHidden"
android:configChanges=
"orientation|keyboardHidden"
...
@@ -311,7 +313,18 @@
...
@@ -311,7 +313,18 @@
android:maxAspectRatio=
"2.4"
android:maxAspectRatio=
"2.4"
android:screenOrientation=
"portrait"
android:screenOrientation=
"portrait"
android:theme=
"@style/MyFrameTheme"
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
<meta-data
android:name=
"com.amap.api.v2.apikey"
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;
...
@@ -18,6 +18,7 @@ import android.widget.ImageView;
import
com.base.utils.base.BaseActivity
;
import
com.base.utils.base.BaseActivity
;
import
com.ruiwenliu.wrapper.R
;
import
com.ruiwenliu.wrapper.R
;
import
com.ruiwenliu.wrapper.util.ImageFileUtil
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
...
@@ -104,6 +105,7 @@ public class ActivityImageBrowseUrl extends BaseActivity {
...
@@ -104,6 +105,7 @@ public class ActivityImageBrowseUrl extends BaseActivity {
}
}
viewPager
.
setCurrentItem
(
select
);
viewPager
.
setCurrentItem
(
select
);
}
}
@Override
@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;
...
@@ -4,14 +4,21 @@ import android.os.Bundle;
import
android.support.annotation.IntegerRes
;
import
android.support.annotation.IntegerRes
;
import
android.support.annotation.NonNull
;
import
android.support.annotation.NonNull
;
import
android.support.annotation.Nullable
;
import
android.support.annotation.Nullable
;
import
android.text.TextUtils
;
import
android.view.LayoutInflater
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.view.ViewGroup
;
import
com.baidu.mapapi.model.LatLng
;
import
com.base.utils.base.BaseFragment
;
import
com.base.utils.base.BaseFragment
;
import
com.base.utils.ui.image.pinch.PinchImageView
;
import
com.base.utils.ui.image.pinch.PinchImageView
;
import
com.ruiwenliu.wrapper.R
;
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.ruiwenliu.wrapper.util.glide.GlideManager
;
import
com.rv.component.utils.LocationRecord
;
import
java.util.Objects
;
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 @@
...
@@ -45,6 +45,8 @@
<color
name=
"gray_47E270"
>
#47E270
</color>
<color
name=
"gray_47E270"
>
#47E270
</color>
<color
name=
"gray_B4B4B4"
>
#B4B4B4
</color>
<color
name=
"gray_B4B4B4"
>
#B4B4B4
</color>
<color
name=
"gray_50171413"
>
#50171413
</color>
<color
name=
"gray_50171413"
>
#50171413
</color>
<color
name=
"gray_ffcc0000"
>
#ffcc0000
</color>
<color
name=
"gray_ffff4444"
>
#ffff4444
</color>
<!--end-->
<!--end-->
</resources>
</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;
...
@@ -38,6 +38,7 @@ import com.ruiwenliu.wrapper.base.BaseBean;
import
com.ruiwenliu.wrapper.base.BaseStatusActivity
;
import
com.ruiwenliu.wrapper.base.BaseStatusActivity
;
import
com.ruiwenliu.wrapper.bean.BeanUserInfo
;
import
com.ruiwenliu.wrapper.bean.BeanUserInfo
;
import
com.ruiwenliu.wrapper.browse.ActivityImageBrowseUrl
;
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.CustomShareListener
;
import
com.ruiwenliu.wrapper.util.um.ShareManager
;
import
com.ruiwenliu.wrapper.util.um.ShareManager
;
import
com.ruiwenliu.wrapper.weight.TitleView
;
import
com.ruiwenliu.wrapper.weight.TitleView
;
...
@@ -317,10 +318,10 @@ public class DetailPatActivity extends BaseStatusActivity<DiscoveryPresenter> {
...
@@ -317,10 +318,10 @@ public class DetailPatActivity extends BaseStatusActivity<DiscoveryPresenter> {
new
TypeToken
<
List
<
String
>>()
{
new
TypeToken
<
List
<
String
>>()
{
}.
getType
());
}.
getType
());
Bundle
bundle
=
new
Bundle
();
Bundle
bundle
=
new
Bundle
();
bundle
.
putInt
(
ActivityImageBrowseUrl
.
KEY_BACKGROUND
,
R
.
color
.
colorPrimary
);
bundle
.
putInt
(
ActivityImageBrowseUrl
2
.
KEY_BACKGROUND
,
R
.
color
.
colorPrimary
);
bundle
.
putInt
(
ActivityImageBrowseUrl
.
KEY_SELECTPOSITION
,
selectPosition
);
bundle
.
putInt
(
ActivityImageBrowseUrl
2
.
KEY_SELECTPOSITION
,
selectPosition
);
bundle
.
putStringArrayList
(
ActivityImageBrowseUrl
.
KEY_IMAGE
,
(
ArrayList
<
String
>)
imagesList
);
bundle
.
putStringArrayList
(
ActivityImageBrowseUrl
2
.
KEY_IMAGE
,
(
ArrayList
<
String
>)
imagesList
);
IntentUtil
.
startActivity
(
mActivity
,
ActivityImageBrowseUrl
.
class
,
bundle
);
IntentUtil
.
startActivity
(
mActivity
,
ActivityImageBrowseUrl
2
.
class
,
bundle
);
}
}
}
}
...
...
module_discovery/src/main/java/com/xxfc/discovery/other/PostPatActivity.java
View file @
859d9a34
...
@@ -2,22 +2,20 @@ package com.xxfc.discovery.other;
...
@@ -2,22 +2,20 @@ package com.xxfc.discovery.other;
import
android.Manifest
;
import
android.Manifest
;
import
android.app.Activity
;
import
android.app.Activity
;
import
android.app.AlertDialog
;
import
android.content.DialogInterface
;
import
android.content.Intent
;
import
android.content.Intent
;
import
android.net.Uri
;
import
android.net.Uri
;
import
android.os.Build
;
import
android.os.Build
;
import
android.os.Bundle
;
import
android.os.Bundle
;
import
android.support.v7.widget.RecyclerView
;
import
android.support.v7.widget.StaggeredGridLayoutManager
;
import
android.support.v7.widget.helper.ItemTouchHelper
;
import
android.text.TextUtils
;
import
android.text.TextUtils
;
import
android.util.Log
;
import
android.util.Log
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.widget.AdapterView
;
import
android.widget.BaseAdapter
;
import
android.widget.EditText
;
import
android.widget.EditText
;
import
android.widget.ImageView
;
import
android.widget.ImageView
;
import
android.widget.LinearLayout
;
import
android.widget.LinearLayout
;
import
android.widget.RelativeLayout
;
import
android.widget.TextView
;
import
android.widget.TextView
;
import
com.alibaba.android.arouter.facade.annotation.Route
;
import
com.alibaba.android.arouter.facade.annotation.Route
;
...
@@ -27,30 +25,33 @@ import com.baidu.location.BDAbstractLocationListener;
...
@@ -27,30 +25,33 @@ import com.baidu.location.BDAbstractLocationListener;
import
com.baidu.location.BDLocation
;
import
com.baidu.location.BDLocation
;
import
com.baidu.location.Poi
;
import
com.baidu.location.Poi
;
import
com.baidu.mapapi.model.LatLng
;
import
com.baidu.mapapi.model.LatLng
;
import
com.base.utils.tools.android.IntentUtil
;
import
com.frame.base.bus.Observer
;
import
com.frame.base.bus.Observer
;
import
com.frame.base.bus.RxBus
;
import
com.frame.base.bus.RxBus
;
import
com.frame.base.url.Constance
;
import
com.frame.base.url.Constance
;
import
com.frame.rv.config.RvFrameConfig
;
import
com.frame.rv.config.RvFrameConfig
;
import
com.ruiwenliu.wrapper.base.BaseBean
;
import
com.ruiwenliu.wrapper.base.BaseBean
;
import
com.ruiwenliu.wrapper.base.BaseStatusActivity
;
import
com.ruiwenliu.wrapper.base.BaseStatusActivity
;
import
com.ruiwenliu.wrapper.browse.ActivityImageBrowseUrl
;
import
com.ruiwenliu.wrapper.browse.ActivityImageBrowseUrl2
;
import
com.ruiwenliu.wrapper.util.LocationManager
;
import
com.ruiwenliu.wrapper.util.LocationManager
;
import
com.ruiwenliu.wrapper.util.ViewHolder
;
import
com.ruiwenliu.wrapper.util.ViewHolder
;
import
com.ruiwenliu.wrapper.util.glide.GlideManager
;
import
com.ruiwenliu.wrapper.util.permission.RxPermission
;
import
com.ruiwenliu.wrapper.util.permission.RxPermission
;
import
com.ruiwenliu.wrapper.weight.TitleView
;
import
com.ruiwenliu.wrapper.weight.TitleView
;
import
com.rv.component.control.MyGridView
;
import
com.rv.component.dialog.ButtonPromptDialog
;
import
com.rv.component.control.SquareCenterImageView
;
import
com.rv.component.dialog.BottomPromptDialog
;
import
com.rv.component.utils.DateUtils
;
import
com.rv.component.utils.DateUtils
;
import
com.rv.component.utils.Inc
;
import
com.rv.component.utils.Inc
;
import
com.xxfc.discovery.R
;
import
com.xxfc.discovery.R
;
import
com.xxfc.discovery.R2
;
import
com.xxfc.discovery.R2
;
import
com.xxfc.discovery.adapter.DiscoveryPostPatAdapter
;
import
com.xxfc.discovery.api.DiscoveryApi
;
import
com.xxfc.discovery.api.DiscoveryApi
;
import
com.xxfc.discovery.bean.DiscoveryIMTokenBean
;
import
com.xxfc.discovery.bean.DiscoveryIMTokenBean
;
import
com.xxfc.discovery.bean.DiscoveryUploadImageBean
;
import
com.xxfc.discovery.bean.DiscoveryUploadImageBean
;
import
com.xxfc.discovery.bean.ImageSources
;
import
com.xxfc.discovery.bean.ImageSources
;
import
com.xxfc.discovery.event.PostPatEvent
;
import
com.xxfc.discovery.event.PostPatEvent
;
import
com.xxfc.discovery.presenter.DiscoveryPresenter
;
import
com.xxfc.discovery.presenter.DiscoveryPresenter
;
import
com.xxfc.discovery.widget.MyCallBack
;
import
com.xxfc.discovery.widget.OnRecyclerItemClickListener
;
import
com.xxfc.imcamera.activity.EasyCameraActivity
;
import
com.xxfc.imcamera.activity.EasyCameraActivity
;
import
com.xxfc.imcamera.event.MessageEventGpu
;
import
com.xxfc.imcamera.event.MessageEventGpu
;
import
com.xxfc.imcamera.photopicker.PhotoPickerActivity
;
import
com.xxfc.imcamera.photopicker.PhotoPickerActivity
;
...
@@ -60,7 +61,6 @@ import com.yuyife.okgo.OkGoUtil;
...
@@ -60,7 +61,6 @@ import com.yuyife.okgo.OkGoUtil;
import
java.io.File
;
import
java.io.File
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.LinkedHashMap
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -81,8 +81,6 @@ public class PostPatActivity extends BaseStatusActivity<DiscoveryPresenter> {
...
@@ -81,8 +81,6 @@ public class PostPatActivity extends BaseStatusActivity<DiscoveryPresenter> {
@BindView
(
R2
.
id
.
et_content
)
@BindView
(
R2
.
id
.
et_content
)
EditText
etContent
;
EditText
etContent
;
@BindView
(
R2
.
id
.
ll_item_select_icon
)
LinearLayout
llItemSelectIcon
;
@BindView
(
R2
.
id
.
tv_pat_address
)
@BindView
(
R2
.
id
.
tv_pat_address
)
TextView
tvPatAddress
;
TextView
tvPatAddress
;
@BindView
(
R2
.
id
.
ll_item_select_address
)
@BindView
(
R2
.
id
.
ll_item_select_address
)
...
@@ -90,16 +88,23 @@ public class PostPatActivity extends BaseStatusActivity<DiscoveryPresenter> {
...
@@ -90,16 +88,23 @@ public class PostPatActivity extends BaseStatusActivity<DiscoveryPresenter> {
@BindView
(
R2
.
id
.
tv_pat_ok
)
@BindView
(
R2
.
id
.
tv_pat_ok
)
TextView
tvPatOk
;
TextView
tvPatOk
;
@BindView
(
R2
.
id
.
rv_icon
)
@BindView
(
R2
.
id
.
rv_icon
)
MyGrid
View
rvIcon
;
Recycler
View
rvIcon
;
@BindView
(
R2
.
id
.
iv_item_delete
)
@BindView
(
R2
.
id
.
iv_item_delete
)
ImageView
ivItemDelete
;
ImageView
ivItemDelete
;
@BindView
(
R2
.
id
.
tv_delete
)
TextView
tvDelete
;
@BindView
(
R2
.
id
.
iv_trash_can
)
ImageView
ivTrashCan
;
@BindView
(
R2
.
id
.
ll_item_delete
)
LinearLayout
llItemDelete
;
private
static
final
int
REQUEST_CODE_CAPTURE_PHOTO
=
1
;
// 拍照
private
static
final
int
REQUEST_CODE_CAPTURE_PHOTO
=
1
;
// 拍照
private
static
final
int
REQUEST_CODE_PICK_PHOTO
=
2
;
// 图库
private
static
final
int
REQUEST_CODE_PICK_PHOTO
=
2
;
// 图库
private
GridView
Adapter
mAdapter
;
private
DiscoveryPostPat
Adapter
mAdapter
;
private
ArrayList
<
String
>
mPhotoList
;
private
ArrayList
<
String
>
mPhotoList
;
private
ArrayList
<
String
>
dragImages
;
//压缩长宽后图片
// 拍照和图库,获得图片的Uri
// 拍照和图库,获得图片的Uri
private
Uri
mNewPhotoUri
;
private
Uri
mNewPhotoUri
;
...
@@ -112,6 +117,7 @@ public class PostPatActivity extends BaseStatusActivity<DiscoveryPresenter> {
...
@@ -112,6 +117,7 @@ public class PostPatActivity extends BaseStatusActivity<DiscoveryPresenter> {
private
ArrayList
<
ImageSources
>
sourcesList
;
private
ArrayList
<
ImageSources
>
sourcesList
;
private
String
name
;
private
String
name
;
private
ItemTouchHelper
itemTouchHelper
;
@Override
@Override
protected
int
setLayout
()
{
protected
int
setLayout
()
{
...
@@ -124,20 +130,94 @@ public class PostPatActivity extends BaseStatusActivity<DiscoveryPresenter> {
...
@@ -124,20 +130,94 @@ public class PostPatActivity extends BaseStatusActivity<DiscoveryPresenter> {
initRxbus
();
initRxbus
();
permissionProcess
();
permissionProcess
();
mPhotoList
=
new
ArrayList
<>();
mPhotoList
=
new
ArrayList
<>();
mAdapter
=
new
GridViewAdapter
();
dragImages
=
new
ArrayList
<>();
//添加按钮图片资源
String
plusPath
=
getString
(
R
.
string
.
glide_plus_icon_string
)
+
getPackageName
()
+
"/drawable/"
+
R
.
drawable
.
icon_circle_image
;
mPhotoList
.
add
(
plusPath
);
mAdapter
=
new
DiscoveryPostPatAdapter
(
mActivity
,
mPhotoList
);
rvIcon
.
setLayoutManager
(
new
StaggeredGridLayoutManager
(
3
,
StaggeredGridLayoutManager
.
VERTICAL
));
rvIcon
.
setAdapter
(
mAdapter
);
rvIcon
.
setAdapter
(
mAdapter
);
refreshLayout
();
MyCallBack
myCallBack
=
new
MyCallBack
(
mActivity
,
mAdapter
,
mPhotoList
,
mPhotoList
);
itemTouchHelper
=
new
ItemTouchHelper
(
myCallBack
);
itemTouchHelper
.
attachToRecyclerView
(
rvIcon
);
//绑定RecyclerView
//事件监听
rvIcon
.
addOnItemTouchListener
(
new
OnRecyclerItemClickListener
(
rvIcon
)
{
rvIcon
.
setOnItemClickListener
(
new
AdapterView
.
OnItemClickListener
()
{
@Override
@Override
public
void
onItemClick
(
AdapterView
<?>
parent
,
View
view
,
int
position
,
long
id
)
{
public
void
onItemClick
(
RecyclerView
.
ViewHolder
vh
)
{
int
viewType
=
mAdapter
.
getItemViewType
(
position
);
if
(
mPhotoList
.
get
(
vh
.
getAdapterPosition
()).
contains
(
getString
(
R
.
string
.
glide_plus_icon_string
)))
{
//打开相册
if
(
viewType
==
1
)
{
showSelectPictureDialog
();
showSelectPictureDialog
();
}
else
{
}
else
{
showPictureActionDialog
(
position
);
Bundle
bundle
=
new
Bundle
();
bundle
.
putInt
(
ActivityImageBrowseUrl
.
KEY_BACKGROUND
,
R
.
color
.
colorPrimary
);
bundle
.
putInt
(
ActivityImageBrowseUrl
.
KEY_SELECTPOSITION
,
vh
.
getAdapterPosition
());
bundle
.
putStringArrayList
(
ActivityImageBrowseUrl
.
KEY_IMAGE
,
mPhotoList
);
IntentUtil
.
startActivity
(
mActivity
,
ActivityImageBrowseUrl
.
class
,
bundle
);
}
}
@Override
public
void
onItemLongClick
(
RecyclerView
.
ViewHolder
vh
)
{
//如果item不是最后一个,则执行拖拽
if
(
vh
.
getLayoutPosition
()
!=
mPhotoList
.
size
()
-
1
)
{
itemTouchHelper
.
startDrag
(
vh
);
}
}
});
myCallBack
.
setDragListener
(
new
MyCallBack
.
DragListener
()
{
@Override
public
void
deleteState
(
boolean
delete
)
{
if
(
delete
)
{
llItemDelete
.
setBackgroundResource
(
R
.
color
.
gray_ffcc0000
);
tvDelete
.
setText
(
"松手即可删除"
);
ivTrashCan
.
setImageResource
(
R
.
drawable
.
icon_discover_pat_trash_can2
);
}
else
{
tvDelete
.
setText
(
"拖动到此处删除"
);
llItemDelete
.
setBackgroundResource
(
R
.
color
.
gray_ffff4444
);
ivTrashCan
.
setImageResource
(
R
.
drawable
.
icon_discover_pat_trash_can
);
}
}
@Override
public
void
dragState
(
boolean
start
)
{
if
(
start
)
{
llItemDelete
.
setVisibility
(
View
.
VISIBLE
);
}
else
{
llItemDelete
.
setVisibility
(
View
.
GONE
);
}
}
}
}
@Override
public
void
clearView
()
{
refreshLayout
();
}
});
});
}
/**
* 刷新地理位置等布局
*/
private
void
refreshLayout
()
{
//判断提醒谁布局看是否需要下移
int
row
=
mAdapter
.
getItemCount
()
/
3
;
row
=
0
==
mAdapter
.
getItemCount
()
%
3
?
row
:
row
+
1
;
row
=
4
==
row
?
3
:
row
;
//row最多为三行
int
marginTop
=
(
getResources
().
getDimensionPixelSize
(
R
.
dimen
.
size_10
)
+
getResources
().
getDimensionPixelSize
(
R
.
dimen
.
size_100
))
*
row
+
getResources
().
getDimensionPixelSize
(
R
.
dimen
.
size_100
)
+
10
;
RelativeLayout
.
LayoutParams
params
=
(
RelativeLayout
.
LayoutParams
)
llItemSelectAddress
.
getLayoutParams
();
params
.
setMargins
(
getResources
().
getDimensionPixelSize
(
R
.
dimen
.
size_15
),
marginTop
,
0
,
0
);
llItemSelectAddress
.
setLayoutParams
(
params
);
}
}
@Override
@Override
...
@@ -158,6 +238,7 @@ public class PostPatActivity extends BaseStatusActivity<DiscoveryPresenter> {
...
@@ -158,6 +238,7 @@ public class PostPatActivity extends BaseStatusActivity<DiscoveryPresenter> {
}
}
}
}
private
void
setData
(
DiscoveryIMTokenBean
intokenBean
)
{
private
void
setData
(
DiscoveryIMTokenBean
intokenBean
)
{
if
(
intokenBean
==
null
)
{
if
(
intokenBean
==
null
)
{
return
;
return
;
...
@@ -204,12 +285,10 @@ public class PostPatActivity extends BaseStatusActivity<DiscoveryPresenter> {
...
@@ -204,12 +285,10 @@ public class PostPatActivity extends BaseStatusActivity<DiscoveryPresenter> {
}
}
@OnClick
({
R2
.
id
.
ll_item_select_
icon
,
R2
.
id
.
ll_item_select_
address
,
R2
.
id
.
tv_pat_ok
,
R2
.
id
.
iv_item_delete
})
@OnClick
({
R2
.
id
.
ll_item_select_address
,
R2
.
id
.
tv_pat_ok
,
R2
.
id
.
iv_item_delete
})
public
void
onViewClicked
(
View
view
)
{
public
void
onViewClicked
(
View
view
)
{
int
id
=
view
.
getId
();
int
id
=
view
.
getId
();
if
(
id
==
R
.
id
.
ll_item_select_icon
)
{
if
(
id
==
R
.
id
.
ll_item_select_address
)
{
}
else
if
(
id
==
R
.
id
.
ll_item_select_address
)
{
ARouter
.
getInstance
()
ARouter
.
getInstance
()
.
build
(
Constance
.
ACTIVITY_URL_MAPLOCATION
)
.
build
(
Constance
.
ACTIVITY_URL_MAPLOCATION
)
.
withDouble
(
"latLatitude"
,
latLatitude
)
.
withDouble
(
"latLatitude"
,
latLatitude
)
...
@@ -223,7 +302,7 @@ public class PostPatActivity extends BaseStatusActivity<DiscoveryPresenter> {
...
@@ -223,7 +302,7 @@ public class PostPatActivity extends BaseStatusActivity<DiscoveryPresenter> {
return
;
return
;
}
}
if
(
mPhotoList
.
size
()
<=
0
)
{
if
(
mPhotoList
.
size
()
<=
1
)
{
showToast
(
"请选择需要上传的图片!"
);
showToast
(
"请选择需要上传的图片!"
);
return
;
return
;
}
}
...
@@ -247,6 +326,9 @@ public class PostPatActivity extends BaseStatusActivity<DiscoveryPresenter> {
...
@@ -247,6 +326,9 @@ public class PostPatActivity extends BaseStatusActivity<DiscoveryPresenter> {
private
void
upIcon
()
{
private
void
upIcon
()
{
ArrayList
<
Imag
>
imags
=
new
ArrayList
<>();
ArrayList
<
Imag
>
imags
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
mPhotoList
.
size
();
i
++)
{
for
(
int
i
=
0
;
i
<
mPhotoList
.
size
();
i
++)
{
if
(
mPhotoList
.
get
(
i
).
contains
(
getString
(
R
.
string
.
glide_plus_icon_string
)))
{
//说明是添加图片按钮
continue
;
}
File
file
=
new
File
(
mPhotoList
.
get
(
i
));
File
file
=
new
File
(
mPhotoList
.
get
(
i
));
Imag
imag
=
new
Imag
();
Imag
imag
=
new
Imag
();
imag
.
setFileName
(
file
.
getName
());
imag
.
setFileName
(
file
.
getName
());
...
@@ -257,50 +339,29 @@ public class PostPatActivity extends BaseStatusActivity<DiscoveryPresenter> {
...
@@ -257,50 +339,29 @@ public class PostPatActivity extends BaseStatusActivity<DiscoveryPresenter> {
}
}
private
void
show
PictureActionDialog
(
int
position
)
{
private
void
show
SelectPictureDialog
(
)
{
new
B
ottom
PromptDialog
(
mActivity
)
{
new
B
utton
PromptDialog
(
mActivity
)
{
@Override
@Override
public
void
helper
(
ViewHolder
helper
)
{
public
void
helper
(
ViewHolder
helper
)
{
super
.
helper
(
helper
);
super
.
helper
(
helper
);
helper
.
setText
(
R
.
id
.
btn1
,
"删除"
);
helper
.
setText
(
R
.
id
.
btn2
,
"取消"
);
helper
.
setVisible
(
R
.
id
.
btn3
,
false
);
helper
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
helper
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
@Override
public
void
onClick
(
View
v
)
{
public
void
onClick
(
View
v
)
{
int
i
=
v
.
getId
();
int
i
=
v
.
getId
();
if
(
i
==
R
.
id
.
btn1
)
{
if
(
i
==
R
.
id
.
tv1
)
{
mPhotoList
.
remove
(
position
);
processPicker
(
1
);
mAdapter
.
notifyDataSetInvalidated
();
dismiss
();
dismiss
();
}
else
if
(
i
==
R
.
id
.
btn2
)
{
}
else
if
(
i
==
R
.
id
.
tv2
)
{
processPicker
(
2
);
dismiss
();
dismiss
();
}
}
}
}
},
R
.
id
.
btn1
,
R
.
id
.
btn
2
);
},
R
.
id
.
tv1
,
R
.
id
.
tv
2
);
}
}
}.
show
();
}.
show
();
}
}
private
void
showSelectPictureDialog
()
{
String
[]
items
=
new
String
[]{
"拍照"
,
"相片"
};
AlertDialog
.
Builder
builder
=
new
AlertDialog
.
Builder
(
this
).
setSingleChoiceItems
(
items
,
0
,
new
DialogInterface
.
OnClickListener
()
{
@Override
public
void
onClick
(
DialogInterface
dialog
,
int
which
)
{
if
(
which
==
0
)
{
processPicker
(
1
);
}
else
{
processPicker
(
2
);
}
dialog
.
dismiss
();
}
});
builder
.
show
();
}
// 拍照
// 拍照
private
void
takePhoto
()
{
private
void
takePhoto
()
{
Intent
intent
=
new
Intent
(
this
,
EasyCameraActivity
.
class
);
Intent
intent
=
new
Intent
(
this
,
EasyCameraActivity
.
class
);
...
@@ -329,7 +390,7 @@ public class PostPatActivity extends BaseStatusActivity<DiscoveryPresenter> {
...
@@ -329,7 +390,7 @@ public class PostPatActivity extends BaseStatusActivity<DiscoveryPresenter> {
// 是否显示拍照, 默认false
// 是否显示拍照, 默认false
intent
.
setShowCarema
(
false
);
intent
.
setShowCarema
(
false
);
// 最多选择照片数量,默认为9
// 最多选择照片数量,默认为9
intent
.
setMaxTotal
(
9
-
mPhotoList
.
size
());
intent
.
setMaxTotal
(
10
-
mPhotoList
.
size
());
// 已选中的照片地址, 用于回显选中状态
// 已选中的照片地址, 用于回显选中状态
intent
.
setSelectedPaths
(
imagePaths
);
intent
.
setSelectedPaths
(
imagePaths
);
// intent.setImageConfig(config);
// intent.setImageConfig(config);
...
@@ -414,8 +475,9 @@ public class PostPatActivity extends BaseStatusActivity<DiscoveryPresenter> {
...
@@ -414,8 +475,9 @@ public class PostPatActivity extends BaseStatusActivity<DiscoveryPresenter> {
@Override
@Override
public
void
onSuccess
(
File
file
)
{
public
void
onSuccess
(
File
file
)
{
Log
.
e
(
"zq"
,
"压缩成功,压缩后图片位置:"
+
file
.
getPath
()
+
"压缩后图片大小:"
+
file
.
length
()
/
1024
+
"KB"
);
Log
.
e
(
"zq"
,
"压缩成功,压缩后图片位置:"
+
file
.
getPath
()
+
"压缩后图片大小:"
+
file
.
length
()
/
1024
+
"KB"
);
mPhotoList
.
add
(
file
.
getPath
());
mPhotoList
.
add
(
mPhotoList
.
size
()
-
1
,
file
.
getPath
());
mAdapter
.
notifyDataSetInvalidated
();
mAdapter
.
notifyDataSetChanged
();
refreshLayout
();
}
}
@Override
@Override
...
@@ -444,15 +506,17 @@ public class PostPatActivity extends BaseStatusActivity<DiscoveryPresenter> {
...
@@ -444,15 +506,17 @@ public class PostPatActivity extends BaseStatusActivity<DiscoveryPresenter> {
@Override
@Override
public
void
onSuccess
(
File
file
)
{
public
void
onSuccess
(
File
file
)
{
Log
.
e
(
"zq"
,
"压缩成功,压缩后图片位置:"
+
file
.
getPath
()
+
"压缩后图片大小:"
+
file
.
length
()
/
1024
+
"KB"
);
Log
.
e
(
"zq"
,
"压缩成功,压缩后图片位置:"
+
file
.
getPath
()
+
"压缩后图片大小:"
+
file
.
length
()
/
1024
+
"KB"
);
mPhotoList
.
add
(
file
.
getPath
());
mPhotoList
.
add
(
mPhotoList
.
size
()
-
1
,
file
.
getPath
());
mAdapter
.
notifyDataSetInvalidated
();
mAdapter
.
notifyDataSetChanged
();
refreshLayout
();
}
}
@Override
@Override
public
void
onError
(
Throwable
e
)
{
public
void
onError
(
Throwable
e
)
{
Log
.
e
(
"zq"
,
"压缩失败,原图上传"
);
Log
.
e
(
"zq"
,
"压缩失败,原图上传"
);
mPhotoList
.
add
(
file
.
getPath
());
mPhotoList
.
add
(
mPhotoList
.
size
()
-
1
,
file
.
getPath
());
mAdapter
.
notifyDataSetInvalidated
();
mAdapter
.
notifyDataSetChanged
();
refreshLayout
();
}
}
}).
launch
();
// 启动压缩
}).
launch
();
// 启动压缩
}
}
...
@@ -506,62 +570,6 @@ public class PostPatActivity extends BaseStatusActivity<DiscoveryPresenter> {
...
@@ -506,62 +570,6 @@ public class PostPatActivity extends BaseStatusActivity<DiscoveryPresenter> {
}
}
private
class
GridViewAdapter
extends
BaseAdapter
{
@Override
public
int
getCount
()
{
if
(
mPhotoList
.
size
()
>=
9
)
{
return
9
;
}
return
mPhotoList
.
size
()
+
1
;
}
@Override
public
Object
getItem
(
int
position
)
{
return
position
;
}
@Override
public
long
getItemId
(
int
position
)
{
return
position
;
}
@Override
public
int
getViewTypeCount
()
{
return
2
;
}
@Override
public
int
getItemViewType
(
int
position
)
{
if
(
mPhotoList
.
size
()
==
0
)
{
// View Type 1代表添加更多的视图
return
1
;
}
else
if
(
mPhotoList
.
size
()
<
9
)
{
if
(
position
<
mPhotoList
.
size
())
{
// View Type 0代表普通的ImageView视图
return
0
;
}
else
{
return
1
;
}
}
else
{
return
0
;
}
}
@Override
public
View
getView
(
final
int
position
,
View
convertView
,
ViewGroup
parent
)
{
View
view
=
LayoutInflater
.
from
(
PostPatActivity
.
this
).
inflate
(
R
.
layout
.
rv_item_discovery_post_pat
,
parent
,
false
);
SquareCenterImageView
iv
=
(
SquareCenterImageView
)
view
.
findViewById
(
R
.
id
.
iv_icon
);
if
(
getItemViewType
(
position
)
==
0
)
{
// 普通的视图
GlideManager
.
getInstance
(
mActivity
).
loadImage
(
mPhotoList
.
get
(
position
),
iv
);
}
else
{
iv
.
setImageResource
(
R
.
drawable
.
icon_circle_image
);
}
return
view
;
}
}
/**
/**
* 定位权限处理
* 定位权限处理
*/
*/
...
...
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"?>
<?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"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
...
@@ -7,111 +7,120 @@
...
@@ -7,111 +7,120 @@
android:orientation=
"vertical"
android:orientation=
"vertical"
tools:context=
".other.PostPatActivity"
>
tools:context=
".other.PostPatActivity"
>
<LinearLayout
<EditText
android:id=
"@+id/et_content"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_height=
"@dimen/size_100"
android:layout_weight=
"1"
android:background=
"@null"
android:orientation=
"vertical"
>
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
<
TextView
android:id=
"@+id/
ll_item_select_icon
"
android:id=
"@+id/
tv_pat_address
"
android:layout_width=
"
match_parent
"
android:layout_width=
"
0dp
"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:paddingLeft=
"@dimen/size_15"
android:layout_marginLeft=
"@dimen/size_5"
android:paddingRight=
"@dimen/size_15"
>
android:layout_weight=
"1"
android:maxLines=
"1"
<com.rv.component.control.MyGridView
android:singleLine=
"true"
android:id=
"@+id/rv_icon"
android:text=
"您所在的位置"
android:layout_width=
"match_parent"
android:textColor=
"@color/colorGray"
android:layout_height=
"wrap_content"
android:textSize=
"@dimen/text_12"
/>
android:gravity=
"center"
android:listSelector=
"#00000000"
<ImageView
android:numColumns=
"4"
/>
android:id=
"@+id/iv_item_delete"
android:layout_width=
"wrap_content"
</LinearLayout>
<LinearLayout
android:id=
"@+id/ll_item_select_address"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/size_15"
android:padding=
"@dimen/size_8"
android:layout_marginRight=
"@dimen/size_15"
android:src=
"@drawable/common_icon_circle_delete"
android:gravity=
"center_vertical"
android:visibility=
"gone"
/>
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"
/>
</LinearLayout>
</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"
/>
<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
<LinearLayout
android:id=
"@+id/ll_item_delete"
android:layout_width=
"match_parent"
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
<TextView
android:id=
"@+id/tv_pat_ok"
android:id=
"@+id/tv_delete"
android:layout_width=
"match_parent"
android:layout_width=
"wrap_content"
android:layout_height=
"@dimen/size_45"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/size_15"
android:text=
"拖动到此处,进行删除"
android:layout_marginTop=
"@dimen/size_10"
android:textColor=
"@color/white"
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:textSize=
"@dimen/text_14"
/>
android:textSize=
"@dimen/text_14"
/>
</LinearLayout>
</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 @@
...
@@ -7,4 +7,5 @@
<string
name=
"discovery_question_and_answer_null"
>
暂无问答数据
</string>
<string
name=
"discovery_question_and_answer_null"
>
暂无问答数据
</string>
<string
name=
"done_with_count"
>
完成(%1$d/%2$d)
</string>
<string
name=
"done_with_count"
>
完成(%1$d/%2$d)
</string>
<string
name=
"preview"
>
预览
</string>
<string
name=
"preview"
>
预览
</string>
<string
name=
"glide_plus_icon_string"
>
android.resource://
</string>
</resources>
</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> {
...
@@ -183,7 +183,7 @@ public class LoginRvActivity extends BaseLoginActivity<CommonPresenter> {
}
}
umLogin
(
SHARE_MEDIA
.
QQ
);
umLogin
(
SHARE_MEDIA
.
QQ
);
}
else
if
(
view
.
getId
()
==
R
.
id
.
tv_pwd_login
)
{
}
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
)
{
}
else
if
(
view
.
getId
()
==
R
.
id
.
tv_registered
)
{
startActivity
(
RegisteredActivity
.
getIntent
(
mActivity
,
0
,
jumptype
));
startActivity
(
RegisteredActivity
.
getIntent
(
mActivity
,
0
,
jumptype
));
}
else
if
(
view
.
getId
()
==
R
.
id
.
iv_clear_phone
)
{
}
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;
...
@@ -4,6 +4,7 @@ import android.content.Context;
import
android.content.Intent
;
import
android.content.Intent
;
import
android.os.Bundle
;
import
android.os.Bundle
;
import
android.text.Editable
;
import
android.text.Editable
;
import
android.text.TextUtils
;
import
android.text.method.HideReturnsTransformationMethod
;
import
android.text.method.HideReturnsTransformationMethod
;
import
android.text.method.PasswordTransformationMethod
;
import
android.text.method.PasswordTransformationMethod
;
import
android.view.View
;
import
android.view.View
;
...
@@ -49,16 +50,27 @@ public class PwdLoginActivity extends BaseLoginActivity<CommonPresenter> {
...
@@ -49,16 +50,27 @@ public class PwdLoginActivity extends BaseLoginActivity<CommonPresenter> {
private
boolean
isShow
;
private
boolean
isShow
;
private
int
jumptype
;
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
)
return
new
Intent
(
context
,
PwdLoginActivity
.
class
)
.
putExtra
(
"jumptype"
,
jumptype
);
.
putExtra
(
"jumptype"
,
jumptype
)
.
putExtra
(
"phone"
,
phone
);
}
}
@Override
@Override
protected
void
initView
(
Bundle
savedInstanceState
,
TitleView
titleView
,
Intent
intent
)
{
protected
void
initView
(
Bundle
savedInstanceState
,
TitleView
titleView
,
Intent
intent
)
{
super
.
initView
(
savedInstanceState
,
titleView
,
intent
);
super
.
initView
(
savedInstanceState
,
titleView
,
intent
);
titleView
.
setTitle
(
mActivity
.
getString
(
R
.
string
.
rv_pwd_login
));
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
(
etPhone
);
editListener
(
etPwd
);
editListener
(
etPwd
);
}
}
...
@@ -77,37 +89,37 @@ public class PwdLoginActivity extends BaseLoginActivity<CommonPresenter> {
...
@@ -77,37 +89,37 @@ public class PwdLoginActivity extends BaseLoginActivity<CommonPresenter> {
public
void
onShowResult
(
int
requestType
,
BaseBean
result
)
{
public
void
onShowResult
(
int
requestType
,
BaseBean
result
)
{
if
(
requestType
==
0
)
{
if
(
requestType
==
0
)
{
processLoginData
((
RegisteredBean
)
result
);
processLoginData
((
RegisteredBean
)
result
);
}
else
if
(
requestType
==
10
)
{
}
else
if
(
requestType
==
10
)
{
setDataUser
((
BeanUserInfo
)
result
);
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
})
@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
)
{
public
void
onViewClicked
(
View
view
)
{
if
(
view
.
getId
()==
R
.
id
.
iv_clear_phone
)
{
if
(
view
.
getId
()
==
R
.
id
.
iv_clear_phone
)
{
clearEditData
(
etPhone
);
clearEditData
(
etPhone
);
}
else
if
(
view
.
getId
()==
R
.
id
.
iv_clear_pwd
)
{
}
else
if
(
view
.
getId
()
==
R
.
id
.
iv_clear_pwd
)
{
isShow
=
!
isShow
;
isShow
=
!
isShow
;
ivClearPwd
.
setSelected
(
isShow
);
ivClearPwd
.
setSelected
(
isShow
);
etPwd
.
setTransformationMethod
(
isShow
?
HideReturnsTransformationMethod
.
getInstance
()
:
PasswordTransformationMethod
.
getInstance
());
etPwd
.
setTransformationMethod
(
isShow
?
HideReturnsTransformationMethod
.
getInstance
()
:
PasswordTransformationMethod
.
getInstance
());
}
else
if
(
view
.
getId
()==
R
.
id
.
tv_login
)
{
}
else
if
(
view
.
getId
()
==
R
.
id
.
tv_login
)
{
if
(
getPwd
().
length
()
<
8
)
{
if
(
getPwd
().
length
()
<
8
)
{
showToast
(
mActivity
.
getString
(
R
.
string
.
rv_pwd_length
));
showToast
(
mActivity
.
getString
(
R
.
string
.
rv_pwd_length
));
return
;
return
;
}
}
pwdLogin
();
pwdLogin
();
}
else
if
(
view
.
getId
()==
R
.
id
.
tv_phone_login
)
{
}
else
if
(
view
.
getId
()
==
R
.
id
.
tv_phone_login
)
{
finish
();
finish
();
}
else
if
(
view
.
getId
()==
R
.
id
.
tv_registered
)
{
}
else
if
(
view
.
getId
()
==
R
.
id
.
tv_registered
)
{
startActivity
(
RegisteredActivity
.
getIntent
(
mActivity
,
0
,
jumptype
));
startActivity
(
RegisteredActivity
.
getIntent
(
mActivity
,
0
,
jumptype
));
finish
();
finish
();
}
else
if
(
view
.
getId
()==
R
.
id
.
iv_weixin
)
{
}
else
if
(
view
.
getId
()
==
R
.
id
.
iv_weixin
)
{
umLogin
(
SHARE_MEDIA
.
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
);
umLogin
(
SHARE_MEDIA
.
QQ
);
}
else
if
(
view
.
getId
()==
R
.
id
.
tv_forget_pwd
)
{
}
else
if
(
view
.
getId
()
==
R
.
id
.
tv_forget_pwd
)
{
startActivity
(
RegisteredActivity
.
getIntent
(
mActivity
,
1
,
0
));
startActivity
(
RegisteredActivity
.
getIntent
(
mActivity
,
1
,
0
));
finish
();
finish
();
}
}
...
@@ -208,9 +220,9 @@ public class PwdLoginActivity extends BaseLoginActivity<CommonPresenter> {
...
@@ -208,9 +220,9 @@ public class PwdLoginActivity extends BaseLoginActivity<CommonPresenter> {
@Override
@Override
public
void
afterTextChanged
(
Editable
s
)
{
public
void
afterTextChanged
(
Editable
s
)
{
super
.
afterTextChanged
(
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
);
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()) {
// switch (editText.getId()) {
...
...
plugin_im/src/main/java/com/rv/im/xmpp/XmppConnectionManager.java
View file @
859d9a34
...
@@ -268,7 +268,7 @@ public class XmppConnectionManager {
...
@@ -268,7 +268,7 @@ public class XmppConnectionManager {
}
}
public
synchronized
void
login
(
final
String
userId
,
final
String
password
)
{
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)) {
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