Commit f6f5fdb9 by 刘鹏

feat : 组件改名

parent 75243275
......@@ -195,6 +195,9 @@ dependencies {
// TPNS SDK 主工程依赖包
implementation 'com.tencent.tpns:tpns:1.3.2.1-release'
implementation 'com.tencent.liteav:LiteAVSDK_TRTC:latest.release'
if (true) {
//开发模式
implementation fileTree(dir: 'aars', include: ['*.aar'])
......@@ -232,7 +235,7 @@ dependencies {
implementation project(':m-fm')
implementation modularPublication('com.ydl:m-fm-api')
implementation project(':m-mdt-tuicalling')
implementation project(':ydl-tuicalling')
} else {
//发布模式
......
......@@ -36,7 +36,7 @@
android:layout_gravity="right|center_vertical"
android:background="@android:color/transparent"
android:text="@string/btn_confirm"
android:textColor="@color/font_blue"
android:textColor="@color/black"
android:visibility="gone" />
<ImageButton
......@@ -92,7 +92,6 @@
android:id="@+id/tv_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableEnd="@drawable/arrow_right"
android:includeFontPadding="false"
android:text="ID"
android:textColor="@color/color_black"
......
......@@ -16,7 +16,7 @@ ext {
"m-muse" : "0.0.28.27",
"m-tests" : "0.0.24.18",
"m-course" : "0.0.43.36",
"m-course" : "0.0.43.36",
//-------------- 业务模块 API 层 --------------
"m-audioim-api" : "0.0.6",
......@@ -32,6 +32,9 @@ ext {
"m-dynamic-api" : "0.0.3.71",
//-------------- 功能组件 --------------
//mdt 组件
"ydl-tuicore" : "0.0.1",
"ydl-tuicalling": "0.0.4",
//第一步
"ydl-platform" : "0.0.40.79",
......@@ -113,7 +116,9 @@ ext {
"m-im-api" : "0.0.12.23",
"m-dynamic-api" : "0.0.3.71",
//-------------- 功能组件 --------------
//mdt组件
"ydl-tuicore" : "0.0.1",
"ydl-tuicalling": "0.0.4",
//第一步
"ydl-platform" : "0.0.40.79",
......@@ -200,7 +205,7 @@ ext {
"androideventbus" : "org.simple:androideventbus:1.0.5.1",
"otto" : "com.squareup:otto:1.3.8",
"gson" : "com.google.code.gson:gson:2.8.5",
"aliyun" : "com.aliyun.openservices:aliyun-log-android-sdk:2.5.13",
"aliyun" : "com.aliyun.openservices:aliyun-log-android-sdk:2.5.13",
"javax.annotation" : "javax.annotation:jsr250-api:1.0",
"arouter" : "com.alibaba:arouter-api:1.4.1",
"progressmanager" : "me.jessyan:progressmanager:1.5.0",
......@@ -232,7 +237,7 @@ ext {
"androidanimations" : "com.daimajia.androidanimations:library:2.3@aar",
//友盟统计
"umeng-common" : "com.umeng.umsdk:common:9.3.8",
"umeng-asms" :"com.umeng.umsdk:asms:1.2.2",
"umeng-asms" : "com.umeng.umsdk:asms:1.2.2",
//友盟社会化分享
"umeng-share-core" : "com.umeng.umsdk:share-core:7.1.4",
"umeng-share-qq" : "com.umeng.umsdk:share-qq:7.1.4",
......@@ -277,7 +282,8 @@ ext {
//基础组件 <<--- 先发这个,发完改这里的版本号
"ydl-platform" : "com.ydl:ydl-platform:${ydlCompileVersion["ydl-platform"]}@aar",
"ydl-tuicore" : "com.ydl:ydl-tuicore:${ydlCompileVersion["ydl-tuicore"]}@aar",
"ydl-tuicalling" : "com.ydl:ydl-tuicalling:${ydlCompileVersion["ydl-tuicalling"]}@aar",
//功能组件 <<--- 再发这些,发完改这里的版本号
"ydl-webview" : "com.ydl:ydl-webview:${ydlCompileVersion["ydl-webview"]}@aar",
"ydl-media" : "com.ydl:ydl-media:${ydlCompileVersion["ydl-media"]}@aar",
......
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- 颜色规范 start -->
<attr name="core_light_bg_title_text_color" format="reference|color"/>
<attr name="core_light_bg_primary_text_color" format="reference|color"/>
<attr name="core_light_bg_secondary_text_color" format="reference|color"/>
<attr name="core_light_bg_secondary2_text_color" format="reference|color"/>
<attr name="core_light_bg_disable_text_color" format="reference|color"/>
<attr name="core_dark_bg_primary_text_color" format="reference|color"/>
<attr name="core_primary_bg_color" format="reference|color"/>
<attr name="core_bg_color" format="reference|color"/>
<attr name="core_primary_color" format="reference|color"/>
<attr name="core_error_tip_color" format="reference|color"/>
<attr name="core_success_tip_color" format="reference|color"/>
<attr name="core_bubble_bg_color" format="reference|color"/>
<attr name="core_divide_color" format="reference|color"/>
<attr name="core_border_color" format="reference|color"/>
<attr name="core_header_start_color" format="reference|color"/>
<attr name="core_header_end_color" format="reference|color"/>
<attr name="core_btn_normal_color" format="reference|color"/>
<attr name="core_btn_pressed_color" format="reference|color"/>
<attr name="core_btn_disable_color" format="reference|color"/>
<!-- 颜色规范 end -->
<attr name="core_line_controller_view_switch_btn_selected_bg" format="reference|color"/>
<attr name="core_selected_icon" format="reference"/>
<attr name="core_title_bar_bg" format="reference"/>
<attr name="core_title_bar_text_bg" format="reference|color"/>
<attr name="core_title_bar_back_icon" format="reference"/>
<attr name="core_default_group_icon" format="reference"/>
<attr name="core_default_user_icon" format="reference"/>
</resources>
\ No newline at end of file
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx1536m
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
# Gradle 相关配置
COMPILE_SDK_VERSION = 28
BUILD_TOOLS_VERSION = 28.0.3
MIN_SDK_VERSION = 16
TARGET_SDK_VERSION = 26
# 客户端版本号
VERSION_NAME = 1.0
VERSION_CODE = 1
IMSDK_VERSION = 5.8.1672
UTIL_CODE_VERSION = 1.25.9
GSON_VERSION = 2.3.1
CIRCLEIMAGEVIEW_VERSION = 3.1.0
CONSTRAINT_LAYOUT_VERSION = 1.1.3
DESIGN_VERSION = 27.1.0
APPCOMPAT_V7_VERSION = 26.0.1
RECYCLERVIEW_V7_VERSION = 26.0.1
DANMAKU_FLAME_MASTER_VERSION = 0.5.3
GLIDE_VERSION = 4.12.0
OKHTTP_VERSION = 3.11.0
RETROFIT_VERSION = 2.2.0
CONVERTER_GSON_VERSION = 2.2.0
LOGGING_INTERCEPTOR_VERSION = 3.8.1
MULTIDEX_VERSION = 1.0.0
CRASHREPORT_UPGRADE = 1.5.1
NATIVECRASHREPORT = 3.8.0
android.useAndroidX=true
android.enableJetifier=true
\ No newline at end of file
......@@ -4,5 +4,5 @@ include ':app',
':m-home',
':m-consultant', ':m-muse', ':m-fm', ':m-tests', ":m-course",
":m-im",":m-dynamic","m-article","m-audioim","m-user","m-confide"
include ':m-mdt-tuicalling'
include ':m-mdt-tuicore'
include ':ydl-tuicalling'
include ':ydl-tuicore'
apply plugin: 'com.android.library'
apply from: "../maven_push.gradle"
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
android {
compileSdkVersion rootProject.ext.android["compileSdkVersion"]
......@@ -27,6 +32,8 @@ android {
dependencies {
api fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation(rootProject.ext.dependencies["support-multidex"])
implementation(rootProject.ext.dependencies["recyclerview-v7"])
implementation(rootProject.ext.dependencies["appcompat-v7"])
......@@ -43,7 +50,7 @@ dependencies {
implementation "de.hdodenhof:circleimageview:3.1.0"
implementation "com.blankj:utilcode:1.25.9"
implementation "com.tencent.liteav:LiteAVSDK_TRTC:latest.release"
api project(':m-mdt-tuicore')
api "com.tencent.liteav:LiteAVSDK_TRTC:latest.release"
api project(':ydl-tuicore')
}
......@@ -3,12 +3,12 @@ package com.tencent.liteav.basic;
import java.io.Serializable;
public class UserModel implements Serializable {
public int appId;
public String phone;
public String userId;
public String userSig;
public String userName;
public String userAvatar;
public int appId;
public String phone;
public String userId;
public String userSig;
public String userName;
public String userAvatar;
public UserType userType = UserType.NONE;
public enum UserType {
......
package com.tencent.liteav.login
import android.content.Context
import android.util.Log
import com.blankj.utilcode.util.ToastUtils
import com.tencent.imsdk.v2.*
import com.tencent.liteav.basic.UserModel
import com.tencent.liteav.basic.UserModelManager
import com.tencent.liteav.trtccalling.TUICallingImpl
import com.tencent.qcloud.tuicore.TUILogin
import java.util.*
/**
* TUILogin
* 登录工具类
* */
class LoginTUI {
companion object {
private const val TAG = "LoginTUI"
fun login(context: Context, userModel: UserModel) {
// 初始化并登录
TUICallingImpl.sharedInstance(context)
val config = V2TIMSDKConfig()
config.logLevel = V2TIMSDKConfig.V2TIM_LOG_DEBUG
TUILogin.init(context, userModel.appId, null, object : V2TIMSDKListener() {
override fun onKickedOffline() {}
override fun onUserSigExpired() {}
})
TUILogin.login(userModel.userId, userModel.userSig, object : V2TIMCallback {
override fun onError(code: Int, msg: String) {
ToastUtils.showLong("登录IM失败,所有功能不可用[%d]%s", code, msg)
Log.d(TAG, "login fail code: $code msg:$msg")
}
override fun onSuccess() {
Log.d(TAG, "login onSuccess")
userInfo
}
})
}
//先查询用户是否存在
private val userInfo: Unit
private get() {
val manager = UserModelManager.getInstance()
val userModel = manager.userModel
//先查询用户是否存在
val userIdList: MutableList<String> = ArrayList()
userIdList.add(userModel.userId)
Log.d(TAG, "setUserInfo: userIdList = $userIdList")
V2TIMManager.getInstance()
.getUsersInfo(
userIdList,
object : V2TIMValueCallback<List<V2TIMUserFullInfo>?> {
override fun onError(code: Int, msg: String) {
Log.e(TAG, "get group info list fail, code:$code msg: $msg")
}
override fun onSuccess(resultList: List<V2TIMUserFullInfo>?) {
if (resultList == null || resultList.isEmpty()) {
return
}
}
})
}
}
}
\ No newline at end of file
......@@ -108,7 +108,7 @@ public interface TUICalling {
* @param type 通话类型:视频\音频
* @param role 通话角色:主叫\被叫
*/
void onCallStart(String[] userIDs, TUICalling.Type type, TUICalling.Role role, View tuiCallingView);
void onCallStart(String[] userIDs, Type type, Role role, View tuiCallingView);
/**
* @param userIDs 本次通话用户id(自己除外)
......@@ -116,7 +116,7 @@ public interface TUICalling {
* @param role 通话角色:主叫\被叫
* @param totalTime 通话时长
*/
void onCallEnd(String[] userIDs, TUICalling.Type type, TUICalling.Role role, long totalTime);
void onCallEnd(String[] userIDs, Type type, Role role, long totalTime);
/**
* 通话事件回调
......@@ -124,7 +124,7 @@ public interface TUICalling {
* @param event 事件类型
* @param message 事件提示
*/
void onCallEvent(TUICalling.Event event, TUICalling.Type type, TUICalling.Role role, String message);
void onCallEvent(Event event, Type type, Role role, String message);
}
//回调事件
......
......@@ -181,11 +181,11 @@ public final class TUICallingImpl implements TUICalling, TRTCCallingDelegate {
}
}
private boolean isGroupCall(String groupID, String[] userIDs, TUICalling.Role role, boolean isFromGroup) {
private boolean isGroupCall(String groupID, String[] userIDs, Role role, boolean isFromGroup) {
if (!TextUtils.isEmpty(groupID)) {
return true;
}
if (TUICalling.Role.CALL == role) {
if (Role.CALL == role) {
return userIDs.length >= 2;
} else {
return userIDs.length >= 1 || isFromGroup;
......
......@@ -12,8 +12,8 @@ import android.widget.TextView;
import com.tencent.imsdk.v2.V2TIMConversation;
import com.tencent.liteav.trtccalling.R;
import com.tencent.liteav.trtccalling.TUICalling;
import com.tencent.liteav.trtccalling.model.util.TUICallingConstants;
import com.tencent.liteav.trtccalling.TUICallingImpl;
import com.tencent.liteav.trtccalling.model.util.TUICallingConstants;
import com.tencent.qcloud.tuicore.TUIConstants;
import com.tencent.qcloud.tuicore.TUICore;
import com.tencent.qcloud.tuicore.interfaces.ITUIExtension;
......
......@@ -113,7 +113,7 @@ public class TUICallAudioView extends BaseTUICallView {
}
private void initListener() {
mLayoutMute.setOnClickListener(new View.OnClickListener() {
mLayoutMute.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mIsMuteMic = !mIsMuteMic;
......@@ -122,7 +122,7 @@ public class TUICallAudioView extends BaseTUICallView {
ToastUtils.showLong(mIsMuteMic ? R.string.trtccalling_toast_enable_mute : R.string.trtccalling_toast_disable_mute);
}
});
mLayoutHandsFree.setOnClickListener(new View.OnClickListener() {
mLayoutHandsFree.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mIsHandsFree = !mIsHandsFree;
......@@ -231,14 +231,14 @@ public class TUICallAudioView extends BaseTUICallView {
mLayoutHandsFree.setVisibility(View.GONE);
mLayoutMute.setVisibility(View.GONE);
//3. 设置对应的listener
mLayoutHangup.setOnClickListener(new View.OnClickListener() {
mLayoutHangup.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mTRTCCalling.reject();
finish();
}
});
mLayoutDialing.setOnClickListener(new View.OnClickListener() {
mLayoutDialing.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//1.分配自己的画面
......@@ -271,7 +271,7 @@ public class TUICallAudioView extends BaseTUICallView {
}
//3. 设置底部栏
mLayoutHangup.setVisibility(View.VISIBLE);
mLayoutHangup.setOnClickListener(new View.OnClickListener() {
mLayoutHangup.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mTRTCCalling.hangup();
......@@ -298,7 +298,7 @@ public class TUICallAudioView extends BaseTUICallView {
mLayoutHandsFree.setVisibility(View.VISIBLE);
mLayoutMute.setVisibility(View.VISIBLE);
mTvHangup.setText(R.string.trtccalling_text_hangup);
mLayoutHangup.setOnClickListener(new View.OnClickListener() {
mLayoutHangup.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mTRTCCalling.hangup();
......
package com.tencent.liteav.trtccalling.ui.audiocall.audiolayout;
import android.content.Context;
import android.graphics.Bitmap;
import android.util.AttributeSet;
import android.widget.ImageView;
import android.widget.RelativeLayout;
......
......@@ -142,7 +142,7 @@ public class TUICallVideoView extends BaseTUICallView {
}
private void initListener() {
mMuteLl.setOnClickListener(new View.OnClickListener() {
mMuteLl.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mIsMuteMic = !mIsMuteMic;
......@@ -151,7 +151,7 @@ public class TUICallVideoView extends BaseTUICallView {
ToastUtils.showLong(mIsMuteMic ? R.string.trtccalling_toast_enable_mute : R.string.trtccalling_toast_disable_mute);
}
});
mSwitchCameraImg.setOnClickListener(new View.OnClickListener() {
mSwitchCameraImg.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (!mIsCameraOpen) {
......@@ -164,7 +164,7 @@ public class TUICallVideoView extends BaseTUICallView {
}
});
mOpenCameraLl.setOnClickListener(new View.OnClickListener() {
mOpenCameraLl.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
TRTCVideoLayout videoLayout = mLayoutManagerTRTC.findCloudView(mSelfModel.userId);
......@@ -187,7 +187,7 @@ public class TUICallVideoView extends BaseTUICallView {
ToastUtils.showLong(mIsCameraOpen ? R.string.trtccalling_toast_enable_camera : R.string.trtccalling_toast_disable_camera);
}
});
mHandsfreeLl.setOnClickListener(new View.OnClickListener() {
mHandsfreeLl.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mIsHandsFree = !mIsHandsFree;
......@@ -198,7 +198,7 @@ public class TUICallVideoView extends BaseTUICallView {
});
mMuteImg.setActivated(mIsMuteMic);
mHandsfreeImg.setActivated(mIsHandsFree);
mViewSwitchAudioCall.setOnClickListener(new View.OnClickListener() {
mViewSwitchAudioCall.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mTRTCCalling.switchToAudioCall();
......@@ -368,14 +368,14 @@ public class TUICallVideoView extends BaseTUICallView {
mOpenCameraLl.setVisibility(View.GONE);
mViewSwitchAudioCall.setVisibility(View.VISIBLE);
//3. 设置对应的listener
mHangupLl.setOnClickListener(new View.OnClickListener() {
mHangupLl.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mTRTCCalling.reject();
finish();
}
});
mDialingLl.setOnClickListener(new View.OnClickListener() {
mDialingLl.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//2.接听电话
......@@ -417,7 +417,7 @@ public class TUICallVideoView extends BaseTUICallView {
//2. 设置底部栏
mHangupLl.setVisibility(View.VISIBLE);
mHangupLl.setOnClickListener(new View.OnClickListener() {
mHangupLl.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mTRTCCalling.hangup();
......@@ -478,7 +478,7 @@ public class TUICallVideoView extends BaseTUICallView {
mSwitchCameraImg.setVisibility(isAudioMode ? View.GONE : View.VISIBLE);
mOpenCameraLl.setVisibility(isAudioMode ? View.GONE : View.VISIBLE);
mViewSwitchAudioCall.setVisibility(isAudioMode ? View.GONE : View.VISIBLE);
mHangupLl.setOnClickListener(new View.OnClickListener() {
mHangupLl.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mTRTCCalling.hangup();
......
......@@ -136,7 +136,7 @@ public class TUIGroupCallVideoView extends BaseTUICallView {
}
private void initListener() {
mMuteLl.setOnClickListener(new View.OnClickListener() {
mMuteLl.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mIsMuteMic = !mIsMuteMic;
......@@ -149,7 +149,7 @@ public class TUIGroupCallVideoView extends BaseTUICallView {
}
}
});
mSwitchCameraImg.setOnClickListener(new View.OnClickListener() {
mSwitchCameraImg.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (!mIsCameraOpen) {
......@@ -162,7 +162,7 @@ public class TUIGroupCallVideoView extends BaseTUICallView {
}
});
mOpenCameraLl.setOnClickListener(new View.OnClickListener() {
mOpenCameraLl.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
TRTCGroupVideoLayout videoLayout = mLayoutManagerTRTC.findVideoCallLayout(mSelfModel.userId);
......@@ -186,7 +186,7 @@ public class TUIGroupCallVideoView extends BaseTUICallView {
ToastUtils.showLong(mIsCameraOpen ? R.string.trtccalling_toast_enable_camera : R.string.trtccalling_toast_disable_camera);
}
});
mHandsfreeLl.setOnClickListener(new View.OnClickListener() {
mHandsfreeLl.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mIsHandsFree = !mIsHandsFree;
......@@ -197,7 +197,7 @@ public class TUIGroupCallVideoView extends BaseTUICallView {
});
mMuteImg.setActivated(mIsMuteMic);
mHandsfreeImg.setActivated(mIsHandsFree);
mViewSwitchAudioCall.setOnClickListener(new View.OnClickListener() {
mViewSwitchAudioCall.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mTRTCCalling.switchToAudioCall();
......@@ -389,14 +389,14 @@ public class TUIGroupCallVideoView extends BaseTUICallView {
mSwitchCameraImg.setVisibility(View.GONE);
mOpenCameraLl.setVisibility(View.GONE);
//设置对应的listener
mHangupLl.setOnClickListener(new View.OnClickListener() {
mHangupLl.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mTRTCCalling.reject();
finish();
}
});
mDialingLl.setOnClickListener(new View.OnClickListener() {
mDialingLl.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//接听电话
......@@ -446,7 +446,7 @@ public class TUIGroupCallVideoView extends BaseTUICallView {
}
//3. 设置底部栏
mHangupLl.setVisibility(View.VISIBLE);
mHangupLl.setOnClickListener(new View.OnClickListener() {
mHangupLl.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mTRTCCalling.hangup();
......@@ -493,7 +493,7 @@ public class TUIGroupCallVideoView extends BaseTUICallView {
boolean isAudioMode = TUICalling.Type.AUDIO == mCallType;
mSwitchCameraImg.setVisibility(isAudioMode ? View.GONE : View.VISIBLE);
mOpenCameraLl.setVisibility(isAudioMode ? View.GONE : View.VISIBLE);
mHangupLl.setOnClickListener(new View.OnClickListener() {
mHangupLl.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mTRTCCalling.hangup();
......
......@@ -2,7 +2,6 @@ package com.tencent.liteav.trtccalling.ui.videocall.videolayout;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import androidx.appcompat.widget.AppCompatImageView;
......@@ -21,8 +20,8 @@ public class SquareImageView extends AppCompatImageView {
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int widthMode = View.MeasureSpec.getMode(widthMeasureSpec);
int heightMode = View.MeasureSpec.getMode(heightMeasureSpec);
int widthMode = MeasureSpec.getMode(widthMeasureSpec);
int heightMode = MeasureSpec.getMode(heightMeasureSpec);
if (widthMode == MeasureSpec.EXACTLY && heightMode != MeasureSpec.EXACTLY) {
int width = MeasureSpec.getSize(widthMeasureSpec);
int height = width;
......
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