Merge remote-tracking branch 'origin/release' into dev
This commit is contained in:
@ -125,10 +125,14 @@ class DefaultJsApi(var context: Context) {
|
||||
handler.complete(false)
|
||||
}
|
||||
})
|
||||
|
||||
LoginHelper.unregisterCallback()
|
||||
}
|
||||
|
||||
override fun onLoginFailure(loginType: LoginTag, error: String) {
|
||||
handler.complete(false)
|
||||
|
||||
LoginHelper.unregisterCallback()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@ -1768,8 +1768,8 @@ object DirectUtils {
|
||||
fun directToSuggestion(
|
||||
context: Context,
|
||||
type: SuggestType,
|
||||
suggestHintType: String,
|
||||
content: String,
|
||||
suggestHintType: String? = null,
|
||||
content: String? = null,
|
||||
isQaFeedback: Boolean = false,
|
||||
qaContentId: String = ""
|
||||
) {
|
||||
@ -1788,8 +1788,8 @@ object DirectUtils {
|
||||
fun directToSuggestion(
|
||||
context: Context,
|
||||
type: SuggestType,
|
||||
suggestHintType: String,
|
||||
content: String,
|
||||
suggestHintType: String? = null,
|
||||
content: String? = null,
|
||||
game: SimpleGameEntity,
|
||||
platform: String = ""
|
||||
) {
|
||||
|
||||
@ -22,8 +22,6 @@ import com.tencent.tauth.Tencent
|
||||
import com.tencent.tauth.UiError
|
||||
import org.json.JSONException
|
||||
import org.json.JSONObject
|
||||
import java.lang.ref.WeakReference
|
||||
|
||||
|
||||
/**
|
||||
* 第三方登录辅助类
|
||||
@ -42,7 +40,7 @@ object LoginHelper {
|
||||
private var mQqLoginListener: IUiListener
|
||||
|
||||
private var mAccessToken: Oauth2AccessToken? = null // weibo
|
||||
private var mLoginCallback: WeakReference<LoginCallback>? = null
|
||||
private var mLoginCallback: LoginCallback? = null
|
||||
|
||||
init {
|
||||
val context = HaloApp.getInstance().application.applicationContext
|
||||
@ -70,11 +68,11 @@ object LoginHelper {
|
||||
)
|
||||
content.put("access_token", o.getString("access_token"))
|
||||
|
||||
mLoginCallback?.get()?.onLoginSuccess(LoginTag.qq, content) // 回调QQ登录成功
|
||||
mLoginCallback?.onLoginSuccess(LoginTag.qq, content) // 回调QQ登录成功
|
||||
} catch (e: JSONException) {
|
||||
val errorString = "QQ登录数据回调异常::$e"
|
||||
|
||||
mLoginCallback?.get()?.onLoginFailure(LoginTag.qq, errorString) // 回调QQ登录失败
|
||||
mLoginCallback?.onLoginFailure(LoginTag.qq, errorString) // 回调QQ登录失败
|
||||
|
||||
Utils.log(errorString)
|
||||
e.printStackTrace()
|
||||
@ -83,7 +81,7 @@ object LoginHelper {
|
||||
}
|
||||
|
||||
override fun onCancel() {
|
||||
mLoginCallback?.get()?.onLoginFailure(LoginTag.qq, "登录取消")
|
||||
mLoginCallback?.onLoginFailure(LoginTag.qq, "登录取消")
|
||||
Utils.log("QQ 登录取消")
|
||||
}
|
||||
|
||||
@ -92,7 +90,7 @@ object LoginHelper {
|
||||
}
|
||||
|
||||
override fun onError(p0: UiError?) {
|
||||
mLoginCallback?.get()?.onLoginFailure(LoginTag.qq, "登录失败")
|
||||
mLoginCallback?.onLoginFailure(LoginTag.qq, "登录失败")
|
||||
Utils.log("QQ 登录失败")
|
||||
}
|
||||
}
|
||||
@ -110,22 +108,22 @@ object LoginHelper {
|
||||
|
||||
@JvmStatic
|
||||
fun onWechatLoginSuccess(content: JSONObject) {
|
||||
mLoginCallback?.get()?.onLoginSuccess(LoginTag.wechat, content)
|
||||
mLoginCallback?.onLoginSuccess(LoginTag.wechat, content)
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun onWechatLoginFailure(error: String) {
|
||||
mLoginCallback?.get()?.onLoginFailure(LoginTag.wechat, error)
|
||||
mLoginCallback?.onLoginFailure(LoginTag.wechat, error)
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun onDouYinLoginSuccess(content: JSONObject) {
|
||||
mLoginCallback?.get()?.onLoginSuccess(LoginTag.douyin, content)
|
||||
mLoginCallback?.onLoginSuccess(LoginTag.douyin, content)
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun onDouYinLoginFailure(error: String) {
|
||||
mLoginCallback?.get()?.onLoginFailure(LoginTag.douyin, error)
|
||||
mLoginCallback?.onLoginFailure(LoginTag.douyin, error)
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
@ -136,7 +134,7 @@ object LoginHelper {
|
||||
// QQ登录
|
||||
@JvmStatic
|
||||
fun loginWithQQ(loginCallback: LoginCallback, activity: Activity) {
|
||||
mLoginCallback = WeakReference(loginCallback)
|
||||
mLoginCallback = loginCallback
|
||||
if (!mTencent.isSessionValid) {
|
||||
Utils.log("QQLogin")
|
||||
mTencent.login(activity, "all", mQqLoginListener)
|
||||
@ -153,7 +151,7 @@ object LoginHelper {
|
||||
// 微信登录
|
||||
@JvmStatic
|
||||
fun loginWithWechat(loginCallback: LoginCallback) {
|
||||
mLoginCallback = WeakReference(loginCallback)
|
||||
mLoginCallback = loginCallback
|
||||
val register = mIWXAPI.registerApp(Config.WECHAT_APPID)
|
||||
|
||||
val req = SendAuth.Req()
|
||||
@ -180,7 +178,7 @@ object LoginHelper {
|
||||
}
|
||||
|
||||
mWBAPI = WBAPIFactory.createWBAPI(context) //初始化微博分享
|
||||
mLoginCallback = WeakReference(loginCallback)
|
||||
mLoginCallback = loginCallback
|
||||
mWBAPI.registerApp(
|
||||
context,
|
||||
AuthInfo(context, Config.WEIBO_APPKEY, "http://www.sina.com", WEIBO_SCOPE)
|
||||
@ -208,19 +206,18 @@ object LoginHelper {
|
||||
)
|
||||
content.put("refresh_token", token.refreshToken)
|
||||
// content.put("refresh_token_expire", Utils.getTime(mContext) + 86400 * 30); // refresh_token 有效期30天
|
||||
mLoginCallback?.get()?.onLoginSuccess(LoginTag.weibo, content)// 微博 登录回调
|
||||
mLoginCallback?.onLoginSuccess(LoginTag.weibo, content)// 微博 登录回调
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onError(error: com.sina.weibo.sdk.common.UiError?) {
|
||||
mLoginCallback?.get()?.onLoginFailure(LoginTag.weibo, "微博登录需要客户端支持,请先安装微博")
|
||||
mLoginCallback?.onLoginFailure(LoginTag.weibo, "微博登录需要客户端支持,请先安装微博")
|
||||
}
|
||||
|
||||
override fun onCancel() {
|
||||
mLoginCallback?.get()?.onLoginFailure(LoginTag.weibo, "取消授权")
|
||||
mLoginCallback?.onLoginFailure(LoginTag.weibo, "取消授权")
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
// 第一次启动本应用,AccessToken 不可用
|
||||
@ -240,6 +237,14 @@ object LoginHelper {
|
||||
// douYinOpenApi.authorize(request)
|
||||
}
|
||||
|
||||
/**
|
||||
* 移除登录 callback 引用,避免内存泄漏
|
||||
*/
|
||||
@JvmStatic
|
||||
fun unregisterCallback() {
|
||||
mLoginCallback = null
|
||||
}
|
||||
|
||||
interface LoginCallback {
|
||||
fun onLoginSuccess(loginType: LoginTag, jsonContent: JSONObject)
|
||||
|
||||
|
||||
@ -16,7 +16,6 @@ import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.text.TextUtils
|
||||
import android.util.Base64
|
||||
import android.util.DisplayMetrics
|
||||
import android.util.SparseArray
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
@ -58,9 +57,11 @@ import com.github.piasy.biv.view.BigImageView
|
||||
import com.github.piasy.biv.view.FrescoImageViewFactory
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.schedulers.Schedulers
|
||||
import java.io.*
|
||||
import java.io.BufferedOutputStream
|
||||
import java.io.File
|
||||
import java.io.FileOutputStream
|
||||
import java.util.*
|
||||
import kotlin.collections.ArrayList
|
||||
import kotlin.math.abs
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
/**
|
||||
@ -172,9 +173,7 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener {
|
||||
mIndicatorTv.text = String.format("%d/%d", mInitialPosition + 1, mUrlList!!.size)
|
||||
|
||||
// init slide
|
||||
val outMetrics = DisplayMetrics()
|
||||
windowManager?.defaultDisplay?.getMetrics(outMetrics)
|
||||
val widthPixels = outMetrics.widthPixels
|
||||
val widthPixels = DisplayUtils.getScreenWidth()
|
||||
mLimitWidth = if (NetworkUtils.isWifiOr4GConnected(this)) {
|
||||
widthPixels * 2
|
||||
} else {
|
||||
@ -417,8 +416,6 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener {
|
||||
}
|
||||
|
||||
private fun finishWithAnimation(fadeOnly: Boolean) {
|
||||
updateOriginPosition(mViewPager.currentItem)
|
||||
|
||||
val animatorSet = AnimatorSet()
|
||||
|
||||
val translateXAnimator = ValueAnimator.ofFloat(0F, mTranslationX).apply {
|
||||
@ -469,7 +466,7 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener {
|
||||
}
|
||||
}
|
||||
|
||||
private fun shouldResize() = !(mImageRatio == mViewRatio || scaleWithoutResize())
|
||||
private fun shouldResize() = !(abs(mImageRatio - mViewRatio) <= 0.1F || scaleWithoutResize())
|
||||
|
||||
private fun justChangeBoundsAndTransform() = mImageRatio < mViewRatio && mIsFromImageContainerView && adapter?.count == 1
|
||||
|
||||
@ -608,8 +605,6 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener {
|
||||
}
|
||||
|
||||
private fun performExitAnimation(view: DraggableBigImageView, scale: Float, fadeOnly: Boolean) {
|
||||
updateOriginPosition(mViewPager.currentItem)
|
||||
|
||||
val finalScale = mOriginWidth / mTargetWidth
|
||||
val finalTranslationX = mOriginLeft - (1 - finalScale) * mTargetWidth / 2
|
||||
val finalTranslationY = mOriginTop - ((1 - finalScale) * mTargetHeight + (mTargetHeight * finalScale - mOriginHeight)) / 2
|
||||
@ -726,7 +721,7 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener {
|
||||
return ObjectAnimator.ofFloat(startHeight.toFloat(), endHeight.toFloat()).apply {
|
||||
addUpdateListener {
|
||||
sceneRoot.findViewById<BigImageView>(R.id.viewimage_iv_show)?.ssiv?.run {
|
||||
if (scaleWithoutResize()) {
|
||||
if (abs(mImageRatio - mViewRatio) > 0.1F && scaleWithoutResize()) {
|
||||
maxScale = scale
|
||||
setMinimumScaleType(SubsamplingScaleImageView.SCALE_TYPE_CENTER_CROP)
|
||||
}
|
||||
@ -768,6 +763,7 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener {
|
||||
}
|
||||
imageView.setDragListener(object : DraggableBigImageView.DragListener {
|
||||
override fun onRelease(draggableBigImageView: DraggableBigImageView, scale: Float) {
|
||||
updateOriginPosition(mViewPager.currentItem)
|
||||
performExitAnimation(draggableBigImageView, scale, isFadeOnly())
|
||||
}
|
||||
|
||||
@ -812,7 +808,7 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener {
|
||||
// }
|
||||
// })
|
||||
ssiv.setOnClickListener {
|
||||
finishWithAnimation(isFadeOnly())
|
||||
onBackPressed()
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -875,6 +871,7 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener {
|
||||
private fun isFadeOnly() = mViewPager.currentItem >= mOriginLeftList?.size ?: 0 || mOriginLeft == 0 || mOriginTop == 0
|
||||
|
||||
override fun onBackPressed() {
|
||||
updateOriginPosition(mViewPager.currentItem)
|
||||
finishWithAnimation(isFadeOnly())
|
||||
}
|
||||
|
||||
|
||||
@ -447,6 +447,11 @@ public class LoginFragment
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
LoginHelper.unregisterCallback();
|
||||
}
|
||||
|
||||
private void login(JSONObject content, LoginTag loginTag) {
|
||||
if (loginTag.equals(LoginTag.phone)) {
|
||||
|
||||
@ -222,7 +222,9 @@ class HomeFragment : LazyFragment() {
|
||||
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
mScrollCalculatorHelper.currentPlayer?.release()
|
||||
if (::mScrollCalculatorHelper.isInitialized) {
|
||||
mScrollCalculatorHelper.currentPlayer?.release()
|
||||
}
|
||||
}
|
||||
|
||||
private fun handleAutoScroll(resumeScroll: Boolean) {
|
||||
|
||||
Reference in New Issue
Block a user