Commit a35653fc by 严久程
parents 8765823e 1e229327
...@@ -104,14 +104,20 @@ public class DemoAppLifecycles implements IAppLifecycles { ...@@ -104,14 +104,20 @@ public class DemoAppLifecycles implements IAppLifecycles {
//umeng //umeng
String umAppkey = null; String umAppkey = null;
if (packageName.endsWith("yidianling")) { if (BuildConfig.FLAVOR.endsWith("ydl")) {
umAppkey = "56970affe0f55a9cda001e24"; umAppkey = "56970affe0f55a9cda001e24";
channel = "android_" + channel; channel = "android_" + channel;
initUM(umAppkey, channel,application); initUM(umAppkey, channel,application);
PlatformConfig.setWeixin("wx57a9d930270498c7", "17c031f02500ded3457a80e69d8e5e45"); PlatformConfig.setWeixin("wx57a9d930270498c7", "17c031f02500ded3457a80e69d8e5e45");
PlatformConfig.setQQZone("1105070461", "6BvkUnk6wXJekcgR");
}else if (BuildConfig.FLAVOR.endsWith("xlzx")) {
umAppkey = "5859e1656e27a42fa400021f";
channel = "ATK_7_android_" + channel;
initUM(umAppkey, channel,application);
PlatformConfig.setWeixin("wx1c6af5a11b5f531f", "1ddb93abbb2d81e604657d38e94a5720");
PlatformConfig.setQQZone("1107931541", "8dCvxUpi525uPGTJ");
} }
PlatformConfig.setQQZone("1105070461", "6BvkUnk6wXJekcgR");
MobclickAgent.setScenarioType(application, MobclickAgent.EScenarioType.E_DUM_NORMAL); MobclickAgent.setScenarioType(application, MobclickAgent.EScenarioType.E_DUM_NORMAL);
MobclickAgent.setCatchUncaughtExceptions(!BuildConfig.DEBUG); MobclickAgent.setCatchUncaughtExceptions(!BuildConfig.DEBUG);
......
ext { ext {
kotlin_version = "1.3.21" kotlin_version = "1.3.21"
dev_mode = false dev_mode = true
ydl_app = [ ydl_app = [
appName : "心理咨询壹点灵", appName : "心理咨询壹点灵",
...@@ -256,7 +256,7 @@ ext { ...@@ -256,7 +256,7 @@ ext {
"arouter-compiler" : "com.alibaba:arouter-compiler:1.2.2", "arouter-compiler" : "com.alibaba:arouter-compiler:1.2.2",
"exoplayer" : "com.google.android.exoplayer:exoplayer:2.9.0", "exoplayer" : "com.google.android.exoplayer:exoplayer:2.9.0",
"free_reflection" : "me.weishu:free_reflection:2.0.0", "free_reflection" : "me.weishu:free_reflection:2.0.0",
"imagepicker" : "com.ydl:imagepicker:1.0.6", "imagepicker" : "com.ydl:imagepicker:1.0.7",
"protector" : "com.ydl:protector:1.0.1-SNAPSHOT@aar", "protector" : "com.ydl:protector:1.0.1-SNAPSHOT@aar",
"ydl-hnet" : "com.ydl:h-net:0.0.8", "ydl-hnet" : "com.ydl:h-net:0.0.8",
"ydl-user-router" : "com.ydl:router:1.0.0-SNAPSHOT@aar", "ydl-user-router" : "com.ydl:router:1.0.0-SNAPSHOT@aar",
......
...@@ -24,4 +24,10 @@ public class CourseNewListAdapter extends CommonAdapter<Course> { ...@@ -24,4 +24,10 @@ public class CourseNewListAdapter extends CommonAdapter<Course> {
((CourseItemNewView) convertView).setData(mDataList.get(position)); ((CourseItemNewView) convertView).setData(mDataList.get(position));
return convertView; return convertView;
} }
//修复 Android 4.4 Bug :cannot be cast to android.widget.AbsListView$LayoutParams
@Override
public boolean hasStableIds() {
return true;
}
} }
...@@ -2,8 +2,13 @@ package com.yidianling.course.widget ...@@ -2,8 +2,13 @@ package com.yidianling.course.widget
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.app.Activity import android.app.Activity
import android.os.Build
import android.os.Handler import android.os.Handler
import android.support.annotation.DrawableRes
import android.support.annotation.Nullable
import android.support.annotation.RawRes
import android.view.View import android.view.View
import android.widget.ImageView
import android.widget.RelativeLayout import android.widget.RelativeLayout
import android.widget.SeekBar import android.widget.SeekBar
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
...@@ -13,10 +18,11 @@ import com.ydl.media.audio.enums.PlayModeEnum ...@@ -13,10 +18,11 @@ import com.ydl.media.audio.enums.PlayModeEnum
import com.ydl.media.audio.model.Music import com.ydl.media.audio.model.Music
import com.ydl.media.view.PlayTypeEnum import com.ydl.media.view.PlayTypeEnum
import com.ydl.media.view.PlayerFloatHelper import com.ydl.media.view.PlayerFloatHelper
import com.yidianling.course.R
import com.yidianling.course.listener.HPlayStatusListener import com.yidianling.course.listener.HPlayStatusListener
import kotlinx.android.synthetic.main.course_play_music_view.view.* import kotlinx.android.synthetic.main.course_play_music_view.view.*
/** /**
* Created by hgw on 2018/4/28. * Created by hgw on 2018/4/28.
*/ */
...@@ -37,7 +43,7 @@ class HPlayView : RelativeLayout, OnPlayerEventListener { ...@@ -37,7 +43,7 @@ class HPlayView : RelativeLayout, OnPlayerEventListener {
fun init() { fun init() {
if (mContext == null) return if (mContext == null) return
View.inflate(context, R.layout.course_play_music_view, this) View.inflate(context, com.yidianling.course.R.layout.course_play_music_view, this)
AudioPlayer.get().addOnPlayEventListener(this) AudioPlayer.get().addOnPlayEventListener(this)
course_audio_play_icon.setOnClickListener { course_audio_play_icon.setOnClickListener {
...@@ -116,7 +122,9 @@ class HPlayView : RelativeLayout, OnPlayerEventListener { ...@@ -116,7 +122,9 @@ class HPlayView : RelativeLayout, OnPlayerEventListener {
} }
fun setImageBackground(url: String?) { fun setImageBackground(url: String?) {
Glide.with(mContext).load(url).into(img_bg) if (!isDestroy()){
Glide.with(mContext).load(url).into(img_bg)
}
} }
/** /**
...@@ -134,9 +142,9 @@ class HPlayView : RelativeLayout, OnPlayerEventListener { ...@@ -134,9 +142,9 @@ class HPlayView : RelativeLayout, OnPlayerEventListener {
@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n")
override fun onChange(music: Music) { override fun onChange(music: Music) {
if (mContext != null) { if (mContext != null) {
Glide.with(mContext).asGif().load(R.drawable.course_loading5).into(img_gif) displayImage(com.yidianling.course.R.drawable.course_loading5,img_gif,true)
} }
course_audio_play_icon.setImageResource(R.drawable.course_ico_course_play) course_audio_play_icon.setImageResource(com.yidianling.course.R.drawable.course_ico_course_play)
pro_progress.progress = 0 pro_progress.progress = 0
text_start_time.text = "00:00" text_start_time.text = "00:00"
...@@ -190,15 +198,15 @@ class HPlayView : RelativeLayout, OnPlayerEventListener { ...@@ -190,15 +198,15 @@ class HPlayView : RelativeLayout, OnPlayerEventListener {
if (show) { if (show) {
if (!AudioPlayer.get().isPlaying) { if (!AudioPlayer.get().isPlaying) {
if (mContext != null) { if (mContext != null) {
Glide.with(mContext).asGif().load(R.drawable.course_loading5).into(img_gif) displayImage(com.yidianling.course.R.drawable.course_loading5,img_gif,true)
} }
course_audio_play_icon.setImageResource(R.drawable.course_ico_course_play) course_audio_play_icon.setImageResource(com.yidianling.course.R.drawable.course_ico_course_play)
} }
} else { } else {
if (mContext != null) { if (mContext != null) {
Glide.with(mContext).asGif().load(R.drawable.course_audio_play).into(img_gif) displayImage(com.yidianling.course.R.drawable.course_audio_play,img_gif,true)
} }
course_audio_play_icon.setImageResource(R.drawable.course_ico_course_pause) course_audio_play_icon.setImageResource(com.yidianling.course.R.drawable.course_ico_course_pause)
} }
}, 0) }, 0)
} }
...@@ -208,12 +216,11 @@ class HPlayView : RelativeLayout, OnPlayerEventListener { ...@@ -208,12 +216,11 @@ class HPlayView : RelativeLayout, OnPlayerEventListener {
if (mContext == null) return if (mContext == null) return
mHandler?.postDelayed({ mHandler?.postDelayed({
if (show) { if (show) {
Glide.with(mContext).asGif().load(R.drawable.course_audio_play).into(img_gif) displayImage(com.yidianling.course.R.drawable.course_audio_play,img_gif,true)
course_audio_play_icon.setImageResource(R.drawable.course_ico_course_pause) course_audio_play_icon.setImageResource(com.yidianling.course.R.drawable.course_ico_course_pause)
} else { } else {
Glide.with(mContext).asBitmap().load(R.drawable.course_ico_course_bg_pause) displayImage(com.yidianling.course.R.drawable.course_ico_course_bg_pause,img_gif)
.into(img_gif) course_audio_play_icon.setImageResource(com.yidianling.course.R.drawable.course_ico_course_play)
course_audio_play_icon.setImageResource(R.drawable.course_ico_course_play)
} }
}, 0) }, 0)
} }
...@@ -250,4 +257,27 @@ class HPlayView : RelativeLayout, OnPlayerEventListener { ...@@ -250,4 +257,27 @@ class HPlayView : RelativeLayout, OnPlayerEventListener {
mContext = null mContext = null
mHandler = null mHandler = null
} }
/**
* 加载Image
*/
private fun displayImage(@RawRes @DrawableRes @Nullable resourceId: Int, imageView: ImageView , isGif:Boolean = false) {
//判断当前页面是否销毁
if (!isDestroy()) {
if(isGif){
Glide.with(mContext).asGif().load(resourceId).into(imageView)
}else {
Glide.with(mContext).asBitmap().load(resourceId).into(imageView)
}
}
}
/**
* 判断Activity是否Destroy
* @param activity
* @return
*/
fun isDestroy(): Boolean {
return mContext == null || mContext!!.isFinishing || Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1 && mContext!!.isDestroyed
}
} }
\ No newline at end of file
...@@ -18,9 +18,11 @@ import android.view.Window; ...@@ -18,9 +18,11 @@ import android.view.Window;
import android.view.WindowManager; import android.view.WindowManager;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import com.ydl.ydl_image.module.GlideApp; import com.ydl.ydl_image.module.GlideApp;
import com.ydl.ydlcommon.base.BaseActivity;
import com.ydl.ydlcommon.data.http.RxUtils;
import com.yidianling.common.tools.ToastUtil;
import com.yidianling.dynamic.DynamicConstants; import com.yidianling.dynamic.DynamicConstants;
import com.yidianling.dynamic.R; import com.yidianling.dynamic.R;
import com.yidianling.dynamic.common.net.DynamicApiUtils; import com.yidianling.dynamic.common.net.DynamicApiUtils;
...@@ -28,8 +30,6 @@ import com.yidianling.dynamic.common.tool.DownLoadImageService; ...@@ -28,8 +30,6 @@ import com.yidianling.dynamic.common.tool.DownLoadImageService;
import com.yidianling.dynamic.common.tool.ImageDownLoadCallBack; import com.yidianling.dynamic.common.tool.ImageDownLoadCallBack;
import com.yidianling.dynamic.model.Command; import com.yidianling.dynamic.model.Command;
import com.yidianling.dynamic.model.RecommendTrendImage; import com.yidianling.dynamic.model.RecommendTrendImage;
import com.ydl.ydlcommon.base.BaseActivity;
import com.ydl.ydlcommon.data.http.RxUtils;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -237,11 +237,11 @@ public class BrowsePicturesActivity extends BaseActivity implements ViewPager.On ...@@ -237,11 +237,11 @@ public class BrowsePicturesActivity extends BaseActivity implements ViewPager.On
switch (msg.what) { switch (msg.what) {
case DynamicConstants.REQUEST_SAVE_IMG_SUCCESS: case DynamicConstants.REQUEST_SAVE_IMG_SUCCESS:
dismissProgressDialog(); dismissProgressDialog();
Toast.makeText(BrowsePicturesActivity.this, "保存成功", Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(BrowsePicturesActivity.this, "保存成功");
break; break;
case DynamicConstants.REQUEST_SAVE_IMG_FAIL: case DynamicConstants.REQUEST_SAVE_IMG_FAIL:
dismissProgressDialog(); dismissProgressDialog();
Toast.makeText(BrowsePicturesActivity.this, "保存失败", Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(BrowsePicturesActivity.this, "保存失败");
break; break;
} }
} }
......
...@@ -16,14 +16,14 @@ import android.view.Window; ...@@ -16,14 +16,14 @@ import android.view.Window;
import android.view.WindowManager; import android.view.WindowManager;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import com.ydl.ydl_image.module.GlideApp; import com.ydl.ydl_image.module.GlideApp;
import com.ydl.ydlcommon.base.BaseActivity;
import com.yidianling.common.tools.ToastUtil;
import com.yidianling.dynamic.DynamicConstants; import com.yidianling.dynamic.DynamicConstants;
import com.yidianling.dynamic.R; import com.yidianling.dynamic.R;
import com.yidianling.dynamic.common.tool.DownLoadImageService; import com.yidianling.dynamic.common.tool.DownLoadImageService;
import com.yidianling.dynamic.common.tool.ImageDownLoadCallBack; import com.yidianling.dynamic.common.tool.ImageDownLoadCallBack;
import com.ydl.ydlcommon.base.BaseActivity;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -180,10 +180,10 @@ public class BrowsePicturesActivity2 extends BaseActivity implements ViewPager.O ...@@ -180,10 +180,10 @@ public class BrowsePicturesActivity2 extends BaseActivity implements ViewPager.O
public void handleMessage(Message msg) { public void handleMessage(Message msg) {
switch (msg.what) { switch (msg.what) {
case DynamicConstants.REQUEST_SAVE_IMG_SUCCESS: case DynamicConstants.REQUEST_SAVE_IMG_SUCCESS:
Toast.makeText(BrowsePicturesActivity2.this,"保存成功",Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(BrowsePicturesActivity2.this,"保存成功");
break; break;
case DynamicConstants.REQUEST_SAVE_IMG_FAIL: case DynamicConstants.REQUEST_SAVE_IMG_FAIL:
Toast.makeText(BrowsePicturesActivity2.this,"保存失败",Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(BrowsePicturesActivity2.this,"保存失败");
break; break;
} }
} }
......
...@@ -312,7 +312,7 @@ public class MembersActivity extends BaseActivity implements View.OnClickListene ...@@ -312,7 +312,7 @@ public class MembersActivity extends BaseActivity implements View.OnClickListene
members_top_user_focus_ortion_rel.setVisibility(View.VISIBLE); members_top_user_focus_ortion_rel.setVisibility(View.VISIBLE);
members_top_user_focus_iv.setVisibility(View.VISIBLE); members_top_user_focus_iv.setVisibility(View.VISIBLE);
} else { } else {
Toast.makeText(MembersActivity.this, resp.msg, Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(MembersActivity.this, resp.msg);
} }
}, throwable ->{ }, throwable ->{
DynamicApiUtils.handleError(MembersActivity.this, throwable); DynamicApiUtils.handleError(MembersActivity.this, throwable);
...@@ -424,7 +424,7 @@ public class MembersActivity extends BaseActivity implements View.OnClickListene ...@@ -424,7 +424,7 @@ public class MembersActivity extends BaseActivity implements View.OnClickListene
} }
} }
} else { } else {
Toast.makeText(MembersActivity.this, resp.msg, Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(MembersActivity.this, resp.msg);
} }
}, throwable -> { }, throwable -> {
...@@ -478,7 +478,7 @@ public class MembersActivity extends BaseActivity implements View.OnClickListene ...@@ -478,7 +478,7 @@ public class MembersActivity extends BaseActivity implements View.OnClickListene
} }
} else { } else {
String msg = resp.msg; String msg = resp.msg;
Toast.makeText(MembersActivity.this, msg, Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(MembersActivity.this, msg);
dismissProgressDialog(); dismissProgressDialog();
} }
}, throwable -> { }, throwable -> {
...@@ -687,7 +687,7 @@ public class MembersActivity extends BaseActivity implements View.OnClickListene ...@@ -687,7 +687,7 @@ public class MembersActivity extends BaseActivity implements View.OnClickListene
builder1.SetOnItemClickLister(new ListDialog.Builder.OnItemClickLister() { builder1.SetOnItemClickLister(new ListDialog.Builder.OnItemClickLister() {
@Override @Override
public void onItemClick(Dialog dialog, View view, int position) { public void onItemClick(Dialog dialog, View view, int position) {
// Toast.makeText(mContext, dialog_datas.get(position), Toast.LENGTH_SHORT).show(); // ToastUtil.toastShort(mContext, dialog_datas.get(position));
dialog.dismiss(); dialog.dismiss();
if (!DynamicIn.INSTANCE.isLogin()) { if (!DynamicIn.INSTANCE.isLogin()) {
//未登录则跳转登录页面 //未登录则跳转登录页面
...@@ -709,9 +709,9 @@ public class MembersActivity extends BaseActivity implements View.OnClickListene ...@@ -709,9 +709,9 @@ public class MembersActivity extends BaseActivity implements View.OnClickListene
.doAfterTerminate(() -> dismissProgressDialog()) .doAfterTerminate(() -> dismissProgressDialog())
.subscribe(resp -> { .subscribe(resp -> {
if (resp.code == 0) { if (resp.code == 0) {
Toast.makeText(MembersActivity.this, "举报成功", Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(MembersActivity.this, "举报成功");
} else { } else {
Toast.makeText(MembersActivity.this, resp.msg, Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(MembersActivity.this, resp.msg);
} }
}, throwable -> DynamicApiUtils.handleError(MembersActivity.this, throwable)); }, throwable -> DynamicApiUtils.handleError(MembersActivity.this, throwable));
......
...@@ -5,15 +5,15 @@ import android.os.Bundle; ...@@ -5,15 +5,15 @@ import android.os.Bundle;
import android.view.View; import android.view.View;
import android.widget.RelativeLayout; import android.widget.RelativeLayout;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import com.ydl.ydlcommon.base.BaseActivity;
import com.ydl.ydlcommon.bean.StatusBarOptions; import com.ydl.ydlcommon.bean.StatusBarOptions;
import com.ydl.ydlcommon.view.widgets.RecyclerViewForScrollView;
import com.yidianling.common.tools.ToastUtil;
import com.yidianling.dynamic.R; import com.yidianling.dynamic.R;
import com.yidianling.dynamic.adapter.SelectTopicAdapter; import com.yidianling.dynamic.adapter.SelectTopicAdapter;
import com.yidianling.dynamic.common.net.DynamicApiUtils; import com.yidianling.dynamic.common.net.DynamicApiUtils;
import com.yidianling.dynamic.common.view.FullyLinearLayoutManager; import com.yidianling.dynamic.common.view.FullyLinearLayoutManager;
import com.ydl.ydlcommon.base.BaseActivity;
import com.ydl.ydlcommon.view.widgets.RecyclerViewForScrollView;
import com.yidianling.dynamic.model.Command; import com.yidianling.dynamic.model.Command;
import com.yidianling.dynamic.model.RecommendTopic; import com.yidianling.dynamic.model.RecommendTopic;
...@@ -152,7 +152,7 @@ public class SelecTopicActivity extends BaseActivity { ...@@ -152,7 +152,7 @@ public class SelecTopicActivity extends BaseActivity {
adapterR.notifyDataSetChanged(); adapterR.notifyDataSetChanged();
adapterF.notifyDataSetChanged(); adapterF.notifyDataSetChanged();
} else { } else {
Toast.makeText(SelecTopicActivity.this, response.msg, Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(SelecTopicActivity.this, response.msg);
} }
dismissProgressDialog(); dismissProgressDialog();
}, throwable -> { }, throwable -> {
......
...@@ -673,7 +673,7 @@ public class PublishQuestionAndTrendFragment extends BaseFragment implements Vie ...@@ -673,7 +673,7 @@ public class PublishQuestionAndTrendFragment extends BaseFragment implements Vie
getActivity().runOnUiThread(new Runnable() { getActivity().runOnUiThread(new Runnable() {
@Override @Override
public void run() { public void run() {
// Toast.makeText(PublishTrendActivity.this, "有图片已被删除", Toast.LENGTH_SHORT).show(); // ToastUtil.toastShort(PublishTrendActivity.this, "有图片已被删除");
YdlCommonOut.Companion.showToast("有图片已被删除"); YdlCommonOut.Companion.showToast("有图片已被删除");
loadingDialog.dismiss(); loadingDialog.dismiss();
loadingDialog = null; loadingDialog = null;
......
...@@ -7,9 +7,13 @@ import android.view.LayoutInflater; ...@@ -7,9 +7,13 @@ import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.RelativeLayout; import android.widget.RelativeLayout;
import android.widget.Toast;
import com.ydl.ydlcommon.data.http.RxUtils;
import com.ydl.ydlcommon.utils.BuryPointUtils;
import com.ydl.ydlcommon.view.FullyLinearLayoutManager;
import com.ydl.ydlcommon.view.widgets.RecyclerViewForScrollView;
import com.yidianling.common.tools.LogUtil; import com.yidianling.common.tools.LogUtil;
import com.yidianling.common.tools.ToastUtil;
import com.yidianling.dynamic.DynamicFragment; import com.yidianling.dynamic.DynamicFragment;
import com.yidianling.dynamic.R; import com.yidianling.dynamic.R;
import com.yidianling.dynamic.adapter.AllTopicAdapter; import com.yidianling.dynamic.adapter.AllTopicAdapter;
...@@ -18,10 +22,6 @@ import com.yidianling.dynamic.model.Command; ...@@ -18,10 +22,6 @@ import com.yidianling.dynamic.model.Command;
import com.yidianling.dynamic.model.RecommendTopic; import com.yidianling.dynamic.model.RecommendTopic;
import com.yidianling.dynamic.router.DynamicIn; import com.yidianling.dynamic.router.DynamicIn;
import com.yidianling.dynamic.topic.topicDetail.TopicDetailActivity; import com.yidianling.dynamic.topic.topicDetail.TopicDetailActivity;
import com.ydl.ydlcommon.data.http.RxUtils;
import com.ydl.ydlcommon.utils.BuryPointUtils;
import com.ydl.ydlcommon.view.FullyLinearLayoutManager;
import com.ydl.ydlcommon.view.widgets.RecyclerViewForScrollView;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -166,7 +166,7 @@ public class AllTopicFragment extends DynamicFragment { ...@@ -166,7 +166,7 @@ public class AllTopicFragment extends DynamicFragment {
adapterr.updateDate(mDatasr); adapterr.updateDate(mDatasr);
adapterf.updateDate(mDatasf); adapterf.updateDate(mDatasf);
} else { } else {
Toast.makeText(context, objectBaseResponse.msg, Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(context, objectBaseResponse.msg);
} }
dismissProgressDialog(); dismissProgressDialog();
}, throwable -> { }, throwable -> {
......
...@@ -721,7 +721,7 @@ public class TrendsDetailActivity extends BaseMvpActivity<ITrendsDetailView, ITr ...@@ -721,7 +721,7 @@ public class TrendsDetailActivity extends BaseMvpActivity<ITrendsDetailView, ITr
@Override @Override
public void showToast(String msg) { public void showToast(String msg) {
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(this, msg);
} }
......
package com.yidianling.avchatkit; package com.yidianling.avchatkit;
import android.widget.Toast;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.netease.nimlib.sdk.NIMClient; import com.netease.nimlib.sdk.NIMClient;
...@@ -14,6 +12,7 @@ import com.yidianling.avchatkit.common.Handlers; ...@@ -14,6 +12,7 @@ import com.yidianling.avchatkit.common.Handlers;
import com.yidianling.avchatkit.common.log.LogUtil; import com.yidianling.avchatkit.common.log.LogUtil;
import com.yidianling.avchatkit.common.util.TimeUtil; import com.yidianling.avchatkit.common.util.TimeUtil;
import com.yidianling.avchatkit.teamavchat.activity.TeamAVChatActivity; import com.yidianling.avchatkit.teamavchat.activity.TeamAVChatActivity;
import com.yidianling.common.tools.ToastUtil;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -97,7 +96,7 @@ public class TeamAVChatProfile { ...@@ -97,7 +96,7 @@ public class TeamAVChatProfile {
LogUtil.ui("receive team video chat notification " + teamId + " room " + roomName); LogUtil.ui("receive team video chat notification " + teamId + " room " + roomName);
if (isTeamAVChatting || AVChatProfile.getInstance().isAVChatting()) { if (isTeamAVChatting || AVChatProfile.getInstance().isAVChatting()) {
LogUtil.ui("cancel launch team av chat isTeamAVChatting = " + isTeamAVChatting); LogUtil.ui("cancel launch team av chat isTeamAVChatting = " + isTeamAVChatting);
Toast.makeText(AVChatKit.getContext(), "正在进行视频通话", Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(AVChatKit.getContext(), "正在进行视频通话");
return; return;
} }
LogUtil.ui("isSyncComplete = " + isSyncComplete); LogUtil.ui("isSyncComplete = " + isSyncComplete);
......
...@@ -8,7 +8,6 @@ import android.os.SystemClock; ...@@ -8,7 +8,6 @@ import android.os.SystemClock;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.WindowManager; import android.view.WindowManager;
import android.widget.Toast;
import com.netease.nimlib.sdk.NIMClient; import com.netease.nimlib.sdk.NIMClient;
import com.netease.nimlib.sdk.Observer; import com.netease.nimlib.sdk.Observer;
...@@ -41,6 +40,7 @@ import com.yidianling.avchatkit.notification.AVChatNotification; ...@@ -41,6 +40,7 @@ import com.yidianling.avchatkit.notification.AVChatNotification;
import com.yidianling.avchatkit.receiver.PhoneCallStateObserver; import com.yidianling.avchatkit.receiver.PhoneCallStateObserver;
import com.yidianling.avchatkit.ui.AVChatAudioUI; import com.yidianling.avchatkit.ui.AVChatAudioUI;
import com.yidianling.avchatkit.ui.AVChatVideoUI; import com.yidianling.avchatkit.ui.AVChatVideoUI;
import com.yidianling.common.tools.ToastUtil;
import com.yidianling.im.R; import com.yidianling.im.R;
/** /**
...@@ -307,9 +307,9 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ ...@@ -307,9 +307,9 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ
public void onAVRecordingCompletion(String account, String filePath) { public void onAVRecordingCompletion(String account, String filePath) {
if (account != null && filePath != null && filePath.length() > 0) { if (account != null && filePath != null && filePath.length() > 0) {
String msg = "音视频录制已结束, " + "账号:" + account + " 录制文件已保存至:" + filePath; String msg = "音视频录制已结束, " + "账号:" + account + " 录制文件已保存至:" + filePath;
Toast.makeText(AVChatActivity.this, msg, Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(AVChatActivity.this, msg);
} else { } else {
Toast.makeText(AVChatActivity.this, "录制已结束.", Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(AVChatActivity.this, "录制已结束.");
} }
if (state == AVChatType.VIDEO.getValue()) { if (state == AVChatType.VIDEO.getValue()) {
avChatVideoUI.resetRecordTip(); avChatVideoUI.resetRecordTip();
...@@ -322,9 +322,9 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ ...@@ -322,9 +322,9 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ
public void onAudioRecordingCompletion(String filePath) { public void onAudioRecordingCompletion(String filePath) {
if (filePath != null && filePath.length() > 0) { if (filePath != null && filePath.length() > 0) {
String msg = "音频录制已结束, 录制文件已保存至:" + filePath; String msg = "音频录制已结束, 录制文件已保存至:" + filePath;
Toast.makeText(AVChatActivity.this, msg, Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(AVChatActivity.this, msg);
} else { } else {
Toast.makeText(AVChatActivity.this, "录制已结束.", Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(AVChatActivity.this, "录制已结束.");
} }
if (state == AVChatType.AUDIO.getValue()) { if (state == AVChatType.AUDIO.getValue()) {
avChatAudioUI.resetRecordTip(); avChatAudioUI.resetRecordTip();
...@@ -465,7 +465,7 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ ...@@ -465,7 +465,7 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ
break; break;
case AVChatControlCommand.SWITCH_AUDIO_TO_VIDEO_REJECT: case AVChatControlCommand.SWITCH_AUDIO_TO_VIDEO_REJECT:
rejectAudioToVideo(); rejectAudioToVideo();
Toast.makeText(AVChatActivity.this, R.string.im_avchat_switch_video_reject, Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(AVChatActivity.this, R.string.im_avchat_switch_video_reject);
break; break;
case AVChatControlCommand.SWITCH_VIDEO_TO_AUDIO: case AVChatControlCommand.SWITCH_VIDEO_TO_AUDIO:
onVideoToAudio(); onVideoToAudio();
...@@ -483,7 +483,7 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ ...@@ -483,7 +483,7 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ
} }
break; break;
default: default:
Toast.makeText(this, "对方发来指令值:" + notification.getControlCommand(), Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(this, "对方发来指令值:" + notification.getControlCommand());
break; break;
} }
} }
...@@ -544,7 +544,7 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ ...@@ -544,7 +544,7 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ
} }
if (client != null) { if (client != null) {
String option = ackInfo.getEvent() == AVChatEventType.CALLEE_ONLINE_CLIENT_ACK_AGREE ? "接听!" : "拒绝!"; String option = ackInfo.getEvent() == AVChatEventType.CALLEE_ONLINE_CLIENT_ACK_AGREE ? "接听!" : "拒绝!";
Toast.makeText(AVChatActivity.this, "通话已在" + client + "端被" + option, Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(AVChatActivity.this, "通话已在" + client + "端被" + option);
} }
finish(); finish();
} }
......
...@@ -4,7 +4,6 @@ import android.app.Activity; ...@@ -4,7 +4,6 @@ import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.util.Pair; import android.util.Pair;
import android.view.View; import android.view.View;
import android.widget.Toast;
import com.netease.nimlib.sdk.ResponseCode; import com.netease.nimlib.sdk.ResponseCode;
import com.netease.nimlib.sdk.avchat.AVChatCallback; import com.netease.nimlib.sdk.avchat.AVChatCallback;
...@@ -17,7 +16,6 @@ import com.netease.nimlib.sdk.avchat.model.AVChatParameters; ...@@ -17,7 +16,6 @@ import com.netease.nimlib.sdk.avchat.model.AVChatParameters;
import com.netease.nimlib.sdk.avchat.video.AVChatCameraCapturer; import com.netease.nimlib.sdk.avchat.video.AVChatCameraCapturer;
import com.netease.nimlib.sdk.avchat.video.AVChatVideoCapturerFactory; import com.netease.nimlib.sdk.avchat.video.AVChatVideoCapturerFactory;
import com.yidianling.avchatkit.AVChatKit; import com.yidianling.avchatkit.AVChatKit;
import com.yidianling.im.R;
import com.yidianling.avchatkit.common.log.LogUtil; import com.yidianling.avchatkit.common.log.LogUtil;
import com.yidianling.avchatkit.common.widgets.MultiSelectDialog; import com.yidianling.avchatkit.common.widgets.MultiSelectDialog;
import com.yidianling.avchatkit.config.AVChatConfigs; import com.yidianling.avchatkit.config.AVChatConfigs;
...@@ -26,6 +24,8 @@ import com.yidianling.avchatkit.constant.AVChatExitCode; ...@@ -26,6 +24,8 @@ import com.yidianling.avchatkit.constant.AVChatExitCode;
import com.yidianling.avchatkit.constant.CallStateEnum; import com.yidianling.avchatkit.constant.CallStateEnum;
import com.yidianling.avchatkit.module.AVChatControllerCallback; import com.yidianling.avchatkit.module.AVChatControllerCallback;
import com.yidianling.avchatkit.module.AVSwitchListener; import com.yidianling.avchatkit.module.AVSwitchListener;
import com.yidianling.common.tools.ToastUtil;
import com.yidianling.im.R;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
...@@ -134,9 +134,9 @@ public class AVChatController { ...@@ -134,9 +134,9 @@ public class AVChatController {
LogUtil.d(TAG, "avChat call failed code->" + code); LogUtil.d(TAG, "avChat call failed code->" + code);
if (code == ResponseCode.RES_FORBIDDEN) { if (code == ResponseCode.RES_FORBIDDEN) {
Toast.makeText(context, R.string.im_avchat_no_permission, Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(context, R.string.im_avchat_no_permission);
} else { } else {
Toast.makeText(context, R.string.im_avchat_call_failed, Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(context, R.string.im_avchat_call_failed);
} }
closeRtc(avChatType == AVChatType.VIDEO ? CallStateEnum.VIDEO : CallStateEnum.AUDIO); closeRtc(avChatType == AVChatType.VIDEO ? CallStateEnum.VIDEO : CallStateEnum.AUDIO);
callback.onFailed(code, ""); callback.onFailed(code, "");
...@@ -178,9 +178,9 @@ public class AVChatController { ...@@ -178,9 +178,9 @@ public class AVChatController {
@Override @Override
public void onFailed(int code) { public void onFailed(int code) {
if (code == -1) { if (code == -1) {
Toast.makeText(context, "本地音视频启动失败", Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(context, "本地音视频启动失败");
} else { } else {
Toast.makeText(context, "建立连接失败", Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(context, "建立连接失败");
} }
LogUtil.e(TAG, "accept onFailed->" + code); LogUtil.e(TAG, "accept onFailed->" + code);
handleAcceptFailed(avChatType == AVChatType.VIDEO ? handleAcceptFailed(avChatType == AVChatType.VIDEO ?
...@@ -416,31 +416,31 @@ public class AVChatController { ...@@ -416,31 +416,31 @@ public class AVChatController {
case AVChatExitCode.NET_CHANGE: // 网络切换 case AVChatExitCode.NET_CHANGE: // 网络切换
case AVChatExitCode.NET_ERROR: // 网络异常 case AVChatExitCode.NET_ERROR: // 网络异常
case AVChatExitCode.CONFIG_ERROR: // 服务器返回数据错误 case AVChatExitCode.CONFIG_ERROR: // 服务器返回数据错误
Toast.makeText(context, R.string.im_avchat_net_error_then_quit, Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(context, R.string.im_avchat_net_error_then_quit);
break; break;
case AVChatExitCode.REJECT: case AVChatExitCode.REJECT:
Toast.makeText(context, R.string.im_avchat_call_reject, Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(context, R.string.im_avchat_call_reject);
break; break;
case AVChatExitCode.PEER_HANGUP: case AVChatExitCode.PEER_HANGUP:
case AVChatExitCode.HANGUP: case AVChatExitCode.HANGUP:
if (isCallEstablish.get()) { if (isCallEstablish.get()) {
Toast.makeText(context, R.string.im_avchat_call_finish, Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(context, R.string.im_avchat_call_finish);
} }
break; break;
case AVChatExitCode.PEER_BUSY: case AVChatExitCode.PEER_BUSY:
Toast.makeText(context, R.string.im_avchat_peer_busy, Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(context, R.string.im_avchat_peer_busy);
break; break;
case AVChatExitCode.PROTOCOL_INCOMPATIBLE_PEER_LOWER: case AVChatExitCode.PROTOCOL_INCOMPATIBLE_PEER_LOWER:
Toast.makeText(context, R.string.im_avchat_peer_protocol_low_version, Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(context, R.string.im_avchat_peer_protocol_low_version);
break; break;
case AVChatExitCode.PROTOCOL_INCOMPATIBLE_SELF_LOWER: case AVChatExitCode.PROTOCOL_INCOMPATIBLE_SELF_LOWER:
Toast.makeText(context, R.string.im_avchat_local_protocol_low_version, Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(context, R.string.im_avchat_local_protocol_low_version);
break; break;
case AVChatExitCode.INVALIDE_CHANNELID: case AVChatExitCode.INVALIDE_CHANNELID:
Toast.makeText(context, R.string.im_avchat_invalid_channel_id, Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(context, R.string.im_avchat_invalid_channel_id);
break; break;
case AVChatExitCode.LOCAL_CALL_BUSY: case AVChatExitCode.LOCAL_CALL_BUSY:
Toast.makeText(context, R.string.im_avchat_local_call_busy, Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(context, R.string.im_avchat_local_call_busy);
break; break;
default: default:
break; break;
......
...@@ -14,7 +14,6 @@ import android.view.Window; ...@@ -14,7 +14,6 @@ import android.view.Window;
import android.view.WindowManager; import android.view.WindowManager;
import android.widget.RelativeLayout; import android.widget.RelativeLayout;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import com.netease.nimlib.sdk.NIMClient; import com.netease.nimlib.sdk.NIMClient;
import com.netease.nimlib.sdk.Observer; import com.netease.nimlib.sdk.Observer;
...@@ -37,7 +36,6 @@ import com.netease.nimlib.sdk.avchat.video.AVChatCameraCapturer; ...@@ -37,7 +36,6 @@ import com.netease.nimlib.sdk.avchat.video.AVChatCameraCapturer;
import com.netease.nimlib.sdk.avchat.video.AVChatVideoCapturerFactory; import com.netease.nimlib.sdk.avchat.video.AVChatVideoCapturerFactory;
import com.netease.nrtc.video.render.IVideoRender; import com.netease.nrtc.video.render.IVideoRender;
import com.yidianling.avchatkit.AVChatKit; import com.yidianling.avchatkit.AVChatKit;
import com.yidianling.im.R;
import com.yidianling.avchatkit.TeamAVChatProfile; import com.yidianling.avchatkit.TeamAVChatProfile;
import com.yidianling.avchatkit.common.activity.AVChatBaseUI; import com.yidianling.avchatkit.common.activity.AVChatBaseUI;
import com.yidianling.avchatkit.common.log.LogUtil; import com.yidianling.avchatkit.common.log.LogUtil;
...@@ -55,6 +53,8 @@ import com.yidianling.avchatkit.teamavchat.TeamAVChatVoiceMuteDialog; ...@@ -55,6 +53,8 @@ import com.yidianling.avchatkit.teamavchat.TeamAVChatVoiceMuteDialog;
import com.yidianling.avchatkit.teamavchat.adapter.TeamAVChatAdapter; import com.yidianling.avchatkit.teamavchat.adapter.TeamAVChatAdapter;
import com.yidianling.avchatkit.teamavchat.module.SimpleAVChatStateObserver; import com.yidianling.avchatkit.teamavchat.module.SimpleAVChatStateObserver;
import com.yidianling.avchatkit.teamavchat.module.TeamAVChatItem; import com.yidianling.avchatkit.teamavchat.module.TeamAVChatItem;
import com.yidianling.common.tools.ToastUtil;
import com.yidianling.im.R;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -830,7 +830,7 @@ public class TeamAVChatActivity extends AVChatBaseUI { ...@@ -830,7 +830,7 @@ public class TeamAVChatActivity extends AVChatBaseUI {
@OnMPermissionDenied(BASIC_PERMISSION_REQUEST_CODE) @OnMPermissionDenied(BASIC_PERMISSION_REQUEST_CODE)
@OnMPermissionNeverAskAgain(BASIC_PERMISSION_REQUEST_CODE) @OnMPermissionNeverAskAgain(BASIC_PERMISSION_REQUEST_CODE)
public void onBasicPermissionFailed() { public void onBasicPermissionFailed() {
Toast.makeText(this, "音视频通话所需权限未全部授权,部分功能可能无法正常运行!", Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(this, "音视频通话所需权限未全部授权,部分功能可能无法正常运行!");
onPermissionChecked(); onPermissionChecked();
} }
...@@ -839,7 +839,7 @@ public class TeamAVChatActivity extends AVChatBaseUI { ...@@ -839,7 +839,7 @@ public class TeamAVChatActivity extends AVChatBaseUI {
*/ */
private void showToast(String content) { private void showToast(String content) {
Toast.makeText(TeamAVChatActivity.this, content, Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(TeamAVChatActivity.this, content);
} }
/** /**
......
...@@ -342,7 +342,7 @@ public class AVChatAudioUI implements View.OnClickListener, ToggleListener { ...@@ -342,7 +342,7 @@ public class AVChatAudioUI implements View.OnClickListener, ToggleListener {
doRecording(); doRecording();
} else if (i == R.id.avchat_audio_switch_video) { } else if (i == R.id.avchat_audio_switch_video) {
if (isInSwitch) { if (isInSwitch) {
Toast.makeText(context, R.string.im_avchat_in_switch, Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(context, R.string.im_avchat_in_switch);
} else { } else {
avChatController.switchAudioToVideo(avSwitchListener); avChatController.switchAudioToVideo(avSwitchListener);
} }
......
...@@ -631,7 +631,7 @@ public class AVChatVideoUI implements View.OnClickListener, ToggleListener { ...@@ -631,7 +631,7 @@ public class AVChatVideoUI implements View.OnClickListener, ToggleListener {
doRefuseCall(); doRefuseCall();
} else if (i == R.id.receive) { } else if (i == R.id.receive) {
if (isInReceiveing || avChatController.isCallEstablish.get()) { if (isInReceiveing || avChatController.isCallEstablish.get()) {
Toast.makeText(context, R.string.im_avchat_in_switch, Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(context, R.string.im_avchat_in_switch);
} else { } else {
requestPermission(); requestPermission();
} }
...@@ -647,7 +647,7 @@ public class AVChatVideoUI implements View.OnClickListener, ToggleListener { ...@@ -647,7 +647,7 @@ public class AVChatVideoUI implements View.OnClickListener, ToggleListener {
doToggleRecord(); doToggleRecord();
} else if (i == R.id.avchat_video_switch_audio) { } else if (i == R.id.avchat_video_switch_audio) {
if (isInSwitch) { if (isInSwitch) {
Toast.makeText(context, R.string.im_avchat_in_switch, Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(context, R.string.im_avchat_in_switch);
} else { } else {
avChatController.switchVideoToAudio(avSwitchListener); avChatController.switchVideoToAudio(avSwitchListener);
} }
......
...@@ -10,7 +10,6 @@ import android.net.Uri; ...@@ -10,7 +10,6 @@ import android.net.Uri;
import android.support.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils; import android.text.TextUtils;
import android.view.View; import android.view.View;
import android.widget.Toast;
import com.google.gson.internal.LinkedTreeMap; import com.google.gson.internal.LinkedTreeMap;
import com.netease.nimlib.sdk.NIMClient; import com.netease.nimlib.sdk.NIMClient;
...@@ -42,6 +41,7 @@ import com.ydl.ydlcommon.view.dialog.CommonDialog; ...@@ -42,6 +41,7 @@ import com.ydl.ydlcommon.view.dialog.CommonDialog;
import com.ydl.ydlcommon.view.dialog.ListDialog; import com.ydl.ydlcommon.view.dialog.ListDialog;
import com.ydl.ydlcommon.view.dialog.NormalDialog; import com.ydl.ydlcommon.view.dialog.NormalDialog;
import com.yidianling.common.tools.ToastUtil; import com.yidianling.common.tools.ToastUtil;
import com.yidianling.im.api.bean.IMExpertBuild;
import com.yidianling.im.api.bean.IMRequestCallback; import com.yidianling.im.api.bean.IMRequestCallback;
import com.yidianling.im.api.event.BlackEvent; import com.yidianling.im.api.event.BlackEvent;
import com.yidianling.im.bean.GetReportReason; import com.yidianling.im.bean.GetReportReason;
...@@ -62,7 +62,6 @@ import com.yidianling.im.session.extension.CustomAttachmentPhoneCallSystemNotice ...@@ -62,7 +62,6 @@ import com.yidianling.im.session.extension.CustomAttachmentPhoneCallSystemNotice
import com.yidianling.im.session.extension.CustomRecommendExpertListMsg; import com.yidianling.im.session.extension.CustomRecommendExpertListMsg;
import com.yidianling.im.session.extension.CustomSystemTips; import com.yidianling.im.session.extension.CustomSystemTips;
import com.yidianling.im.ui.widget.ChatTeamHisDialog; import com.yidianling.im.ui.widget.ChatTeamHisDialog;
import com.yidianling.im.api.bean.IMExpertBuild;
import com.yidianling.uikit.business.session.helper.MessageListPanelHelper; import com.yidianling.uikit.business.session.helper.MessageListPanelHelper;
import com.yidianling.uikit.custom.bridge.IP2PCustomActionHandler; import com.yidianling.uikit.custom.bridge.IP2PCustomActionHandler;
import com.yidianling.uikit.custom.http.response.RecommendExpertBean; import com.yidianling.uikit.custom.http.response.RecommendExpertBean;
...@@ -450,10 +449,10 @@ public class P2PCustomActionHandlerImpl implements IP2PCustomActionHandler { ...@@ -450,10 +449,10 @@ public class P2PCustomActionHandlerImpl implements IP2PCustomActionHandler {
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe(resp -> { .subscribe(resp -> {
if (resp.code == 0) { if (resp.code == 0) {
Toast.makeText(activity, "举报成功", Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(activity, "举报成功");
dialog.dismiss(); dialog.dismiss();
} else { } else {
Toast.makeText(activity, resp.msg, Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(activity, resp.msg);
dialog.dismiss(); dialog.dismiss();
} }
}, throwable -> { }, throwable -> {
......
...@@ -10,7 +10,6 @@ import android.os.Handler; ...@@ -10,7 +10,6 @@ import android.os.Handler;
import android.provider.MediaStore; import android.provider.MediaStore;
import android.support.v4.view.PagerAdapter; import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewCompat; import android.support.v4.view.ViewCompat;
import android.support.v4.view.ViewPager;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
...@@ -31,6 +30,7 @@ import com.netease.nimlib.sdk.msg.constant.AttachStatusEnum; ...@@ -31,6 +30,7 @@ import com.netease.nimlib.sdk.msg.constant.AttachStatusEnum;
import com.netease.nimlib.sdk.msg.constant.MsgDirectionEnum; import com.netease.nimlib.sdk.msg.constant.MsgDirectionEnum;
import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum; import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum;
import com.netease.nimlib.sdk.msg.model.IMMessage; import com.netease.nimlib.sdk.msg.model.IMMessage;
import com.yidianling.im.R;
import com.yidianling.nimbase.common.ToastHelper; import com.yidianling.nimbase.common.ToastHelper;
import com.yidianling.nimbase.common.activity.ToolBarOptions; import com.yidianling.nimbase.common.activity.ToolBarOptions;
import com.yidianling.nimbase.common.activity.UI; import com.yidianling.nimbase.common.activity.UI;
...@@ -41,7 +41,7 @@ import com.yidianling.nimbase.common.util.file.AttachmentStore; ...@@ -41,7 +41,7 @@ import com.yidianling.nimbase.common.util.file.AttachmentStore;
import com.yidianling.nimbase.common.util.media.BitmapDecoder; import com.yidianling.nimbase.common.util.media.BitmapDecoder;
import com.yidianling.nimbase.common.util.media.ImageUtil; import com.yidianling.nimbase.common.util.media.ImageUtil;
import com.yidianling.nimbase.common.util.storage.StorageUtil; import com.yidianling.nimbase.common.util.storage.StorageUtil;
import com.yidianling.im.R; import com.yidianling.uikit.business.session.view.ImageOriginPager;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -76,7 +76,7 @@ public class WatchMessagePictureActivity extends UI { ...@@ -76,7 +76,7 @@ public class WatchMessagePictureActivity extends UI {
private ImageView simpleImageView; private ImageView simpleImageView;
private int mode; private int mode;
protected CustomAlertDialog alertDialog; protected CustomAlertDialog alertDialog;
private ViewPager imageViewPager; private ImageOriginPager imageImageOriginPager;
private PagerAdapter adapter; private PagerAdapter adapter;
private AbortableFuture downloadFuture; private AbortableFuture downloadFuture;
...@@ -123,7 +123,7 @@ public class WatchMessagePictureActivity extends UI { ...@@ -123,7 +123,7 @@ public class WatchMessagePictureActivity extends UI {
@Override @Override
protected void onDestroy() { protected void onDestroy() {
registerObservers(false); registerObservers(false);
imageViewPager.setAdapter(null); imageImageOriginPager.setAdapter(null);
if (downloadFuture != null) { if (downloadFuture != null) {
downloadFuture.abort(); downloadFuture.abort();
downloadFuture = null; downloadFuture = null;
...@@ -135,7 +135,7 @@ public class WatchMessagePictureActivity extends UI { ...@@ -135,7 +135,7 @@ public class WatchMessagePictureActivity extends UI {
alertDialog = new CustomAlertDialog(this); alertDialog = new CustomAlertDialog(this);
loadingLayout = findViewById(R.id.loading_layout); loadingLayout = findViewById(R.id.loading_layout);
imageViewPager = (ViewPager) findViewById(R.id.view_pager_image); imageImageOriginPager = (ImageOriginPager) findViewById(R.id.view_pager_image);
simpleImageView = (ImageView) findViewById(R.id.simple_image_view); simpleImageView = (ImageView) findViewById(R.id.simple_image_view);
if (mode == MODE_GIF) { if (mode == MODE_GIF) {
...@@ -150,10 +150,10 @@ public class WatchMessagePictureActivity extends UI { ...@@ -150,10 +150,10 @@ public class WatchMessagePictureActivity extends UI {
} }
}); });
imageViewPager.setVisibility(View.GONE); imageImageOriginPager.setVisibility(View.GONE);
} else if (mode == MODE_NOMARL) { } else if (mode == MODE_NOMARL) {
simpleImageView.setVisibility(View.GONE); simpleImageView.setVisibility(View.GONE);
imageViewPager.setVisibility(View.VISIBLE); imageImageOriginPager.setVisibility(View.VISIBLE);
} }
} }
...@@ -184,7 +184,7 @@ public class WatchMessagePictureActivity extends UI { ...@@ -184,7 +184,7 @@ public class WatchMessagePictureActivity extends UI {
} }
// 查询并显示图片,带viewPager // 查询并显示图片,带ImageOriginPager
private void queryImageMessages() { private void queryImageMessages() {
IMMessage anchor = MessageBuilder.createEmptyMessage(message.getSessionId(), message.getSessionType(), 0); IMMessage anchor = MessageBuilder.createEmptyMessage(message.getSessionId(), message.getSessionType(), 0);
NIMClient.getService(MsgService.class).queryMessageListByType(MsgTypeEnum.image, anchor, Integer.MAX_VALUE).setCallback(new RequestCallback<List<IMMessage>>() { NIMClient.getService(MsgService.class).queryMessageListByType(MsgTypeEnum.image, anchor, Integer.MAX_VALUE).setCallback(new RequestCallback<List<IMMessage>>() {
...@@ -198,7 +198,7 @@ public class WatchMessagePictureActivity extends UI { ...@@ -198,7 +198,7 @@ public class WatchMessagePictureActivity extends UI {
// imageMsgList.addAll(param); // imageMsgList.addAll(param);
Collections.reverse(imageMsgList); Collections.reverse(imageMsgList);
setDisplayIndex(); setDisplayIndex();
setViewPagerAdapter(); setImageOriginPagerAdapter();
} }
@Override @Override
...@@ -228,7 +228,7 @@ public class WatchMessagePictureActivity extends UI { ...@@ -228,7 +228,7 @@ public class WatchMessagePictureActivity extends UI {
return (t1.getUuid().equals(t2.getUuid())); return (t1.getUuid().equals(t2.getUuid()));
} }
private void setViewPagerAdapter() { private void setImageOriginPagerAdapter() {
adapter = new PagerAdapter() { adapter = new PagerAdapter() {
@Override @Override
public int getCount() { public int getCount() {
...@@ -263,7 +263,7 @@ public class WatchMessagePictureActivity extends UI { ...@@ -263,7 +263,7 @@ public class WatchMessagePictureActivity extends UI {
layout.setTag(position); layout.setTag(position);
if (position == firstDisplayImageIndex) { if (position == firstDisplayImageIndex) {
onViewPagerSelected(position); onImageOriginPagerSelected(position);
} }
return layout; return layout;
...@@ -275,15 +275,15 @@ public class WatchMessagePictureActivity extends UI { ...@@ -275,15 +275,15 @@ public class WatchMessagePictureActivity extends UI {
} }
}; };
imageViewPager.setAdapter(adapter); imageImageOriginPager.setAdapter(adapter);
imageViewPager.setOffscreenPageLimit(2); imageImageOriginPager.setOffscreenPageLimit(2);
imageViewPager.setCurrentItem(firstDisplayImageIndex); imageImageOriginPager.setCurrentItem(firstDisplayImageIndex);
imageViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { imageImageOriginPager.setOnPageChangeListener(new ImageOriginPager.OnPageChangeListener() {
@Override @Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
if (positionOffset == 0f && newPageSelected) { if (positionOffset == 0f && newPageSelected) {
newPageSelected = false; newPageSelected = false;
onViewPagerSelected(position); onImageOriginPagerSelected(position);
} }
} }
...@@ -299,7 +299,7 @@ public class WatchMessagePictureActivity extends UI { ...@@ -299,7 +299,7 @@ public class WatchMessagePictureActivity extends UI {
}); });
} }
private void onViewPagerSelected(int position) { private void onImageOriginPagerSelected(int position) {
if (downloadFuture != null) { if (downloadFuture != null) {
downloadFuture.abort(); downloadFuture.abort();
downloadFuture = null; downloadFuture = null;
...@@ -310,9 +310,9 @@ public class WatchMessagePictureActivity extends UI { ...@@ -310,9 +310,9 @@ public class WatchMessagePictureActivity extends UI {
// 初始化每个view的image // 初始化每个view的image
protected void updateCurrentImageView(final int position) { protected void updateCurrentImageView(final int position) {
View currentLayout = imageViewPager.findViewWithTag(position); View currentLayout = imageImageOriginPager.findViewWithTag(position);
if (currentLayout == null) { if (currentLayout == null) {
ViewCompat.postOnAnimation(imageViewPager, new Runnable() { ViewCompat.postOnAnimation(imageImageOriginPager, new Runnable() {
@Override @Override
public void run() { public void run() {
......
...@@ -5,7 +5,6 @@ import android.content.Intent; ...@@ -5,7 +5,6 @@ import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.view.WindowManager; import android.view.WindowManager;
import android.widget.Toast;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
...@@ -16,12 +15,13 @@ import com.netease.nimlib.sdk.msg.MsgServiceObserve; ...@@ -16,12 +15,13 @@ import com.netease.nimlib.sdk.msg.MsgServiceObserve;
import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum; import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum;
import com.netease.nimlib.sdk.msg.model.CustomNotification; import com.netease.nimlib.sdk.msg.model.CustomNotification;
import com.netease.nimlib.sdk.msg.model.IMMessage; import com.netease.nimlib.sdk.msg.model.IMMessage;
import com.yidianling.common.tools.ToastUtil;
import com.yidianling.im.R;
import com.yidianling.nimbase.api.model.session.SessionCustomization; import com.yidianling.nimbase.api.model.session.SessionCustomization;
import com.yidianling.nimbase.api.model.user.UserInfoObserver; import com.yidianling.nimbase.api.model.user.UserInfoObserver;
import com.yidianling.nimbase.business.session.constant.Extras; import com.yidianling.nimbase.business.session.constant.Extras;
import com.yidianling.nimbase.common.ui.recyclerview.adapter.BaseFetchLoadAdapter; import com.yidianling.nimbase.common.ui.recyclerview.adapter.BaseFetchLoadAdapter;
import com.yidianling.nimbase.common.util.log.LogUtil; import com.yidianling.nimbase.common.util.log.LogUtil;
import com.yidianling.im.R;
import com.yidianling.uikit.api.NimUIKit; import com.yidianling.uikit.api.NimUIKit;
import com.yidianling.uikit.business.session.fragment.YDLMessageFragment; import com.yidianling.uikit.business.session.fragment.YDLMessageFragment;
import com.yidianling.uikit.custom.bridge.ActionHandlerStorage; import com.yidianling.uikit.custom.bridge.ActionHandlerStorage;
...@@ -176,9 +176,9 @@ public class YDLP2PMessageActivity extends YDLBaseMessageActivity { ...@@ -176,9 +176,9 @@ public class YDLP2PMessageActivity extends YDLBaseMessageActivity {
int id = json.getIntValue("id"); int id = json.getIntValue("id");
if (id == 1) { if (id == 1) {
// 正在输入 // 正在输入
Toast.makeText(this, "对方正在输入...", Toast.LENGTH_LONG).show(); ToastUtil.toastShort(this, "对方正在输入...");
} else { } else {
Toast.makeText(this, "command: " + content, Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(this, "command: " + content);
} }
} catch (Exception e) { } catch (Exception e) {
......
...@@ -7,7 +7,6 @@ import android.os.Bundle; ...@@ -7,7 +7,6 @@ import android.os.Bundle;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import com.netease.nimlib.sdk.NIMClient; import com.netease.nimlib.sdk.NIMClient;
import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum; import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum;
...@@ -16,6 +15,8 @@ import com.netease.nimlib.sdk.team.constant.TeamTypeEnum; ...@@ -16,6 +15,8 @@ import com.netease.nimlib.sdk.team.constant.TeamTypeEnum;
import com.netease.nimlib.sdk.team.model.Team; import com.netease.nimlib.sdk.team.model.Team;
import com.netease.nimlib.sdk.team.model.TeamMember; import com.netease.nimlib.sdk.team.model.TeamMember;
import com.netease.nimlib.sdk.uinfo.UserService; import com.netease.nimlib.sdk.uinfo.UserService;
import com.yidianling.common.tools.ToastUtil;
import com.yidianling.im.R;
import com.yidianling.nimbase.api.model.SimpleCallback; import com.yidianling.nimbase.api.model.SimpleCallback;
import com.yidianling.nimbase.api.model.contact.ContactChangedObserver; import com.yidianling.nimbase.api.model.contact.ContactChangedObserver;
import com.yidianling.nimbase.api.model.session.SessionCustomization; import com.yidianling.nimbase.api.model.session.SessionCustomization;
...@@ -23,7 +24,6 @@ import com.yidianling.nimbase.api.model.team.TeamDataChangedObserver; ...@@ -23,7 +24,6 @@ import com.yidianling.nimbase.api.model.team.TeamDataChangedObserver;
import com.yidianling.nimbase.api.model.team.TeamMemberDataChangedObserver; import com.yidianling.nimbase.api.model.team.TeamMemberDataChangedObserver;
import com.yidianling.nimbase.business.preference.UserPreferences; import com.yidianling.nimbase.business.preference.UserPreferences;
import com.yidianling.nimbase.business.session.constant.Extras; import com.yidianling.nimbase.business.session.constant.Extras;
import com.yidianling.im.R;
import com.yidianling.uikit.api.NimUIKit; import com.yidianling.uikit.api.NimUIKit;
import com.yidianling.uikit.business.session.fragment.YDLMessageFragment; import com.yidianling.uikit.business.session.fragment.YDLMessageFragment;
import com.yidianling.uikit.business.session.fragment.YDLTeamMessageFragment; import com.yidianling.uikit.business.session.fragment.YDLTeamMessageFragment;
...@@ -200,7 +200,7 @@ public class YDLTeamMessageActivity extends YDLBaseMessageActivity { ...@@ -200,7 +200,7 @@ public class YDLTeamMessageActivity extends YDLBaseMessageActivity {
} }
private void onRequestTeamInfoFailed() { private void onRequestTeamInfoFailed() {
Toast.makeText(YDLTeamMessageActivity.this, "获取群组信息失败!", Toast.LENGTH_SHORT); ToastUtil.toastShort(YDLTeamMessageActivity.this, "获取群组信息失败!");
finish(); finish();
} }
......
...@@ -26,7 +26,7 @@ public class YDLTeamMessageFragment extends YDLMessageFragment { ...@@ -26,7 +26,7 @@ public class YDLTeamMessageFragment extends YDLMessageFragment {
public boolean isAllowSendMessage(IMMessage message) { public boolean isAllowSendMessage(IMMessage message) {
TeamMember teamMember= TeamDataCache.getInstance().getTeamMember(team.getId(), NimUIKit.getAccount()); TeamMember teamMember= TeamDataCache.getInstance().getTeamMember(team.getId(), NimUIKit.getAccount());
if (team == null || !team.isMyTeam()) { if (team == null || !team.isMyTeam()) {
Toast.makeText(getActivity(), R.string.im_team_send_message_not_allow, Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(getActivity(), R.string.im_team_send_message_not_allow);
return false; return false;
}else if (team !=null && team.isAllMute() && teamMember.getType()!= TeamMemberType.Owner && teamMember.getType()!=TeamMemberType.Manager){ }else if (team !=null && team.isAllMute() && teamMember.getType()!= TeamMemberType.Owner && teamMember.getType()!=TeamMemberType.Manager){
ToastUtil.toastShort("管理员开启了全员禁言哦~"); ToastUtil.toastShort("管理员开启了全员禁言哦~");
......
...@@ -1070,7 +1070,7 @@ public class InputPanel implements IEmoticonSelectedListener, IAudioRecordCallba ...@@ -1070,7 +1070,7 @@ public class InputPanel implements IEmoticonSelectedListener, IAudioRecordCallba
// 发送文本消息 // 发送文本消息
public void onTextMessageSendButtonPressed(String text) { public void onTextMessageSendButtonPressed(String text) {
if (text.isEmpty()) { if (text.isEmpty()) {
Toast.makeText(container.activity, "请输入后再发送", Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(container.activity, "请输入后再发送");
return; return;
} }
IMMessage textMessage = createTextMessage(text); IMMessage textMessage = createTextMessage(text);
......
...@@ -14,7 +14,6 @@ import android.util.Log; ...@@ -14,7 +14,6 @@ import android.util.Log;
import android.util.Pair; import android.util.Pair;
import android.view.View; import android.view.View;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.Toast;
import com.netease.nimlib.sdk.NIMClient; import com.netease.nimlib.sdk.NIMClient;
import com.netease.nimlib.sdk.NIMSDK; import com.netease.nimlib.sdk.NIMSDK;
...@@ -41,6 +40,7 @@ import com.netease.nimlib.sdk.msg.model.TeamMessageReceipt; ...@@ -41,6 +40,7 @@ import com.netease.nimlib.sdk.msg.model.TeamMessageReceipt;
import com.netease.nimlib.sdk.robot.model.RobotAttachment; import com.netease.nimlib.sdk.robot.model.RobotAttachment;
import com.netease.nimlib.sdk.team.constant.TeamMemberType; import com.netease.nimlib.sdk.team.constant.TeamMemberType;
import com.netease.nimlib.sdk.team.model.TeamMember; import com.netease.nimlib.sdk.team.model.TeamMember;
import com.yidianling.common.tools.ToastUtil;
import com.yidianling.im.R; import com.yidianling.im.R;
import com.yidianling.nimbase.api.model.main.CustomPushContentProvider; import com.yidianling.nimbase.api.model.main.CustomPushContentProvider;
import com.yidianling.nimbase.api.model.user.UserInfoObserver; import com.yidianling.nimbase.api.model.user.UserInfoObserver;
...@@ -1008,13 +1008,13 @@ public class MessageListPanelEx { ...@@ -1008,13 +1008,13 @@ public class MessageListPanelEx {
values.put(MediaStore.Images.Media.MIME_TYPE, C.MimeType.MIME_JPEG); values.put(MediaStore.Images.Media.MIME_TYPE, C.MimeType.MIME_JPEG);
values.put(MediaStore.Images.Media.DATA, dstPath); values.put(MediaStore.Images.Media.DATA, dstPath);
container.activity.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); container.activity.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Toast.makeText(container.activity, container.activity.getString(R.string.im_picture_save_to), Toast.LENGTH_LONG).show(); ToastUtil.toastShort(container.activity, container.activity.getString(R.string.im_picture_save_to));
} catch (Exception e) { } catch (Exception e) {
// may be java.lang.UnsupportedOperationException // may be java.lang.UnsupportedOperationException
Toast.makeText(container.activity, container.activity.getString(R.string.im_picture_save_fail), Toast.LENGTH_LONG).show(); ToastUtil.toastShort(container.activity, container.activity.getString(R.string.im_picture_save_fail));
} }
} else { } else {
Toast.makeText(container.activity, container.activity.getString(R.string.im_picture_save_fail), Toast.LENGTH_LONG).show(); ToastUtil.toastShort(container.activity, container.activity.getString(R.string.im_picture_save_fail));
} }
} }
}); });
......
package com.yidianling.uikit.business.session.view; package com.yidianling.uikit.business.session.view;
import android.content.Context; import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent; import android.view.MotionEvent;
/** /**
...@@ -11,37 +9,35 @@ import android.view.MotionEvent; ...@@ -11,37 +9,35 @@ import android.view.MotionEvent;
* Des:修复Android 系统级别bug * Des:修复Android 系统级别bug
* *
* Android 处理图片放大缩小时报错java.lang.IllegalArgumentException: pointerIndex out of range pointerIndex=-1 * Android 处理图片放大缩小时报错java.lang.IllegalArgumentException: pointerIndex out of range pointerIndex=-1
* https://github.com/chrisbanes/PhotoView/issues/31
*/ */
public class ImageOriginPager extends ViewPager { public class ImageOriginPager extends android.support.v4.view.ViewPager {
public ImageOriginPager(Context context) { public ImageOriginPager(Context context) {
super (context); super(context);
} }
public ImageOriginPager(Context context, AttributeSet attrs) { public ImageOriginPager(Context context, AttributeSet attrs) {
super (context, attrs); super(context, attrs);
} }
@Override @Override
public boolean onTouchEvent(MotionEvent event) { public boolean onTouchEvent(MotionEvent ev) {
try { try {
super.onTouchEvent(event); return super.onTouchEvent(ev);
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException ex) {
Log.e( "ImageOriginPager-error" , "IllegalArgumentException 错误被活捉了!"); ex.printStackTrace();
e.printStackTrace();
} }
return false; return false;
} }
@Override @Override
public boolean onInterceptTouchEvent(MotionEvent event) { public boolean onInterceptTouchEvent(MotionEvent ev) {
try { try {
super.onInterceptTouchEvent(event); return super.onInterceptTouchEvent(ev);
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException ex) {
Log.e( "ImageOriginPager-error" , "IllegalArgumentException 错误被活捉了!"); ex.printStackTrace();
e.printStackTrace();
} }
return false ; return false;
} }
} }
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
<!-- <include layout="@layout/watch_picture_show_more_action_layout" /> --> <!-- <include layout="@layout/watch_picture_show_more_action_layout" /> -->
<android.support.v4.view.ViewPager <com.yidianling.uikit.business.session.view.ImageOriginPager
android:id="@+id/view_pager_image" android:id="@+id/view_pager_image"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"/> android:layout_height="match_parent"/>
......
...@@ -7,7 +7,6 @@ import android.view.ViewGroup ...@@ -7,7 +7,6 @@ import android.view.ViewGroup
import android.widget.BaseAdapter import android.widget.BaseAdapter
import android.widget.ImageView import android.widget.ImageView
import android.widget.TextView import android.widget.TextView
import android.widget.Toast
import com.alibaba.android.arouter.facade.annotation.Route import com.alibaba.android.arouter.facade.annotation.Route
import com.ydl.ydl_image.module.GlideApp import com.ydl.ydl_image.module.GlideApp
import com.ydl.ydl_image.transform.GlideCircleTransform import com.ydl.ydl_image.transform.GlideCircleTransform
...@@ -16,6 +15,7 @@ import com.ydl.ydlcommon.router.YdlCommonOut ...@@ -16,6 +15,7 @@ import com.ydl.ydlcommon.router.YdlCommonOut
import com.ydl.ydlcommon.utils.NetworkParamsUtils import com.ydl.ydlcommon.utils.NetworkParamsUtils
import com.ydl.ydlcommon.utils.remind.HttpErrorUtils import com.ydl.ydlcommon.utils.remind.HttpErrorUtils
import com.ydl.ydlcommon.view.dialog.NormalDialog import com.ydl.ydlcommon.view.dialog.NormalDialog
import com.yidianling.common.tools.ToastUtil
import com.yidianling.im.api.bean.IMRequestCallback import com.yidianling.im.api.bean.IMRequestCallback
import com.yidianling.tests.home.param.RecentCmd import com.yidianling.tests.home.param.RecentCmd
import com.yidianling.tests.router.TestsIn import com.yidianling.tests.router.TestsIn
...@@ -138,7 +138,7 @@ class SelectConversationActivity : BaseActivity() { ...@@ -138,7 +138,7 @@ class SelectConversationActivity : BaseActivity() {
} }
handleData() handleData()
} else { } else {
Toast.makeText(this@SelectConversationActivity, it.msg, Toast.LENGTH_SHORT).show() ToastUtil.toastShort(this@SelectConversationActivity, it.msg)
} }
},{ },{
HttpErrorUtils.handleError(mContext,it) HttpErrorUtils.handleError(mContext,it)
......
...@@ -16,7 +16,6 @@ import android.view.View; ...@@ -16,7 +16,6 @@ import android.view.View;
import android.widget.Button; import android.widget.Button;
import android.widget.RelativeLayout; import android.widget.RelativeLayout;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.facade.annotation.Route;
import com.mobile.auth.gatewayauth.AuthRegisterViewConfig; import com.mobile.auth.gatewayauth.AuthRegisterViewConfig;
...@@ -26,6 +25,7 @@ import com.mobile.auth.gatewayauth.PhoneNumberAuthHelper; ...@@ -26,6 +25,7 @@ import com.mobile.auth.gatewayauth.PhoneNumberAuthHelper;
import com.mobile.auth.gatewayauth.PreLoginResultListener; import com.mobile.auth.gatewayauth.PreLoginResultListener;
import com.mobile.auth.gatewayauth.TokenResultListener; import com.mobile.auth.gatewayauth.TokenResultListener;
import com.mobile.auth.gatewayauth.model.InitResult; import com.mobile.auth.gatewayauth.model.InitResult;
import com.yidianling.common.tools.ToastUtil;
import com.yidianling.user.R; import com.yidianling.user.R;
@Route(path = "/user/aliAuthDemo") @Route(path = "/user/aliAuthDemo")
...@@ -141,7 +141,7 @@ public class AliAuthDemoActivity extends Activity { ...@@ -141,7 +141,7 @@ public class AliAuthDemoActivity extends Activity {
@Override @Override
public void onPermissionDenied(boolean isRequestUser) { public void onPermissionDenied(boolean isRequestUser) {
Toast.makeText(AliAuthDemoActivity.this, "请允许相关权限", Toast.LENGTH_LONG).show(); ToastUtil.toastShort(AliAuthDemoActivity.this, "请允许相关权限");
} }
}); });
} else { } else {
...@@ -169,7 +169,7 @@ public class AliAuthDemoActivity extends Activity { ...@@ -169,7 +169,7 @@ public class AliAuthDemoActivity extends Activity {
.setCustomInterface(new CustomInterface() { .setCustomInterface(new CustomInterface() {
@Override @Override
public void onClick(Context context) { public void onClick(Context context) {
Toast.makeText(context, "点击自定义控件", Toast.LENGTH_LONG).show(); ToastUtil.toastShort(context, "点击自定义控件");
} }
}).build()); }).build());
showLoadingDialog("正在请求登录Token"); showLoadingDialog("正在请求登录Token");
......
...@@ -14,7 +14,6 @@ import android.text.TextUtils; ...@@ -14,7 +14,6 @@ import android.text.TextUtils;
import android.view.View; import android.view.View;
import android.widget.EditText; import android.widget.EditText;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import com.lzy.imagepicker.ImagePicker; import com.lzy.imagepicker.ImagePicker;
import com.lzy.imagepicker.bean.ImageItem; import com.lzy.imagepicker.bean.ImageItem;
...@@ -38,6 +37,7 @@ import com.ydl.ydlcommon.view.dialog.CommonDialog; ...@@ -38,6 +37,7 @@ import com.ydl.ydlcommon.view.dialog.CommonDialog;
import com.ydl.ydlcommon.view.dialog.ThreeLinesDialog; import com.ydl.ydlcommon.view.dialog.ThreeLinesDialog;
import com.yidianling.common.tools.RxFileTool; import com.yidianling.common.tools.RxFileTool;
import com.yidianling.common.tools.RxImageTool; import com.yidianling.common.tools.RxImageTool;
import com.yidianling.common.tools.ToastUtil;
import com.yidianling.user.GlideImageLoader; import com.yidianling.user.GlideImageLoader;
import com.yidianling.user.LoginHelper; import com.yidianling.user.LoginHelper;
import com.yidianling.user.R; import com.yidianling.user.R;
...@@ -444,7 +444,7 @@ public class FillInfoActivity extends BaseActivity implements View.OnClickListen ...@@ -444,7 +444,7 @@ public class FillInfoActivity extends BaseActivity implements View.OnClickListen
uploadImage(images.get(0).path, 1002); uploadImage(images.get(0).path, 1002);
} else { } else {
Toast.makeText(this, "没有数据", Toast.LENGTH_SHORT).show(); ToastUtil.toastShort(this, "没有数据");
} }
break; break;
} }
......
...@@ -61,7 +61,7 @@ class AudioPlayer private constructor() { ...@@ -61,7 +61,7 @@ class AudioPlayer private constructor() {
} }
val audioSessionId: Int val audioSessionId: Int
get() = mediaPlayer!!.audioSessionId get() = if (mediaPlayer != null)mediaPlayer!!.audioSessionId else 0
val audioPosition: Long val audioPosition: Long
get() = if (isPlaying || isPausing) { get() = if (isPlaying || isPausing) {
......
package com.ydl.ydlnet.client.observer; package com.ydl.ydlnet.client.observer;
import android.text.TextUtils;
import com.ydl.ydlnet.utils.NetToastUtils;
import io.reactivex.disposables.Disposable; import io.reactivex.disposables.Disposable;
/** /**
...@@ -33,9 +31,6 @@ public abstract class CommonObserver<T> extends BaseObserver<T> { ...@@ -33,9 +31,6 @@ public abstract class CommonObserver<T> extends BaseObserver<T> {
@Override @Override
public void doOnError(String errorMsg) { public void doOnError(String errorMsg) {
if (!isHideToast() && !TextUtils.isEmpty(errorMsg)) {
NetToastUtils.showToast(errorMsg);
}
onError(errorMsg); onError(errorMsg);
} }
......
package com.ydl.ydlnet.client.observer; package com.ydl.ydlnet.client.observer;
import android.text.TextUtils;
import com.ydl.ydlnet.client.bean.BaseData; import com.ydl.ydlnet.client.bean.BaseData;
import com.ydl.ydlnet.utils.NetToastUtils;
import io.reactivex.disposables.Disposable; import io.reactivex.disposables.Disposable;
/** /**
...@@ -42,9 +41,6 @@ public abstract class DataObserver<T> extends BaseObserver<BaseData<T>> { ...@@ -42,9 +41,6 @@ public abstract class DataObserver<T> extends BaseObserver<BaseData<T>> {
@Override @Override
public void doOnError(String errorMsg) { public void doOnError(String errorMsg) {
if (!isHideToast() && !TextUtils.isEmpty(errorMsg)) {
NetToastUtils.showToast(errorMsg);
}
onError(errorMsg); onError(errorMsg);
} }
......
package com.ydl.ydlnet.utils;
import android.widget.Toast;
import com.ydl.ydlnet.YDLHttpUtils;
/**
* Created by haorui on 2019-09-02 .
* Des:
*/
public class NetToastUtils {
private static Toast mToast;
/**
* Toast提示
*
* @param msg 提示内容
*/
public static void showToast(String msg) {
if (mToast == null) {
mToast = Toast.makeText(YDLHttpUtils.Companion.getContext(), msg, Toast.LENGTH_SHORT);
} else {
mToast.setText(msg);
}
mToast.show();
}
}
...@@ -87,7 +87,8 @@ dependencies { ...@@ -87,7 +87,8 @@ dependencies {
exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-common' exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-common'
} }
api rootProject.ext.dependencies["ydl-utils"] // api rootProject.ext.dependencies["ydl-utils"]
api project(':ydl-utils')
api rootProject.ext.dependencies["ydl-js"] api rootProject.ext.dependencies["ydl-js"]
api rootProject.ext.dependencies["ydl-net"] api rootProject.ext.dependencies["ydl-net"]
api rootProject.ext.dependencies["ydl-js"] api rootProject.ext.dependencies["ydl-js"]
......
...@@ -11,13 +11,18 @@ import android.os.Build; ...@@ -11,13 +11,18 @@ import android.os.Build;
import android.os.Environment; import android.os.Environment;
import android.provider.DocumentsContract; import android.provider.DocumentsContract;
import android.provider.MediaStore; import android.provider.MediaStore;
import android.text.*; import android.text.Html;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.TextUtils;
import android.text.style.ForegroundColorSpan; import android.text.style.ForegroundColorSpan;
import android.text.style.ImageSpan; import android.text.style.ImageSpan;
import android.view.Display; import android.view.Display;
import android.view.WindowManager; import android.view.WindowManager;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import com.ydl.ydlcommon.base.BaseApp; import com.ydl.ydlcommon.base.BaseApp;
import com.ydl.ydlcommon.view.CenterAlignImageSpan; import com.ydl.ydlcommon.view.CenterAlignImageSpan;
...@@ -31,8 +36,6 @@ import java.util.List; ...@@ -31,8 +36,6 @@ import java.util.List;
public class Utils { public class Utils {
private static long lastClickTime; private static long lastClickTime;
private static Toast mToast;
public synchronized static boolean isFastClick() { public synchronized static boolean isFastClick() {
long time = System.currentTimeMillis(); long time = System.currentTimeMillis();
if (time - lastClickTime < 1000) { if (time - lastClickTime < 1000) {
...@@ -250,23 +253,6 @@ public class Utils { ...@@ -250,23 +253,6 @@ public class Utils {
return ssb; return ssb;
} }
/**
* Toast 展示控制
*
* @param context
* @param msg
* @param duration
*/
public static void showToast(Context context, String msg, int duration) {
if (mToast == null) {
mToast = Toast.makeText(context, msg, duration);
} else {
mToast.setText(msg);
}
mToast.show();
}
/** /**
* 将TextView中带中括号的字体高亮 * 将TextView中带中括号的字体高亮
* *
......
...@@ -3,14 +3,16 @@ package com.ydl.ydlcommon.utils; ...@@ -3,14 +3,16 @@ package com.ydl.ydlcommon.utils;
import android.app.Application; import android.app.Application;
import android.util.Base64; import android.util.Base64;
import android.util.Log; import android.util.Log;
import com.ydl.ydlcommon.base.BaseApp; import com.ydl.ydlcommon.base.BaseApp;
import com.ydl.ydlcommon.utils.remind.ToastHelper; import com.ydl.ydlcommon.utils.remind.ToastHelper;
import com.yidianling.protector.AppProtectorLib; import com.yidianling.protector.AppProtectorLib;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
/** /**
* Created by haorui on 2019/7/10. * Created by haorui on 2019/7/10.
* Des:应用防护措施 * Des:应用防护措施
...@@ -36,7 +38,7 @@ public class YDLAppProtector { ...@@ -36,7 +38,7 @@ public class YDLAppProtector {
Application app = BaseApp.Companion.getApp(); Application app = BaseApp.Companion.getApp();
//检查应用多开 //检查应用多开
handleDetect(AppProtectorLib.checkIsRunningInVirtualApk(app.getPackageName(),null),true,getHint(hint_1)); //handleDetect(AppProtectorLib.checkIsRunningInVirtualApk(app.getPackageName(),null),true,getHint(hint_1));
//模拟器检测 //模拟器检测
handleDetect(AppProtectorLib.checkIsRunningInEmulator(app,null),true,getHint(hint_2)); handleDetect(AppProtectorLib.checkIsRunningInEmulator(app,null),true,getHint(hint_2));
......
...@@ -54,7 +54,7 @@ public class DownloadReceiver extends BroadcastReceiver { ...@@ -54,7 +54,7 @@ public class DownloadReceiver extends BroadcastReceiver {
long[] ids = intent.getLongArrayExtra(DownloadManager.EXTRA_NOTIFICATION_CLICK_DOWNLOAD_IDS); long[] ids = intent.getLongArrayExtra(DownloadManager.EXTRA_NOTIFICATION_CLICK_DOWNLOAD_IDS);
//点击通知栏取消下载 //点击通知栏取消下载
// manager.remove(ids); // manager.remove(ids);
// Toast.makeText(context, "已经取消下载", Toast.LENGTH_SHORT).show(); // ToastUtil.toastShort(context, "已经取消下载");
} }
} }
......
...@@ -3,7 +3,7 @@ package com.yidianling.common.tools; ...@@ -3,7 +3,7 @@ package com.yidianling.common.tools;
import android.content.Context; import android.content.Context;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import android.text.TextUtils; import android.support.annotation.StringRes;
import android.view.Gravity; import android.view.Gravity;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
...@@ -12,6 +12,8 @@ import android.widget.LinearLayout; ...@@ -12,6 +12,8 @@ import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import com.yidianling.common.tools.support.toast.ToastCompat;
/** /**
* 显示Toast工具类 * 显示Toast工具类
* Created by Dog on 2015/4/4. * Created by Dog on 2015/4/4.
...@@ -25,6 +27,22 @@ public class ToastUtil { ...@@ -25,6 +27,22 @@ public class ToastUtil {
private static long oneTime = 0; private static long oneTime = 0;
private static long twoTime = 0; private static long twoTime = 0;
public static void toastShort(Context context, @StringRes Integer resourceId ) {
toastShort(resourceId);
}
public static void toastShort(@StringRes Integer resourceId ) {
try {
String text = RxTool.getContext().getResources().getString(resourceId);
toastShort(text);
} catch (Exception e) {
LogUtil.i(e.getMessage());
}
}
public static void toastShort(Context context, String message) {
safeToast(message);
}
public static void toastShort(String msg) { public static void toastShort(String msg) {
safeToast(msg); safeToast(msg);
...@@ -32,7 +50,7 @@ public class ToastUtil { ...@@ -32,7 +50,7 @@ public class ToastUtil {
private static void safeToast(String msg) { private static void safeToast(String msg) {
if(Looper.myLooper() == Looper.getMainLooper()) { if(Looper.myLooper() == Looper.getMainLooper()) {
toastShort(RxTool.getContext(), msg); showShortToast(RxTool.getContext(), msg);
}else { }else {
//说明不是在主线程 //说明不是在主线程
if (handler == null) { if (handler == null) {
...@@ -44,7 +62,7 @@ public class ToastUtil { ...@@ -44,7 +62,7 @@ public class ToastUtil {
private static void showShortToast(Context mContext, String msg) { private static void showShortToast(Context mContext, String msg) {
if (toast == null) { if (toast == null) {
toast = Toast.makeText(mContext.getApplicationContext(), msg, Toast.LENGTH_SHORT); toast = ToastCompat.makeText(mContext.getApplicationContext(), msg, Toast.LENGTH_SHORT);
centerText(toast.getView()); centerText(toast.getView());
toast.show(); toast.show();
oneTime = System.currentTimeMillis(); oneTime = System.currentTimeMillis();
...@@ -65,16 +83,6 @@ public class ToastUtil { ...@@ -65,16 +83,6 @@ public class ToastUtil {
oneTime = twoTime; oneTime = twoTime;
} }
public static void toastShort(Context context, String message) {
if (context != null && !TextUtils.isEmpty(message)) {
showShortToast(context, message);
// Toast toast = Toast.makeText(context, message, Toast.LENGTH_SHORT);
// toast.setGravity(Gravity.CENTER, 0, 0);
// //toast.setView(getView(context,toast,message));
// centerText(toast.getView());
// toast.show();
}
}
private static View getView(Context context, Toast toast, String message) { private static View getView(Context context, Toast toast, String message) {
View toastView = toast.getView(); View toastView = toast.getView();
...@@ -94,7 +102,7 @@ public class ToastUtil { ...@@ -94,7 +102,7 @@ public class ToastUtil {
public static void toastShortBottom(Context context, String message) { public static void toastShortBottom(Context context, String message) {
if (context != null) { if (context != null) {
Toast toast = Toast.makeText(context, message, Toast.LENGTH_SHORT); Toast toast = ToastCompat.makeText(context, message, Toast.LENGTH_SHORT);
centerText(toast.getView()); centerText(toast.getView());
toast.show(); toast.show();
} }
...@@ -102,7 +110,7 @@ public class ToastUtil { ...@@ -102,7 +110,7 @@ public class ToastUtil {
public static void toastLong(Context context, String message) { public static void toastLong(Context context, String message) {
if (context != null) { if (context != null) {
Toast toast = Toast.makeText(context, message, Toast.LENGTH_LONG); Toast toast = ToastCompat.makeText(context, message, Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER, 0, 0); toast.setGravity(Gravity.CENTER, 0, 0);
centerText(toast.getView()); centerText(toast.getView());
toast.show(); toast.show();
...@@ -112,7 +120,7 @@ public class ToastUtil { ...@@ -112,7 +120,7 @@ public class ToastUtil {
public static void toastImg(Context context, int ImageResourceId) { public static void toastImg(Context context, int ImageResourceId) {
//创建一个Toast提示消息 //创建一个Toast提示消息
Toast toast = Toast.makeText(context, "", Toast.LENGTH_SHORT); Toast toast = ToastCompat.makeText(context, "", Toast.LENGTH_SHORT);
//设置Toast提示消息在屏幕上的位置 //设置Toast提示消息在屏幕上的位置
toast.setGravity(Gravity.CENTER, 0, 0); toast.setGravity(Gravity.CENTER, 0, 0);
//获取Toast提示消息里原有的View //获取Toast提示消息里原有的View
......
package com.yidianling.common.tools.support.toast;
import android.support.annotation.NonNull;
import android.widget.Toast;
/**
* @author drakeet
*/
public interface BadTokenListener {
void onBadTokenCaught(@NonNull Toast toast);
}
package com.yidianling.common.tools.support.toast;
import android.content.Context;
import android.content.ContextWrapper;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.Log;
import android.view.Display;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.Toast;
/**
* @author drakeet
*/
final class SafeToastContext extends ContextWrapper {
private @NonNull Toast toast;
private @Nullable BadTokenListener badTokenListener;
SafeToastContext(@NonNull Context base, @NonNull Toast toast) {
super(base);
this.toast = toast;
}
@Override
public Context getApplicationContext() {
return new ApplicationContextWrapper(getBaseContext().getApplicationContext());
}
public void setBadTokenListener(@NonNull BadTokenListener badTokenListener) {
this.badTokenListener = badTokenListener;
}
private final class ApplicationContextWrapper extends ContextWrapper {
private ApplicationContextWrapper(@NonNull Context base) {
super(base);
}
@Override
public Object getSystemService(@NonNull String name) {
if (Context.WINDOW_SERVICE.equals(name)) {
// noinspection ConstantConditions
return new WindowManagerWrapper((WindowManager) getBaseContext().getSystemService(name));
}
return super.getSystemService(name);
}
}
private final class WindowManagerWrapper implements WindowManager {
private static final String TAG = "WindowManagerWrapper";
private final @NonNull WindowManager base;
private WindowManagerWrapper(@NonNull WindowManager base) {
this.base = base;
}
@Override
public Display getDefaultDisplay() {
return base.getDefaultDisplay();
}
@Override
public void removeViewImmediate(View view) {
base.removeViewImmediate(view);
}
@Override
public void addView(View view, ViewGroup.LayoutParams params) {
try {
Log.d(TAG, "WindowManager's addView(view, params) has been hooked.");
base.addView(view, params);
} catch (BadTokenException e) {
Log.i(TAG, e.getMessage());
if (badTokenListener != null) {
badTokenListener.onBadTokenCaught(toast);
}
} catch (Throwable throwable) {
Log.e(TAG, "[addView]", throwable);
}
}
@Override
public void updateViewLayout(View view, ViewGroup.LayoutParams params) {
base.updateViewLayout(view, params);
}
@Override
public void removeView(View view) {
base.removeView(view);
}
}
}
package com.yidianling.common.tools.support.toast;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.content.res.Resources;
import android.os.Build;
import android.support.annotation.NonNull;
import android.support.annotation.StringRes;
import android.view.View;
import android.widget.Toast;
import java.lang.reflect.Field;
/**
* @author drakeet
* Des: 解决 Android 7.1.1 由 Toast 引起的 BadTokenException Crash
*/
public final class ToastCompat extends Toast {
private final @NonNull Toast toast;
/**
* Construct an empty Toast object. You must call {@link #setView} before you
* can call {@link #show}.
*
* @param context The context to use. Usually your {@link Application}
* or {@link Activity} object.
* @param base The base toast
*/
private ToastCompat(Context context, @NonNull Toast base) {
super(context);
this.toast = base;
}
/**
* Make a standard toast that just contains a text view.
*
* @param context The context to use. Usually your {@link Application}
* or {@link Activity} object.
* @param text The text to show. Can be formatted text.
* @param duration How long to display the message. Either {@link #LENGTH_SHORT} or
* {@link #LENGTH_LONG}
*/
public static ToastCompat makeText(Context context, CharSequence text, int duration) {
// We cannot pass the SafeToastContext to Toast.makeText() because
// the View will unwrap the base context and we are in vain.
@SuppressLint("ShowToast")
Toast toast = Toast.makeText(context, text, duration);
setContextCompat(toast.getView(), new SafeToastContext(context, toast));
return new ToastCompat(context, toast);
}
/**
* Make a standard toast that just contains a text view with the text from a resource.
*
* @param context The context to use. Usually your {@link Application}
* or {@link Activity} object.
* @param resId The resource id of the string resource to use. Can be formatted text.
* @param duration How long to display the message. Either {@link #LENGTH_SHORT} or
* {@link #LENGTH_LONG}
* @throws Resources.NotFoundException if the resource can't be found.
*/
public static Toast makeText(Context context, @StringRes int resId, int duration)
throws Resources.NotFoundException {
return makeText(context, context.getResources().getText(resId), duration);
}
public @NonNull ToastCompat setBadTokenListener(@NonNull BadTokenListener listener) {
final Context context = getView().getContext();
if (context instanceof SafeToastContext) {
((SafeToastContext) context).setBadTokenListener(listener);
}
return this;
}
@Override
public void show() {
toast.show();
}
@Override
public void setDuration(int duration) {
toast.setDuration(duration);
}
@Override
public void setGravity(int gravity, int xOffset, int yOffset) {
toast.setGravity(gravity, xOffset, yOffset);
}
@Override
public void setMargin(float horizontalMargin, float verticalMargin) {
toast.setMargin(horizontalMargin, verticalMargin);
}
@Override
public void setText(int resId) {
toast.setText(resId);
}
@Override
public void setText(CharSequence s) {
toast.setText(s);
}
@Override
public void setView(View view) {
toast.setView(view);
setContextCompat(view, new SafeToastContext(view.getContext(), this));
}
@Override
public float getHorizontalMargin() {
return toast.getHorizontalMargin();
}
@Override
public float getVerticalMargin() {
return toast.getVerticalMargin();
}
@Override
public int getDuration() {
return toast.getDuration();
}
@Override
public int getGravity() {
return toast.getGravity();
}
@Override
public int getXOffset() {
return toast.getXOffset();
}
@Override
public int getYOffset() {
return toast.getYOffset();
}
@Override
public View getView() {
return toast.getView();
}
public @NonNull Toast getBaseToast() {
return toast;
}
private static void setContextCompat(@NonNull View view, @NonNull Context context) {
if (Build.VERSION.SDK_INT == 25) {
try {
Field field = View.class.getDeclaredField("mContext");
field.setAccessible(true);
field.set(view, context);
} catch (Throwable throwable) {
throwable.printStackTrace();
}
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment