Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
蒋洪波
/
XDYAndroidLive
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
蒋洪波
2017-04-08 20:36:43 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
2c06699de934d86b6311d0afed2df1e8468bc126
2c06699d
1 parent
03688b3f
fix bugs.1.optimize drawline method. 2.inputView request focus after choose emoji
隐藏空白字符变更
内嵌
并排对比
正在显示
11 个修改的文件
包含
156 行增加
和
23 行删除
CommonLib/src/main/java/com/xdy/commonlibrary/core/AppBaseFragment.java
config.gradle
home/src/main/java/com/xdy/home/entity/Message.java
home/src/main/java/com/xdy/home/ui/ChatFragment.java
home/src/main/java/com/xdy/home/ui/DocFragment.java
home/src/main/java/com/xdy/home/ui/LiveFragment.java
home/src/main/java/com/xdy/home/vp/LivePresenter.java
home/src/main/java/com/xdy/home/widget/CanvasView.java
home/src/main/java/com/xdy/home/widget/chat/KJChatKeyboard.java
home/src/main/java/com/xdy/home/widget/emoji/DisplayRules.java
home/src/main/java/com/xdy/home/widget/emoji/EmoticonsEditText.java
CommonLib/src/main/java/com/xdy/commonlibrary/core/AppBaseFragment.java
查看文件 @
2c06699
...
...
@@ -32,6 +32,7 @@ public abstract class AppBaseFragment<P extends BasePresenter> extends BaseFragm
protected
BaseActivity
mActivity
;
protected
CodeMultipleStatusView
mRootView
;
protected
final
String
TAG
=
this
.
getClass
().
getSimpleName
();
@Inject
protected
P
mPresenter
;
...
...
@@ -64,12 +65,22 @@ public abstract class AppBaseFragment<P extends BasePresenter> extends BaseFragm
mActivity
=
(
BaseActivity
)
getActivity
();
initComponent
();
super
.
onActivityCreated
(
savedInstanceState
);
if
(!
isLazyInflate
())
{
inflate
(
savedInstanceState
);
}
}
@Override
public
void
onLazyInitView
(
@Nullable
Bundle
savedInstanceState
)
{
super
.
onLazyInitView
(
savedInstanceState
);
//加载我们自己的布局
if
(
isLazyInflate
())
{
//加载我们自己的布局
inflate
(
savedInstanceState
);
}
}
private
void
inflate
(
@Nullable
Bundle
savedInstanceState
)
{
View
view
=
View
.
inflate
(
getContext
(),
this
.
getLayoutId
(),
null
);
mRootView
.
setContentView
(
view
);
mRootView
.
showContent
();
...
...
@@ -190,4 +201,11 @@ public abstract class AppBaseFragment<P extends BasePresenter> extends BaseFragm
*/
protected
void
retry
()
{
}
/**
* 是否需要懒加载
*/
protected
boolean
isLazyInflate
()
{
return
true
;
}
}
...
...
config.gradle
查看文件 @
2c06699
...
...
@@ -8,7 +8,7 @@ ext {
compileSdkVersion
:
25
,
buildToolsVersion
:
"25.0.0"
,
minSdkVersion
:
15
,
targetSdkVersion
:
2
3
,
targetSdkVersion
:
2
2
,
versionCode
:
1
,
versionName
:
"1.0.0"
,
androidSupportSdkVersion:
"25.0.0"
,
...
...
home/src/main/java/com/xdy/home/entity/Message.java
查看文件 @
2c06699
...
...
@@ -46,7 +46,6 @@ public class Message {
private
Boolean
isSend
;
private
Boolean
sendSucces
;
private
String
time
;
public
boolean
TimeIsShow
;
public
Message
(
int
type
,
int
state
,
String
userRole
,
String
fromUserName
,
String
fromUserAvatar
,
String
toUserName
,
String
toUserAvatar
,
...
...
home/src/main/java/com/xdy/home/ui/ChatFragment.java
查看文件 @
2c06699
...
...
@@ -8,7 +8,6 @@ import android.text.Spannable;
import
android.text.TextUtils
;
import
android.view.MotionEvent
;
import
android.view.View
;
import
android.widget.LinearLayout
;
import
android.widget.ListView
;
import
com.xdy.commonlibrary.core.AppBaseFragment
;
...
...
@@ -16,7 +15,6 @@ import com.xdy.commonlibrary.core.di.AppComponent;
import
com.xdy.home.R
;
import
com.xdy.home.adapter.ChatAdapter
;
import
com.xdy.home.entity.ChatMsgEntity
;
import
com.xdy.home.entity.Emojicon
;
import
com.xdy.home.entity.Faceicon
;
import
com.xdy.home.entity.Message
;
import
com.xdy.home.util.AccountUtils
;
...
...
@@ -26,7 +24,6 @@ import com.xdy.home.widget.chat.KJChatKeyboard;
import
com.xdy.home.widget.chat.OnOperationListener
;
import
com.xdy.home.widget.emoji.DisplayRules
;
import
com.xdy.util.LogUtil
;
import
com.xdy.util.ResUtil
;
import
org.kymjs.kjframe.ui.ViewInject
;
import
org.kymjs.kjframe.utils.KJLoger
;
...
...
@@ -34,7 +31,6 @@ import org.kymjs.kjframe.utils.StringUtils;
import
java.io.File
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
/**
...
...
@@ -54,6 +50,11 @@ public class ChatFragment extends AppBaseFragment<LivePresenter> implements Live
mPresenter
=
presenter
;
}
@Override
protected
boolean
isLazyInflate
()
{
return
false
;
}
private
KJChatKeyboard
box
;
private
ListView
mRealListView
;
private
Context
mContext
;
...
...
@@ -125,6 +126,7 @@ public class ChatFragment extends AppBaseFragment<LivePresenter> implements Live
Spannable
spanText
=
(
Spannable
)
info
;
Selection
.
setSelection
(
spanText
,
start
+
emoji
.
length
());
}
box
.
setEditTextFocus
();
}
}
...
...
home/src/main/java/com/xdy/home/ui/DocFragment.java
查看文件 @
2c06699
...
...
@@ -3,6 +3,8 @@ package com.xdy.home.ui;
import
android.graphics.Bitmap
;
import
android.graphics.BitmapFactory
;
import
android.os.Bundle
;
import
android.os.Handler
;
import
android.os.Message
;
import
android.support.annotation.NonNull
;
import
android.text.TextUtils
;
import
android.util.DisplayMetrics
;
...
...
@@ -10,6 +12,7 @@ import android.view.View;
import
com.bumptech.glide.Glide
;
import
com.xdy.commonlibrary.core.AppBaseFragment
;
import
com.xdy.commonlibrary.core.BaseRunnable
;
import
com.xdy.commonlibrary.core.di.AppComponent
;
import
com.xdy.home.R
;
import
com.xdy.home.entity.UpdateDoc
;
...
...
@@ -44,6 +47,7 @@ public class DocFragment extends AppBaseFragment<LivePresenter> implements LiveC
private
CanvasView
mCanvasView
;
private
UpdateDoc
mUpdateDoc
;
private
boolean
replay
;
private
long
intervalTime
;
public
void
setPresenter
(
LivePresenter
presenter
)
{
mPresenter
=
presenter
;
...
...
@@ -109,21 +113,60 @@ public class DocFragment extends AppBaseFragment<LivePresenter> implements LiveC
}
}
public
final
static
int
SEND
=
0
;
Handler
handler
=
new
Handler
()
{
@Override
public
void
handleMessage
(
Message
msg
)
{
int
what
=
msg
.
what
;
WhiteboardUpdateEntity
obj
=
(
WhiteboardUpdateEntity
)
msg
.
obj
;
switch
(
what
)
{
case
SEND:
mCanvasView
.
drawLine
(
obj
.
annotaionItems
);
break
;
}
}
};
/**
* @param entity
*/
@Override
public
void
renderUpdateAnnotation
(
WhiteboardUpdateEntity
entity
)
{
if
(
entity
!=
null
)
{
if
(
entity
.
isFresh
)
{
if
(
intervalTime
!=
0
)
{
intervalTime
=
System
.
currentTimeMillis
()
-
intervalTime
;
if
(
intervalTime
<
150
)
{
//小于100毫秒 不执行?
handler
.
removeCallbacksAndMessages
(
null
);
}
delayDraw
(
entity
);
}
else
{
delayDraw
(
entity
);
}
intervalTime
=
System
.
currentTimeMillis
();
}
private
void
delayDraw
(
final
WhiteboardUpdateEntity
entity
)
{
handler
.
postDelayed
(
new
BaseRunnable
<
WhiteboardUpdateEntity
>(
entity
)
{
@Override
protected
void
handle
(
WhiteboardUpdateEntity
o
)
{
drawline
(
entity
);
}
},
200
);
}
private
void
drawline
(
WhiteboardUpdateEntity
o
)
{
if
(
o
!=
null
)
{
if
(
o
.
isFresh
)
{
if
(
mCanvasView
!=
null
)
{
mCanvasView
.
clear
();
}
}
if
(
entity
.
annotaionItems
!=
null
)
{
if
(
o
.
annotaionItems
!=
null
)
{
if
(
mCanvasView
!=
null
)
{
mCanvasView
.
drawLine
(
entity
.
annotaionItems
);
mCanvasView
.
drawLine
(
o
.
annotaionItems
);
}
}
}
...
...
@@ -157,6 +200,7 @@ public class DocFragment extends AppBaseFragment<LivePresenter> implements LiveC
.
get
();
wrapDocBitMapEntity
.
setNoDoc
(
false
);
wrapDocBitMapEntity
.
setBitmap
(
bitmap
);
}
return
wrapDocBitMapEntity
;
}
catch
(
InterruptedException
e
)
{
...
...
@@ -174,13 +218,20 @@ public class DocFragment extends AppBaseFragment<LivePresenter> implements LiveC
@Override
public
void
call
(
WrapDocBitMapEntity
resource
)
{
if
(
resource
.
getBitmap
()
==
null
)
{
showMessage
(
"图片获取失败"
);
Bitmap
bitmap
=
getNoDocBitmap
();
mCanvasView
.
setBitmap
(
bitmap
,
false
);
}
else
{
mCanvasView
.
setBitmap
(
resource
.
getBitmap
(),
!
resource
.
showNoDoc
());
}
//用handler发送 跟drawline在一个队列里执行,否则顺序乱了导致切换图片的时候还有上一个画面的标注
handler
.
post
(
new
BaseRunnable
<
WrapDocBitMapEntity
>(
resource
)
{
@Override
protected
void
handle
(
WrapDocBitMapEntity
wrapDocBitMapEntity
)
{
if
(
wrapDocBitMapEntity
.
getBitmap
()
==
null
)
{
showMessage
(
"图片获取失败"
);
Bitmap
bitmap
=
getNoDocBitmap
();
mCanvasView
.
setBitmap
(
bitmap
,
false
);
}
else
{
mCanvasView
.
setBitmap
(
wrapDocBitMapEntity
.
getBitmap
(),
!
wrapDocBitMapEntity
.
showNoDoc
());
}
}
});
}
});
}
...
...
home/src/main/java/com/xdy/home/ui/LiveFragment.java
查看文件 @
2c06699
...
...
@@ -62,6 +62,7 @@ import java.util.Random;
import
me.yokeyword.fragmentation.SupportFragment
;
import
static
com
.
pili
.
pldroid
.
player
.
AVOptions
.
KEY_DELAY_OPTIMIZATION
;
import
static
com
.
xdy
.
home
.
R
.
mipmap
.
play
;
/**
* @author Administrator
...
...
@@ -218,6 +219,7 @@ public class LiveFragment extends AppBaseFragment<LivePresenter> implements Live
}
});
viewPager
.
setPagingEnabled
(
false
);
viewPager
.
setOffscreenPageLimit
(
3
);
mAdapter
=
new
HomeAdapter
(
getChildFragmentManager
(),
mFragments
);
viewPager
.
setAdapter
(
mAdapter
);
slidingTab
.
setViewPager
(
viewPager
,
titles
);
...
...
@@ -433,6 +435,29 @@ public class LiveFragment extends AppBaseFragment<LivePresenter> implements Live
}
@Override
public
void
onPause
()
{
super
.
onPause
();
if
(!
replay
)
{
if
(
mPresenter
.
isVideoMode
())
stopVideo
();
else
stopAudio
();
}
else
{
mPresenter
.
pauseAndStart
(
true
);
}
}
@Override
public
void
onResume
()
{
super
.
onResume
();
if
(!
replay
)
{
mPresenter
.
restart
();
}
else
{
mPresenter
.
pauseAndStart
(
false
);
}
}
@Override
public
void
showOperation
(
boolean
b
)
{
if
(
b
)
operation
.
setVisibility
(
View
.
VISIBLE
);
...
...
@@ -469,7 +494,7 @@ public class LiveFragment extends AppBaseFragment<LivePresenter> implements Live
if
(!
replay
)
{
mPresenter
.
close
();
}
else
{
if
(!
mPresenter
.
isVideoMode
()
&&
mVideoView
!=
null
)
if
(!
mPresenter
.
isVideoMode
()
&&
mVideoView
!=
null
&&
mVideoView
.
isPlaying
()
)
mVideoView
.
stopPlayback
();
}
}
...
...
@@ -487,7 +512,7 @@ public class LiveFragment extends AppBaseFragment<LivePresenter> implements Live
if
(!
replay
)
{
mPresenter
.
close
();
}
else
{
if
(
mPresenter
.
isVideoMode
()
&&
mVideoView
!=
null
)
if
(
mPresenter
.
isVideoMode
()
&&
mVideoView
!=
null
&&
mVideoView
.
isPlaying
()
)
mVideoView
.
stopPlayback
();
}
}
...
...
@@ -697,7 +722,7 @@ public class LiveFragment extends AppBaseFragment<LivePresenter> implements Live
@Override
public
void
updatePausePlay
()
{
if
(
mPresenter
.
getRecordStatus
())
mPauseButton
.
setImageResource
(
R
.
mipmap
.
play
);
mPauseButton
.
setImageResource
(
play
);
else
mPauseButton
.
setImageResource
(
R
.
mipmap
.
stop
);
}
...
...
home/src/main/java/com/xdy/home/vp/LivePresenter.java
查看文件 @
2c06699
...
...
@@ -339,6 +339,8 @@ public class LivePresenter extends BasePresenter<LiveContract.Model, LiveContrac
mRootView
.
resetSeekBar
();
docView
.
clear
();
chatView
.
clearChatHistory
();
currentPlayAudio
=
null
;
currentPlayVideo
=
null
;
}
break
;
case
Constants
.
RECORD_PAUSE
:
...
...
@@ -372,6 +374,7 @@ public class LivePresenter extends BasePresenter<LiveContract.Model, LiveContrac
currentPlayAudio
.
getMediaId
()
==
audio
.
getMediaId
())
{
mRootView
.
showOperation
(
false
);
mRootView
.
stopAudio
();
currentPlayAudio
=
null
;
}
}
...
...
@@ -391,6 +394,7 @@ public class LivePresenter extends BasePresenter<LiveContract.Model, LiveContrac
currentPlayVideo
.
getMediaId
()
==
videoEntity
.
getMediaId
())
{
mRootView
.
stopVideo
();
mRootView
.
showOperation
(
false
);
currentPlayVideo
=
null
;
}
}
...
...
@@ -835,6 +839,14 @@ public class LivePresenter extends BasePresenter<LiveContract.Model, LiveContrac
return
connceted
;
}
public
void
restart
()
{
if
(
isVideoMode
()
&&
currentPlayVideo
!=
null
)
{
mRootView
.
playVideo
(
currentPlayVideo
);
}
else
if
(
currentPlayAudio
!=
null
)
{
mRootView
.
playAudio
(
currentPlayAudio
);
}
}
class
EventHande
implements
SmartEventCallback
{
@Override
...
...
home/src/main/java/com/xdy/home/widget/CanvasView.java
查看文件 @
2c06699
...
...
@@ -449,7 +449,7 @@ public class CanvasView extends SurfaceView implements SurfaceHolder.Callback, V
this
.
setOnTouchListener
(
this
);
// 设置背景为透明 否则是黑色
this
.
setZOrderOnTop
(
true
);
// this.setZOrderMediaOverlay(true);
// this.setZOrderMediaOverlay(true);
this
.
getHolder
().
setFormat
(
PixelFormat
.
TRANSLUCENT
);
// this.pathLists.add(new Path());
...
...
@@ -541,7 +541,7 @@ public class CanvasView extends SurfaceView implements SurfaceHolder.Callback, V
for
(
PointGroupEntity
pointXy
:
pointXies
)
{
float
w
=
pointXy
.
w
;
float
h
=
pointXy
.
h
+
(
FLOAT_TYPE
*
currentOffsetY
)
/
(
FLOAT_TYPE
*
finalWidth
)
*
100
f
;
pointXy
.
h
=
h
;
pointXy
.
h
=
h
;
}
//操作一下這個點
...
...
home/src/main/java/com/xdy/home/widget/chat/KJChatKeyboard.java
查看文件 @
2c06699
...
...
@@ -155,6 +155,7 @@ public class KJChatKeyboard extends RelativeLayout implements
return
new
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
setEditTextFocus
();
if
(
isShow
()
&&
which
==
layoutType
)
{
hideLayout
();
showKeyboard
(
context
);
...
...
@@ -168,6 +169,17 @@ public class KJChatKeyboard extends RelativeLayout implements
};
}
public
void
setEditTextFocus
(){
if
(
mEtMsg
!=
null
){
mEtMsg
.
setFocusable
(
true
);
mEtMsg
.
setFocusableInTouchMode
(
true
);
mEtMsg
.
requestFocus
();
mEtMsg
.
findFocus
();
mEtMsg
.
invalidate
();
}
}
private
void
changeLayout
(
int
mode
)
{
adapter
=
new
FaceCategroyAdapter
(((
FragmentActivity
)
getContext
())
.
getSupportFragmentManager
(),
mode
);
...
...
@@ -215,6 +227,8 @@ public class KJChatKeyboard extends RelativeLayout implements
public
void
showLayout
()
{
hideKeyboard
(
this
.
context
);
// 延迟一会,让键盘先隐藏再显示表情键盘,否则会有一瞬间表情键盘和软键盘同时显示
postDelayed
(
new
Runnable
()
{
@Override
public
void
run
()
{
...
...
@@ -268,6 +282,8 @@ public class KJChatKeyboard extends RelativeLayout implements
.
getWindowToken
(),
0
);
imm
.
toggleSoftInput
(
0
,
InputMethodManager
.
HIDE_NOT_ALWAYS
);
}
}
...
...
home/src/main/java/com/xdy/home/widget/emoji/DisplayRules.java
查看文件 @
2c06699
...
...
@@ -139,5 +139,10 @@ public enum DisplayRules {
KeyEvent
event
=
new
KeyEvent
(
0
,
0
,
0
,
KeyEvent
.
KEYCODE_DEL
,
0
,
0
,
0
,
0
,
KeyEvent
.
KEYCODE_ENDCALL
);
editText
.
dispatchKeyEvent
(
event
);
editText
.
setFocusable
(
true
);
editText
.
setFocusableInTouchMode
(
true
);
editText
.
requestFocus
();
editText
.
findFocus
();
editText
.
invalidate
();
}
}
...
...
home/src/main/java/com/xdy/home/widget/emoji/EmoticonsEditText.java
查看文件 @
2c06699
...
...
@@ -51,6 +51,11 @@ public class EmoticonsEditText extends EditText {
public
void
setText
(
CharSequence
text
,
BufferType
type
)
{
if
(!
TextUtils
.
isEmpty
(
text
))
{
super
.
setText
(
replace
(
text
),
type
);
/*setFocusable(true);
setFocusableInTouchMode(true);
requestFocus();
findFocus();
invalidate();*/
}
else
{
super
.
setText
(
text
,
type
);
}
...
...
请
注册
或
登录
后发表评论