huangxinbao

add drop resource

正在显示 100 个修改的文件 包含 1226 行增加312 行删除

要显示太多修改。

为保证性能只显示 100 of 100+ 个文件。

@@ -16,7 +16,10 @@ android { @@ -16,7 +16,10 @@ android {
16 } 16 }
17 buildTypes { 17 buildTypes {
18 release { 18 release {
  19 + //是否混淆
19 minifyEnabled false 20 minifyEnabled false
  21 + zipAlignEnabled true
  22 +// shrinkResources true//去除无用的resource文件,第一次使用
20 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 23 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
21 } 24 }
22 } 25 }
@@ -32,7 +35,6 @@ dependencies { @@ -32,7 +35,6 @@ dependencies {
32 androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 35 androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
33 exclude group: 'com.android.support', module: 'support-annotations' 36 exclude group: 'com.android.support', module: 'support-annotations'
34 }) 37 })
35 - compile project(':xdy')  
36 compile files('libs/pldroid-player-1.5.1.jar') 38 compile files('libs/pldroid-player-1.5.1.jar')
37 compile 'com.android.support:appcompat-v7:25.3.1' 39 compile 'com.android.support:appcompat-v7:25.3.1'
38 compile 'com.jakewharton:butterknife:8.5.1' 40 compile 'com.jakewharton:butterknife:8.5.1'
@@ -43,15 +45,16 @@ dependencies { @@ -43,15 +45,16 @@ dependencies {
43 compile 'org.kymjs.kjframe:kjframe:2.6' 45 compile 'org.kymjs.kjframe:kjframe:2.6'
44 compile 'io.reactivex:rxjava:1.0.9' 46 compile 'io.reactivex:rxjava:1.0.9'
45 compile 'io.reactivex:rxandroid:0.24.0' 47 compile 'io.reactivex:rxandroid:0.24.0'
46 - compile 'com.squareup.retrofit:retrofit:1.9.0' 48 +// compile 'com.squareup.retrofit:retrofit:1.9.0'
47 compile 'com.nineoldandroids:library:2.4.0' 49 compile 'com.nineoldandroids:library:2.4.0'
48 compile 'me.yokeyword:fragmentation:0.10.3' 50 compile 'me.yokeyword:fragmentation:0.10.3'
49 compile 'com.qiniu:happy-dns:0.2.+' 51 compile 'com.qiniu:happy-dns:0.2.+'
50 - compile 'com.android.support:support-v4:25.3.1' 52 +// compile 'com.android.support:support-v4:25.3.1'
51 testCompile 'junit:junit:4.12' 53 testCompile 'junit:junit:4.12'
52 annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1' 54 annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
53 compile 'com.qiniu:happy-dns:0.2.+' 55 compile 'com.qiniu:happy-dns:0.2.+'
54 compile 'org.greenrobot:eventbus:3.0.0' 56 compile 'org.greenrobot:eventbus:3.0.0'
55 compile 'com.flyco.tablayout:FlycoTabLayout_Lib:2.1.2@aar' 57 compile 'com.flyco.tablayout:FlycoTabLayout_Lib:2.1.2@aar'
56 compile project(':iOS_Dialog_Library') 58 compile project(':iOS_Dialog_Library')
  59 + compile project(':xdy')
57 } 60 }
@@ -15,3 +15,10 @@ @@ -15,3 +15,10 @@
15 #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 15 #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 # public *; 16 # public *;
17 #} 17 #}
  18 +
  19 +-keep class com.eventhandle.**{*;}
  20 +-keep class com.ntjbase.**{*;}
  21 +-keep class com.videoengine.**{*;}
  22 +-keep class com.voiceengine.**{*;}
  23 +
  24 +-keep class com.mang.xdy.**{*;}
1 -package com.mang.xdy.demo; 1 +package com.mang.xuedianyun.android;
2 2
3 import android.content.Context; 3 import android.content.Context;
4 import android.support.test.InstrumentationRegistry; 4 import android.support.test.InstrumentationRegistry;
1 <?xml version="1.0" encoding="utf-8"?> 1 <?xml version="1.0" encoding="utf-8"?>
2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 - package="com.mang.xdy.demo"> 3 + package="com.mang.xuedianyun.android">
4 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> 4 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
5 <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 5 <uses-permission android:name="android.permission.READ_PHONE_STATE" />
6 <uses-permission android:name="android.permission.INTERNET" /> 6 <uses-permission android:name="android.permission.INTERNET" />
@@ -36,13 +36,13 @@ @@ -36,13 +36,13 @@
36 36
37 37
38 <application 38 <application
39 - android:name=".application.XdyApplicaiton" 39 + android:name="com.mang.xuedianyun.android.application.XdyApplicaiton"
40 android:allowBackup="true" 40 android:allowBackup="true"
41 android:icon="@mipmap/logo" 41 android:icon="@mipmap/logo"
42 android:label="@string/app_name" 42 android:label="@string/app_name"
43 android:supportsRtl="true" 43 android:supportsRtl="true"
44 android:theme="@style/AppTheme"> 44 android:theme="@style/AppTheme">
45 - <activity android:name=".MainActivity" 45 + <activity android:name="com.mang.xuedianyun.android.MainActivity"
46 android:windowSoftInputMode="adjustPan|stateHidden" 46 android:windowSoftInputMode="adjustPan|stateHidden"
47 android:screenOrientation="portrait"> 47 android:screenOrientation="portrait">
48 <intent-filter> 48 <intent-filter>
@@ -51,10 +51,9 @@ @@ -51,10 +51,9 @@
51 <category android:name="android.intent.category.LAUNCHER" /> 51 <category android:name="android.intent.category.LAUNCHER" />
52 </intent-filter> 52 </intent-filter>
53 </activity> 53 </activity>
54 - <activity android:name=".activity.VideoPlayActivity" 54 + <activity android:name="com.mang.xuedianyun.android.activity.VideoPlayActivity"
55 android:configChanges="keyboardHidden|orientation|screenSize" 55 android:configChanges="keyboardHidden|orientation|screenSize"
56 android:screenOrientation="portrait" 56 android:screenOrientation="portrait"
57 - android:windowSoftInputMode="adjustPan|stateHidden"  
58 > 57 >
59 </activity> 58 </activity>
60 </application> 59 </application>
1 -package com.mang.xdy.demo;  
2 -  
3 -import android.content.Context;  
4 -import android.content.Intent;  
5 -import android.content.res.Configuration;  
6 -import android.os.Bundle;  
7 -import android.support.v7.app.AppCompatActivity;  
8 -import android.text.TextUtils;  
9 -import android.view.View;  
10 -import android.widget.Button;  
11 -import android.widget.EditText;  
12 -import android.widget.RelativeLayout;  
13 -  
14 -import com.google.gson.Gson;  
15 -  
16 -import com.mang.xdy.demo.activity.VideoPlayActivity;  
17 -import com.mang.xdy.demo.bean.JoinClassBean;  
18 -import com.mang.xdy.demo.utils.ToastUtil;  
19 -  
20 -import java.util.ArrayList;  
21 -  
22 -import butterknife.BindView;  
23 -import butterknife.ButterKnife;  
24 -import butterknife.OnClick;  
25 -  
26 -public class MainActivity extends AppCompatActivity {  
27 -  
28 - @BindView(R.id.edt_home_classId)  
29 - EditText edtHomeClassId;  
30 - @BindView(R.id.edt_home_role)  
31 - EditText edtHomeRole;  
32 - @BindView(R.id.edt_home_serviceIp)  
33 - EditText edtHomeServiceIp;  
34 - @BindView(R.id.edt_home_userId)  
35 - EditText edtHomeUserId;  
36 - @BindView(R.id.btn_home_enter_class)  
37 - Button btnHomeEnterClass;  
38 - @BindView(R.id.btn_home_enter_publisher)  
39 - Button btn_home_enter_publisher;  
40 - @BindView(R.id.rl_home_close)  
41 - RelativeLayout rl_home_close;  
42 - /*一进来就要初始化,让后再调 加入课堂*/  
43 - @Override  
44 - protected void onCreate(Bundle savedInstanceState) {  
45 - super.onCreate(savedInstanceState);  
46 - setContentView(R.layout.activity_main);  
47 - ButterKnife.bind(this);  
48 - rl_home_close.setOnClickListener(new View.OnClickListener() {  
49 - @Override  
50 - public void onClick(View v) {  
51 - finish();  
52 - }  
53 - });  
54 - }  
55 -  
56 - @OnClick({R.id.btn_home_enter_class,R.id.btn_home_enter_publisher})  
57 - public void onViewClicked(View view) {  
58 - if(TextUtils.isEmpty(joinClass())){  
59 - return;  
60 - }  
61 - ArrayList<String> arrayList=new ArrayList<>();  
62 - switch (view.getId()){  
63 -  
64 - case R.id.btn_home_enter_class:  
65 - Intent intent=new Intent(MainActivity.this, VideoPlayActivity.class);  
66 - arrayList.clear();  
67 - arrayList.add(joinClass());  
68 - arrayList.add("normal");  
69 - intent.putStringArrayListExtra("init",arrayList);  
70 - startActivity(intent);  
71 - break;  
72 - case R.id.btn_home_enter_publisher:  
73 - Intent intents=new Intent(MainActivity.this, VideoPlayActivity.class);  
74 - arrayList.clear();  
75 - arrayList.add(joinClass());  
76 - arrayList.add("");  
77 - intents.putStringArrayListExtra("init",arrayList);  
78 - startActivity(intents);  
79 - break;  
80 -  
81 - }  
82 - }  
83 - private String classId="";  
84 - private String userRole="";  
85 - private String serviceIp="";  
86 - private String userId="";  
87 - public boolean getLoginInfo(){  
88 - classId=edtHomeClassId.getText().toString();  
89 - userRole=edtHomeRole.getText().toString();  
90 - serviceIp=edtHomeServiceIp.getText().toString();  
91 - userId=edtHomeUserId.getText().toString();  
92 - if(TextUtils.isEmpty(classId)){  
93 - ToastUtil.showToast(getResources().getString(R.string.main_login_error_classId),this);  
94 - return false;  
95 - }  
96 - if(TextUtils.isEmpty(serviceIp)){  
97 - ToastUtil.showToast(getResources().getString(R.string.main_login_error_portal),this);  
98 - return false;  
99 - }  
100 - if(TextUtils.isEmpty(userRole)){  
101 - ToastUtil.showToast(getResources().getString(R.string.main_login_error_role),this);  
102 - return false;  
103 - }  
104 - if(TextUtils.isEmpty(userId)){  
105 - ToastUtil.showToast(getResources().getString(R.string.main_login_error_userId),this);  
106 - return false;  
107 - }  
108 - return true;  
109 - }  
110 - public String joinClass(){  
111 - if(getLoginInfo()) {  
112 - JoinClassBean joinClassBean = new JoinClassBean();  
113 - joinClassBean.setClassId(Integer.parseInt(classId));  
114 - joinClassBean.setUserRole(userRole);  
115 - joinClassBean.setPortal(serviceIp);  
116 - joinClassBean.setUserId(Integer.parseInt(userId));  
117 - joinClassBean.setUserName("");  
118 - String joinclass = new Gson().toJson(joinClassBean);  
119 -// XdyLogUtil.e("init 初始化", joinclass);  
120 - return joinclass;  
121 - }else{  
122 - return "";  
123 - }  
124 -  
125 - }  
126 -  
127 -  
128 -  
129 -} 1 +package com.mang.xuedianyun.android;
  2 +
  3 +import android.content.Intent;
  4 +import android.os.Bundle;
  5 +import android.support.v7.app.AppCompatActivity;
  6 +import android.text.TextUtils;
  7 +import android.view.View;
  8 +import android.widget.Button;
  9 +import android.widget.EditText;
  10 +import android.widget.RelativeLayout;
  11 +
  12 +import com.google.gson.Gson;
  13 +
  14 +import com.mang.xuedianyun.android.activity.VideoPlayActivity;
  15 +import com.mang.xuedianyun.android.bean.JoinClassBean;
  16 +import com.mang.xuedianyun.android.utils.ToastUtil;
  17 +
  18 +import java.util.ArrayList;
  19 +
  20 +import butterknife.BindView;
  21 +import butterknife.ButterKnife;
  22 +import butterknife.OnClick;
  23 +
  24 +public class MainActivity extends AppCompatActivity {
  25 +
  26 + @BindView(R.id.edt_home_classId)
  27 + EditText edtHomeClassId;
  28 + @BindView(R.id.edt_home_role)
  29 + EditText edtHomeRole;
  30 + @BindView(R.id.edt_home_serviceIp)
  31 + EditText edtHomeServiceIp;
  32 + @BindView(R.id.edt_home_userId)
  33 + EditText edtHomeUserId;
  34 + @BindView(R.id.btn_home_enter_class)
  35 + Button btnHomeEnterClass;
  36 + @BindView(R.id.btn_home_enter_publisher)
  37 + Button btn_home_enter_publisher;
  38 + @BindView(R.id.rl_home_close)
  39 + RelativeLayout rl_home_close;
  40 + /*一进来就要初始化,让后再调 加入课堂*/
  41 + @Override
  42 + protected void onCreate(Bundle savedInstanceState) {
  43 + super.onCreate(savedInstanceState);
  44 + setContentView(R.layout.activity_main);
  45 + ButterKnife.bind(this);
  46 + rl_home_close.setOnClickListener(new View.OnClickListener() {
  47 + @Override
  48 + public void onClick(View v) {
  49 + finish();
  50 + }
  51 + });
  52 + }
  53 +
  54 + @OnClick({R.id.btn_home_enter_class,R.id.btn_home_enter_publisher})
  55 + public void onViewClicked(View view) {
  56 + if(TextUtils.isEmpty(joinClass())){
  57 + return;
  58 + }
  59 + ArrayList<String> arrayList=new ArrayList<>();
  60 + switch (view.getId()){
  61 +
  62 + case R.id.btn_home_enter_class:
  63 + Intent intent=new Intent(MainActivity.this, VideoPlayActivity.class);
  64 + arrayList.clear();
  65 + arrayList.add(joinClass());
  66 + arrayList.add("normal");
  67 + intent.putStringArrayListExtra("init",arrayList);
  68 + startActivity(intent);
  69 + break;
  70 + case R.id.btn_home_enter_publisher:
  71 + Intent intents=new Intent(MainActivity.this, VideoPlayActivity.class);
  72 + arrayList.clear();
  73 + arrayList.add(joinClass());
  74 + arrayList.add("");
  75 + intents.putStringArrayListExtra("init",arrayList);
  76 + startActivity(intents);
  77 + break;
  78 +
  79 + }
  80 + }
  81 + private String classId="";
  82 + private String userRole="";
  83 + private String serviceIp="";
  84 + private String userId="";
  85 + public boolean getLoginInfo(){
  86 + classId=edtHomeClassId.getText().toString();
  87 + userRole=edtHomeRole.getText().toString();
  88 + serviceIp=edtHomeServiceIp.getText().toString();
  89 + userId=edtHomeUserId.getText().toString();
  90 + if(TextUtils.isEmpty(classId)){
  91 + ToastUtil.showToast(getResources().getString(R.string.main_login_error_classId),this);
  92 + return false;
  93 + }
  94 + if(TextUtils.isEmpty(serviceIp)){
  95 + ToastUtil.showToast(getResources().getString(R.string.main_login_error_portal),this);
  96 + return false;
  97 + }
  98 + if(TextUtils.isEmpty(userRole)){
  99 + ToastUtil.showToast(getResources().getString(R.string.main_login_error_role),this);
  100 + return false;
  101 + }
  102 + if(TextUtils.isEmpty(userId)){
  103 + ToastUtil.showToast(getResources().getString(R.string.main_login_error_userId),this);
  104 + return false;
  105 + }
  106 + return true;
  107 + }
  108 + public String joinClass(){
  109 + if(getLoginInfo()) {
  110 + JoinClassBean joinClassBean = new JoinClassBean();
  111 + joinClassBean.setClassId(Integer.parseInt(classId));
  112 + joinClassBean.setUserRole(userRole);
  113 + joinClassBean.setPortal(serviceIp);
  114 + joinClassBean.setUserId(Integer.parseInt(userId));
  115 + joinClassBean.setUserName("");
  116 + String joinclass = new Gson().toJson(joinClassBean);
  117 +// XdyLogUtil.e("init 初始化", joinclass);
  118 + return joinclass;
  119 + }else{
  120 + return "";
  121 + }
  122 +
  123 + }
  124 +
  125 +
  126 +
  127 +}
@@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@
13 * See the License for the specific language governing permissions and 13 * See the License for the specific language governing permissions and
14 * limitations under the License. 14 * limitations under the License.
15 */ 15 */
16 -package com.mang.xdy.demo.adapter; 16 +package com.mang.xuedianyun.android.adapter;
17 17
18 import android.content.Context; 18 import android.content.Context;
19 import android.text.TextUtils; 19 import android.text.TextUtils;
@@ -28,12 +28,12 @@ import android.widget.TextView; @@ -28,12 +28,12 @@ import android.widget.TextView;
28 28
29 import com.mang.xdy.common.Constants; 29 import com.mang.xdy.common.Constants;
30 import com.mang.xdy.utils.SPUtil; 30 import com.mang.xdy.utils.SPUtil;
31 -import com.mang.xdy.demo.R;  
32 -import com.mang.xdy.demo.bean.JoinClassSuccessEntity;  
33 -import com.mang.xdy.demo.bean.Message;  
34 -import com.mang.xdy.demo.fragment.ChatFragment;  
35 -import com.mang.xdy.demo.utils.JsonUtil;  
36 -import com.mang.xdy.demo.widget.chat.UrlUtils; 31 +import com.mang.xuedianyun.android.R;
  32 +import com.mang.xuedianyun.android.bean.JoinClassSuccessEntity;
  33 +import com.mang.xuedianyun.android.bean.Message;
  34 +import com.mang.xuedianyun.android.fragment.ChatFragment;
  35 +import com.mang.xuedianyun.android.utils.JsonUtil;
  36 +import com.mang.xuedianyun.android.widget.chat.UrlUtils;
37 37
38 import org.kymjs.kjframe.KJBitmap; 38 import org.kymjs.kjframe.KJBitmap;
39 39
@@ -13,14 +13,14 @@ @@ -13,14 +13,14 @@
13 * See the License for the specific language governing permissions and 13 * See the License for the specific language governing permissions and
14 * limitations under the License. 14 * limitations under the License.
15 */ 15 */
16 -package com.mang.xdy.demo.adapter; 16 +package com.mang.xuedianyun.android.adapter;
17 17
18 import android.widget.AbsListView; 18 import android.widget.AbsListView;
19 import android.widget.ImageView; 19 import android.widget.ImageView;
20 20
21 21
22 -import com.mang.xdy.demo.R;  
23 -import com.mang.xdy.demo.bean.Faceicon; 22 +import com.mang.xuedianyun.android.R;
  23 +import com.mang.xuedianyun.android.bean.Faceicon;
24 24
25 import org.kymjs.kjframe.KJBitmap; 25 import org.kymjs.kjframe.KJBitmap;
26 import org.kymjs.kjframe.widget.AdapterHolder; 26 import org.kymjs.kjframe.widget.AdapterHolder;
@@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@
13 * See the License for the specific language governing permissions and 13 * See the License for the specific language governing permissions and
14 * limitations under the License. 14 * limitations under the License.
15 */ 15 */
16 -package com.mang.xdy.demo.adapter; 16 +package com.mang.xuedianyun.android.adapter;
17 17
18 import android.graphics.Bitmap; 18 import android.graphics.Bitmap;
19 import android.os.Bundle; 19 import android.os.Bundle;
@@ -23,13 +23,13 @@ import android.support.v4.app.FragmentStatePagerAdapter; @@ -23,13 +23,13 @@ import android.support.v4.app.FragmentStatePagerAdapter;
23 import android.widget.ImageView; 23 import android.widget.ImageView;
24 24
25 25
26 -import com.mang.xdy.demo.R;  
27 -import com.mang.xdy.demo.widget.chat.ChatFunctionFragment;  
28 -import com.mang.xdy.demo.widget.chat.FacePageFragment;  
29 -import com.mang.xdy.demo.widget.chat.KJChatKeyboard;  
30 -import com.mang.xdy.demo.widget.chat.OnOperationListener;  
31 -import com.mang.xdy.demo.widget.chat.PagerSlidingTabStrip;  
32 -import com.mang.xdy.demo.widget.emoji.EmojiPageFragment; 26 +import com.mang.xuedianyun.android.R;
  27 +import com.mang.xuedianyun.android.widget.chat.ChatFunctionFragment;
  28 +import com.mang.xuedianyun.android.widget.chat.FacePageFragment;
  29 +import com.mang.xuedianyun.android.widget.chat.KJChatKeyboard;
  30 +import com.mang.xuedianyun.android.widget.chat.OnOperationListener;
  31 +import com.mang.xuedianyun.android.widget.chat.PagerSlidingTabStrip;
  32 +import com.mang.xuedianyun.android.widget.emoji.EmojiPageFragment;
33 33
34 import org.kymjs.kjframe.bitmap.BitmapCreate; 34 import org.kymjs.kjframe.bitmap.BitmapCreate;
35 35
1 -package com.mang.xdy.demo.adapter; 1 +package com.mang.xuedianyun.android.adapter;
2 2
3 /** 3 /**
4 * Created by huang on 2017/4/9. 4 * Created by huang on 2017/4/9.
@@ -9,9 +9,8 @@ import android.support.v4.app.Fragment; @@ -9,9 +9,8 @@ import android.support.v4.app.Fragment;
9 import android.support.v4.app.FragmentManager; 9 import android.support.v4.app.FragmentManager;
10 import android.support.v4.app.FragmentPagerAdapter; 10 import android.support.v4.app.FragmentPagerAdapter;
11 11
12 -import com.mang.xdy.demo.fragment.ChatFragment;  
13 -import com.mang.xdy.demo.fragment.DocFragment;  
14 -import com.mang.xdy.demo.fragment.PageFragment; 12 +import com.mang.xuedianyun.android.fragment.ChatFragment;
  13 +import com.mang.xuedianyun.android.fragment.DocFragment;
15 14
16 import java.util.ArrayList; 15 import java.util.ArrayList;
17 import java.util.List; 16 import java.util.List;
1 -package com.mang.xdy.demo.application; 1 +package com.mang.xuedianyun.android.application;
2 2
3 import android.app.Activity; 3 import android.app.Activity;
4 import android.app.Application; 4 import android.app.Application;
5 import android.content.Context; 5 import android.content.Context;
6 6
7 import com.mang.xdy.core.XdySdk; 7 import com.mang.xdy.core.XdySdk;
8 -import com.mang.xdy.demo.utils.ResUtil; 8 +import com.mang.xuedianyun.android.utils.ResUtil;
9 9
10 /** 10 /**
11 * Created by abao on 2017/3/30. 11 * Created by abao on 2017/3/30.
1 -package com.mang.xdy.demo.base; 1 +package com.mang.xuedianyun.android.base;
2 2
3 import java.lang.ref.WeakReference; 3 import java.lang.ref.WeakReference;
4 4
1 -package com.mang.xdy.demo.bean; 1 +package com.mang.xuedianyun.android.bean;
2 2
3 import java.util.List; 3 import java.util.List;
4 -import java.util.List;  
5 4
6 /** 5 /**
7 * Created by Admin on 2017/3/27. 6 * Created by Admin on 2017/3/27.
1 -package com.mang.xdy.demo.bean; 1 +package com.mang.xuedianyun.android.bean;
2 2
3 /** 3 /**
4 * Created by huang on 2017/4/9. 4 * Created by huang on 2017/4/9.
1 -package com.mang.xdy.demo.bean; 1 +package com.mang.xuedianyun.android.bean;
2 2
3 /** 3 /**
4 * Created by huang on 2017/4/9. 4 * Created by huang on 2017/4/9.
1 -package com.mang.xdy.demo.bean; 1 +package com.mang.xuedianyun.android.bean;
2 2
3 /** 3 /**
4 * Created by Admin on 2017/3/25. 4 * Created by Admin on 2017/3/25.
1 -package com.mang.xdy.demo.bean; 1 +package com.mang.xuedianyun.android.bean;
2 2
3 import java.util.List; 3 import java.util.List;
4 4
1 -package com.mang.xdy.demo.bean; 1 +package com.mang.xuedianyun.android.bean;
2 2
3 public class ErrorEntity { 3 public class ErrorEntity {
4 4
1 -package com.mang.xdy.demo.bean; 1 +package com.mang.xuedianyun.android.bean;
2 2
3 /** 3 /**
4 * Created by abao on 2017/4/28. 4 * Created by abao on 2017/4/28.
@@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@
13 * See the License for the specific language governing permissions and 13 * See the License for the specific language governing permissions and
14 * limitations under the License. 14 * limitations under the License.
15 */ 15 */
16 -package com.mang.xdy.demo.bean; 16 +package com.mang.xuedianyun.android.bean;
17 17
18 import java.io.Serializable; 18 import java.io.Serializable;
19 19
1 -package com.mang.xdy.demo.bean; 1 +package com.mang.xuedianyun.android.bean;
2 2
3 /** 3 /**
4 * Created by abao on 2017/4/11. 4 * Created by abao on 2017/4/11.
1 -package com.mang.xdy.demo.bean; 1 +package com.mang.xuedianyun.android.bean;
2 2
3 /** 3 /**
4 * Created by abao on 2017/4/10. 4 * Created by abao on 2017/4/10.
1 -package com.mang.xdy.demo.bean; 1 +package com.mang.xuedianyun.android.bean;
2 2
3 /** 3 /**
4 * Created by abao on 2017/4/10. 加入课堂 4 * Created by abao on 2017/4/10. 加入课堂
1 -package com.mang.xdy.demo.bean; 1 +package com.mang.xuedianyun.android.bean;
2 2
3 /** 3 /**
4 * Created by huang on 2017/4/9. 4 * Created by huang on 2017/4/9.
1 -package com.mang.xdy.demo.bean; 1 +package com.mang.xuedianyun.android.bean;
2 2
3 /** 3 /**
4 * Created by abao on 2017/4/10. 4 * Created by abao on 2017/4/10.
1 -package com.mang.xdy.demo.bean; 1 +package com.mang.xuedianyun.android.bean;
2 2
3 /** 3 /**
4 * Created by abao on 2017/4/7. 4 * Created by abao on 2017/4/7.
@@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@
13 * See the License for the specific language governing permissions and 13 * See the License for the specific language governing permissions and
14 * limitations under the License. 14 * limitations under the License.
15 */ 15 */
16 -package com.mang.xdy.demo.bean; 16 +package com.mang.xuedianyun.android.bean;
17 17
18 /** 18 /**
19 * 聊天消息javabean 19 * 聊天消息javabean
1 -package com.mang.xdy.demo.bean; 1 +package com.mang.xuedianyun.android.bean;
2 2
3 /** 3 /**
4 * Created by Admin on 2017/3/27. 4 * Created by Admin on 2017/3/27.
1 -package com.mang.xdy.demo.bean; 1 +package com.mang.xuedianyun.android.bean;
2 2
3 /** 3 /**
4 * Created by Admin on 2017/3/26. 4 * Created by Admin on 2017/3/26.
1 -package com.mang.xdy.demo.bean; 1 +package com.mang.xuedianyun.android.bean;
2 2
3 /** 3 /**
4 * Created by abao on 2017/4/10. 4 * Created by abao on 2017/4/10.
1 -package com.mang.xdy.demo.bean; 1 +package com.mang.xuedianyun.android.bean;
2 2
3 /** 3 /**
4 * Created by abao on 2017/4/11. 4 * Created by abao on 2017/4/11.
1 -package com.mang.xdy.demo.bean; 1 +package com.mang.xuedianyun.android.bean;
2 2
3 /** 3 /**
4 * Created by abao on 2017/4/11. 4 * Created by abao on 2017/4/11.
1 -package com.mang.xdy.demo.bean; 1 +package com.mang.xuedianyun.android.bean;
2 2
3 public class ResponseEntity { 3 public class ResponseEntity {
4 private String type; 4 private String type;
1 -package com.mang.xdy.demo.bean; 1 +package com.mang.xuedianyun.android.bean;
2 2
3 /** 3 /**
4 * Created by abao on 2017/4/18. 4 * Created by abao on 2017/4/18.
1 -package com.mang.xdy.demo.bean; 1 +package com.mang.xuedianyun.android.bean;
2 2
3 /** 3 /**
4 * Created by abao on 2017/4/28. 4 * Created by abao on 2017/4/28.
1 -package com.mang.xdy.demo.bean; 1 +package com.mang.xuedianyun.android.bean;
2 2
3 /** 3 /**
4 * Created by abao on 2017/4/19. 4 * Created by abao on 2017/4/19.
1 -package com.mang.xdy.demo.bean; 1 +package com.mang.xuedianyun.android.bean;
2 2
3 // FIXME generate failure method set and get MediaId 3 // FIXME generate failure method set and get MediaId
4 // FIXME generate failure field _$Replay151 4 // FIXME generate failure field _$Replay151
1 -package com.mang.xdy.demo.bean; 1 +package com.mang.xuedianyun.android.bean;
2 2
3 import android.graphics.Bitmap; 3 import android.graphics.Bitmap;
4 4
1 -package com.mang.xdy.demo.dialog; 1 +package com.mang.xuedianyun.android.dialog;
2 2
3 import android.view.View; 3 import android.view.View;
4 import android.view.animation.Interpolator; 4 import android.view.animation.Interpolator;
1 -package com.mang.xdy.demo.dialog; 1 +package com.mang.xuedianyun.android.dialog;
2 2
3 import android.app.Dialog; 3 import android.app.Dialog;
4 import android.content.Context; 4 import android.content.Context;
@@ -15,7 +15,7 @@ import android.view.Window; @@ -15,7 +15,7 @@ import android.view.Window;
15 import android.view.WindowManager.LayoutParams; 15 import android.view.WindowManager.LayoutParams;
16 import android.widget.LinearLayout; 16 import android.widget.LinearLayout;
17 17
18 -import com.mang.xdy.demo.utils.DisplayUtil; 18 +import com.mang.xuedianyun.android.utils.DisplayUtil;
19 import com.nineoldandroids.animation.Animator; 19 import com.nineoldandroids.animation.Animator;
20 20
21 import java.lang.ref.WeakReference; 21 import java.lang.ref.WeakReference;
1 -package com.mang.xdy.demo.dialog; 1 +package com.mang.xuedianyun.android.dialog;
2 2
3 import android.content.Context; 3 import android.content.Context;
4 import android.view.Gravity; 4 import android.view.Gravity;
1 -package com.mang.xdy.demo.dialog; 1 +package com.mang.xuedianyun.android.dialog;
2 2
3 import android.content.Context; 3 import android.content.Context;
4 import android.view.MotionEvent; 4 import android.view.MotionEvent;
1 -package com.mang.xdy.demo.dialog; 1 +package com.mang.xuedianyun.android.dialog;
2 2
3 import android.graphics.drawable.ColorDrawable; 3 import android.graphics.drawable.ColorDrawable;
4 import android.graphics.drawable.Drawable; 4 import android.graphics.drawable.Drawable;
1 -package com.mang.xdy.demo.dialog; 1 +package com.mang.xuedianyun.android.dialog;
2 2
3 import android.content.Context; 3 import android.content.Context;
4 import android.graphics.Color; 4 import android.graphics.Color;
@@ -9,7 +9,7 @@ import android.view.View; @@ -9,7 +9,7 @@ import android.view.View;
9 import android.widget.LinearLayout; 9 import android.widget.LinearLayout;
10 import android.widget.TextView; 10 import android.widget.TextView;
11 11
12 -import com.mang.xdy.demo.R; 12 +import com.mang.xuedianyun.android.R;
13 13
14 14
15 public class NormalDialog extends BaseDialog { 15 public class NormalDialog extends BaseDialog {
1 -package com.mang.xdy.demo.dialog; 1 +package com.mang.xuedianyun.android.dialog;
2 2
3 import android.content.Context; 3 import android.content.Context;
4 import android.graphics.Color; 4 import android.graphics.Color;
@@ -9,7 +9,7 @@ import android.view.View; @@ -9,7 +9,7 @@ import android.view.View;
9 import android.widget.LinearLayout; 9 import android.widget.LinearLayout;
10 import android.widget.TextView; 10 import android.widget.TextView;
11 11
12 -import com.mang.xdy.demo.R; 12 +import com.mang.xuedianyun.android.R;
13 13
14 14
15 /** 15 /**
1 -package com.mang.xdy.demo.dialog; 1 +package com.mang.xuedianyun.android.dialog;
2 2
3 public interface OnBtnClick { 3 public interface OnBtnClick {
4 void onBtnClick(); 4 void onBtnClick();
1 -package com.mang.xdy.demo.dialog; 1 +package com.mang.xuedianyun.android.dialog;
2 2
3 public interface OnBtnLeftClick { 3 public interface OnBtnLeftClick {
4 void onBtnLeftClick(); 4 void onBtnLeftClick();
1 -package com.mang.xdy.demo.dialog; 1 +package com.mang.xuedianyun.android.dialog;
2 2
3 public interface OnBtnRightClick { 3 public interface OnBtnRightClick {
4 void onBtnRightClick(); 4 void onBtnRightClick();
1 -package com.mang.xdy.demo.fragment; 1 +package com.mang.xuedianyun.android.fragment;
2 2
3 import android.content.Context; 3 import android.content.Context;
4 import android.os.Bundle; 4 import android.os.Bundle;
@@ -18,17 +18,17 @@ import com.google.gson.Gson; @@ -18,17 +18,17 @@ import com.google.gson.Gson;
18 import com.mang.xdy.common.Constants; 18 import com.mang.xdy.common.Constants;
19 import com.mang.xdy.utils.SPUtil; 19 import com.mang.xdy.utils.SPUtil;
20 import com.mang.xdy.core.XdySdk; 20 import com.mang.xdy.core.XdySdk;
21 -import com.mang.xdy.demo.R;  
22 -import com.mang.xdy.demo.adapter.ChatAdapter;  
23 -import com.mang.xdy.demo.bean.ChatMsgEntity;  
24 -import com.mang.xdy.demo.bean.Faceicon;  
25 -import com.mang.xdy.demo.bean.JoinClassSuccessEntity;  
26 -import com.mang.xdy.demo.bean.Message;  
27 -import com.mang.xdy.demo.bean.SendChatMsgEntity;  
28 -import com.mang.xdy.demo.utils.JsonUtil;  
29 -import com.mang.xdy.demo.widget.chat.KJChatKeyboard;  
30 -import com.mang.xdy.demo.widget.chat.OnOperationListener;  
31 -import com.mang.xdy.demo.widget.emoji.DisplayRules; 21 +import com.mang.xuedianyun.android.R;
  22 +import com.mang.xuedianyun.android.adapter.ChatAdapter;
  23 +import com.mang.xuedianyun.android.bean.ChatMsgEntity;
  24 +import com.mang.xuedianyun.android.bean.Faceicon;
  25 +import com.mang.xuedianyun.android.bean.JoinClassSuccessEntity;
  26 +import com.mang.xuedianyun.android.bean.Message;
  27 +import com.mang.xuedianyun.android.bean.SendChatMsgEntity;
  28 +import com.mang.xuedianyun.android.utils.JsonUtil;
  29 +import com.mang.xuedianyun.android.widget.chat.KJChatKeyboard;
  30 +import com.mang.xuedianyun.android.widget.chat.OnOperationListener;
  31 +import com.mang.xuedianyun.android.widget.emoji.DisplayRules;
32 import com.mang.xdy.listener.ObserverListener; 32 import com.mang.xdy.listener.ObserverListener;
33 import com.mang.xdy.utils.XdyLogUtil; 33 import com.mang.xdy.utils.XdyLogUtil;
34 34
1 -package com.mang.xdy.demo.fragment; 1 +package com.mang.xuedianyun.android.fragment;
2 2
3 import android.content.Context; 3 import android.content.Context;
4 import android.graphics.Bitmap; 4 import android.graphics.Bitmap;
@@ -11,21 +11,20 @@ import android.support.v4.app.Fragment; @@ -11,21 +11,20 @@ import android.support.v4.app.Fragment;
11 import android.text.TextUtils; 11 import android.text.TextUtils;
12 import android.util.DisplayMetrics; 12 import android.util.DisplayMetrics;
13 import android.view.LayoutInflater; 13 import android.view.LayoutInflater;
14 -import android.view.SurfaceView;  
15 import android.view.View; 14 import android.view.View;
16 import android.view.ViewGroup; 15 import android.view.ViewGroup;
17 16
18 import com.bumptech.glide.Glide; 17 import com.bumptech.glide.Glide;
19 import com.mang.xdy.common.Constants; 18 import com.mang.xdy.common.Constants;
20 import com.mang.xdy.core.XdySdk; 19 import com.mang.xdy.core.XdySdk;
21 -import com.mang.xdy.demo.R;  
22 -import com.mang.xdy.demo.base.BaseRunnable;  
23 -import com.mang.xdy.demo.bean.DocEntity;  
24 -import com.mang.xdy.demo.bean.WhiteboardUpdateEntity;  
25 -import com.mang.xdy.demo.bean.WrapDocBitMapEntity;  
26 -import com.mang.xdy.demo.utils.JsonUtil;  
27 -import com.mang.xdy.demo.utils.ToastUtil;  
28 -import com.mang.xdy.demo.widget.CanvasView; 20 +import com.mang.xuedianyun.android.R;
  21 +import com.mang.xuedianyun.android.base.BaseRunnable;
  22 +import com.mang.xuedianyun.android.bean.DocEntity;
  23 +import com.mang.xuedianyun.android.bean.WhiteboardUpdateEntity;
  24 +import com.mang.xuedianyun.android.bean.WrapDocBitMapEntity;
  25 +import com.mang.xuedianyun.android.utils.JsonUtil;
  26 +import com.mang.xuedianyun.android.utils.ToastUtil;
  27 +import com.mang.xuedianyun.android.widget.CanvasView;
29 import com.mang.xdy.listener.ObserverListener; 28 import com.mang.xdy.listener.ObserverListener;
30 import com.mang.xdy.utils.XdyLogUtil; 29 import com.mang.xdy.utils.XdyLogUtil;
31 30
@@ -85,7 +84,7 @@ public class DocFragment extends Fragment implements ObserverListener{ @@ -85,7 +84,7 @@ public class DocFragment extends Fragment implements ObserverListener{
85 @Override 84 @Override
86 public void handleMessage(Message msg) { 85 public void handleMessage(Message msg) {
87 super.handleMessage(msg); 86 super.handleMessage(msg);
88 - ToastUtil.showToastshort("图片加载失败",mContext); 87 + ToastUtil.showToastshort(getResources().getString(R.string.imge_load_error),mContext);
89 } 88 }
90 }; 89 };
91 90
@@ -99,17 +98,15 @@ public class DocFragment extends Fragment implements ObserverListener{ @@ -99,17 +98,15 @@ public class DocFragment extends Fragment implements ObserverListener{
99 98
100 99
101 public void init(){ 100 public void init(){
102 -  
103 Bundle arguments = getArguments(); 101 Bundle arguments = getArguments();
104 if(arguments!=null) 102 if(arguments!=null)
105 replay = arguments.getBoolean("replay"); 103 replay = arguments.getBoolean("replay");
106 DisplayMetrics metric = new DisplayMetrics(); 104 DisplayMetrics metric = new DisplayMetrics();
107 getWindowWith(metric); 105 getWindowWith(metric);
108 docUrlTransformBitmap(null); 106 docUrlTransformBitmap(null);
109 -// mCanvasView.setZOrderMediaOverlay(false);  
110 -// mCanvasView.setZOrderOnTop(false);  
111 -//// mCanvasView.getHolder().setFormat(SurfaceView.TRANSPARENT);  
112 -// mCanvasView.getHolder().setFormat(SurfaceView.TRANSPARENT); 107 + if(replay) {
  108 + mCanvasView.setZOrderMediaOverlay(true);
  109 + }
113 } 110 }
114 111
115 private void getWindowWith(DisplayMetrics metric) { 112 private void getWindowWith(DisplayMetrics metric) {
@@ -237,7 +234,7 @@ public class DocFragment extends Fragment implements ObserverListener{ @@ -237,7 +234,7 @@ public class DocFragment extends Fragment implements ObserverListener{
237 public void call(WrapDocBitMapEntity resource) { 234 public void call(WrapDocBitMapEntity resource) {
238 235
239 if (resource.getBitmap() == null) { 236 if (resource.getBitmap() == null) {
240 - ToastUtil.showToastshort("图片获取失败",mContext); 237 + ToastUtil.showToastshort(getResources().getString(R.string.imge_load_error),mContext);
241 Bitmap bitmap = getEmptyBitmap(); 238 Bitmap bitmap = getEmptyBitmap();
242 mCanvasView.setBitmap(bitmap, false); 239 mCanvasView.setBitmap(bitmap, false);
243 } else { 240 } else {
1 -package com.mang.xdy.demo.fragment; 1 +package com.mang.xuedianyun.android.fragment;
2 2
3 3
4 import android.os.Bundle; 4 import android.os.Bundle;
@@ -9,7 +9,7 @@ import android.view.View; @@ -9,7 +9,7 @@ import android.view.View;
9 import android.view.ViewGroup; 9 import android.view.ViewGroup;
10 import android.widget.TextView; 10 import android.widget.TextView;
11 11
12 -import com.mang.xdy.demo.R; 12 +import com.mang.xuedianyun.android.R;
13 13
14 14
15 /** 15 /**
1 -package com.mang.xdy.demo.fragment; 1 +package com.mang.xuedianyun.android.fragment;
2 2
3 3
4 import android.os.Bundle; 4 import android.os.Bundle;
@@ -7,12 +7,13 @@ import android.view.LayoutInflater; @@ -7,12 +7,13 @@ import android.view.LayoutInflater;
7 import android.view.View; 7 import android.view.View;
8 import android.view.ViewGroup; 8 import android.view.ViewGroup;
9 9
10 -import com.mang.xdy.demo.R; 10 +import com.mang.xuedianyun.android.R;
11 11
12 /** 12 /**
13 * A simple {@link Fragment} subclass. 13 * A simple {@link Fragment} subclass.
14 * Use the {@link PublishFragment#newInstance} factory method to 14 * Use the {@link PublishFragment#newInstance} factory method to
15 * create an instance of this fragment. 15 * create an instance of this fragment.
  16 + * @deprecated
16 */ 17 */
17 public class PublishFragment extends Fragment { 18 public class PublishFragment extends Fragment {
18 // TODO: Rename parameter arguments, choose names that match 19 // TODO: Rename parameter arguments, choose names that match
1 -package com.mang.xdy.demo.utils;  
2 -  
3 -import android.annotation.SuppressLint;  
4 -import android.app.Activity;  
5 -import android.content.Context;  
6 -import android.content.res.Resources;  
7 -import android.graphics.Rect;  
8 -import android.util.DisplayMetrics;  
9 -import android.view.View;  
10 -import android.view.Window;  
11 -import android.view.WindowManager;  
12 -  
13 -import java.lang.reflect.Field;  
14 -import java.lang.reflect.InvocationTargetException;  
15 -import java.lang.reflect.Method; 1 +package com.mang.xuedianyun.android.utils;
16 2
17 import android.annotation.SuppressLint; 3 import android.annotation.SuppressLint;
18 import android.app.Activity; 4 import android.app.Activity;
1 -package com.mang.xdy.demo.utils; 1 +package com.mang.xuedianyun.android.utils;
2 2
3 import android.text.TextUtils; 3 import android.text.TextUtils;
4 import android.util.Log; 4 import android.util.Log;
1 -package com.mang.xdy.demo.utils;  
2 -  
3 -import android.content.Context;  
4 -import android.content.res.Resources;  
5 -import android.support.annotation.StringRes;  
6 -  
7 -import java.io.BufferedReader;  
8 -import java.io.IOException;  
9 -import java.io.InputStream;  
10 -import java.io.InputStreamReader; 1 +package com.mang.xuedianyun.android.utils;
11 2
12 import android.content.Context; 3 import android.content.Context;
13 import android.content.res.Resources; 4 import android.content.res.Resources;
1 -package com.mang.xdy.demo.utils; 1 +package com.mang.xuedianyun.android.utils;
2 2
3 import android.content.Context; 3 import android.content.Context;
4 import android.widget.Toast; 4 import android.widget.Toast;
@@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@
11 * See the License for the specific language governing permissions and 11 * See the License for the specific language governing permissions and
12 * limitations under the License. 12 * limitations under the License.
13 */ 13 */
14 -package com.mang.xdy.demo.utils.cache; 14 +package com.mang.xuedianyun.android.utils.cache;
15 15
16 import android.content.Context; 16 import android.content.Context;
17 import android.graphics.Bitmap; 17 import android.graphics.Bitmap;
1 -package com.mang.xdy.demo.utils.cache; 1 +package com.mang.xuedianyun.android.utils.cache;
2 2
3 import android.graphics.Bitmap; 3 import android.graphics.Bitmap;
4 import android.graphics.drawable.Drawable; 4 import android.graphics.drawable.Drawable;
1 -package com.mang.xdy.demo.widget; 1 +package com.mang.xuedianyun.android.widget;
2 2
3 import android.content.Context; 3 import android.content.Context;
4 import android.graphics.Bitmap; 4 import android.graphics.Bitmap;
@@ -17,13 +17,12 @@ import android.view.SurfaceHolder; @@ -17,13 +17,12 @@ import android.view.SurfaceHolder;
17 import android.view.SurfaceView; 17 import android.view.SurfaceView;
18 import android.view.View; 18 import android.view.View;
19 19
20 -import com.mang.xdy.demo.R;  
21 -import com.mang.xdy.demo.bean.AnnotaionEntity;  
22 -import com.mang.xdy.demo.bean.PointGroupEntity;  
23 -import com.mang.xdy.demo.bean.PointXY;  
24 -import com.mang.xdy.demo.utils.DisplayUtil;  
25 -import com.mang.xdy.demo.utils.ResUtil;  
26 -import com.mang.xdy.utils.XdyLogUtil; 20 +import com.mang.xuedianyun.android.R;
  21 +import com.mang.xuedianyun.android.bean.AnnotaionEntity;
  22 +import com.mang.xuedianyun.android.bean.PointGroupEntity;
  23 +import com.mang.xuedianyun.android.bean.PointXY;
  24 +import com.mang.xuedianyun.android.utils.DisplayUtil;
  25 +import com.mang.xuedianyun.android.utils.ResUtil;
27 26
28 import java.util.ArrayList; 27 import java.util.ArrayList;
29 import java.util.Iterator; 28 import java.util.Iterator;
  1 +package com.mang.xuedianyun.android.widget.answersheet;
  2 +
  3 +import android.content.Context;
  4 +import android.os.CountDownTimer;
  5 +import android.util.AttributeSet;
  6 +import android.view.Display;
  7 +import android.view.LayoutInflater;
  8 +import android.view.View;
  9 +import android.widget.CheckBox;
  10 +import android.widget.LinearLayout;
  11 +import android.widget.RadioButton;
  12 +import android.widget.RelativeLayout;
  13 +import android.widget.TextView;
  14 +
  15 +import com.mang.xuedianyun.android.R;
  16 +import com.mang.xuedianyun.android.utils.ToastUtil;
  17 +
  18 +import butterknife.BindView;
  19 +import butterknife.ButterKnife;
  20 +import butterknife.OnClick;
  21 +
  22 +/**
  23 + * Created by abao on 2017/5/5.
  24 + * @deprecated
  25 + */
  26 +
  27 +public class AnswerSheetView extends RelativeLayout {
  28 + /*单选多选类型*/
  29 + public final static int ANSWER_TYPE_SINGLE_OR_MORE = 1;
  30 + /*对错类型*/
  31 + public final static int ANSWER_TYPE_RIGHT_OR_WRONG = 2;
  32 + /*填空*/
  33 + public final static int ANSWER_TYPE_FILLING = 3;
  34 + /*单前的type*/
  35 + private static int ANSWER_CURRENT_TYPE = 1;
  36 + /*倒计时时间 s*/
  37 + public static int ANSWER_TIMEOUT = 30;
  38 + @BindView(R.id.tv_exam_countdown)
  39 + TextView tvExamCountdown;
  40 + @BindView(R.id.rel_home_tv_exam_countdown)
  41 + RelativeLayout relHomeTvExamCountdown;
  42 + @BindView(R.id.cb_exam_A)
  43 + CheckBox cbExamA;
  44 + @BindView(R.id.cb_exam_B)
  45 + CheckBox cbExamB;
  46 + @BindView(R.id.cb_exam_C)
  47 + CheckBox cbExamC;
  48 + @BindView(R.id.cb_exam_D)
  49 + CheckBox cbExamD;
  50 + @BindView(R.id.ll_exam_SingleOrMore)
  51 + LinearLayout llExamSingleOrMore;
  52 + @BindView(R.id.rb_exam_R)
  53 + RadioButton rbExamR;
  54 + @BindView(R.id.rb_exam_W)
  55 + RadioButton rbExamW;
  56 + @BindView(R.id.ll_exam_selectRightOrWrong)
  57 + LinearLayout llExamSelectRightOrWrong;
  58 + @BindView(R.id.ll_exam_filling)
  59 + LinearLayout llExamFilling;
  60 + @BindView(R.id.tv_exam_up)
  61 + TextView tvExamUp;
  62 + @BindView(R.id.tv_exam_cancle)
  63 + TextView tvExamCancle;
  64 + @BindView(R.id.ll_exam_submit)
  65 + LinearLayout llExamSubmit;
  66 + @BindView(R.id.rel_exam_layout)
  67 + RelativeLayout relExamLayout;
  68 + @BindView(R.id.ll_exam_answer)
  69 + LinearLayout llExamAnswer;
  70 +
  71 + private AnswerCount mAnswerCount;
  72 +
  73 + private StringBuffer sb = new StringBuffer();
  74 + private Context mContext;
  75 + private String character_close="关闭";
  76 + private String character_cancle="放弃";
  77 + Display display;
  78 +
  79 + private OnAnswerLayoutChangeListener onAnswerLayoutChangeListener;
  80 + public interface OnAnswerLayoutChangeListener{
  81 + /**
  82 + * 改变显示布局的大小
  83 + * @param
  84 + */
  85 + void setAnswerSheetFramLayout(int num);
  86 +
  87 + void setAnswerSheetNormal(int num);
  88 + }
  89 + public void setOnAnswerLayoutChangeListener(OnAnswerLayoutChangeListener onAnswerLayoutChangeListener){
  90 + this.onAnswerLayoutChangeListener=onAnswerLayoutChangeListener;
  91 + }
  92 +
  93 +
  94 +
  95 + public AnswerSheetView(Context context) {
  96 + this(context, null);
  97 + }
  98 +
  99 + public AnswerSheetView(Context context, AttributeSet attrs) {
  100 + this(context, attrs, 0);
  101 + }
  102 +
  103 + public AnswerSheetView(Context context, AttributeSet attrs, int defStyleAttr) {
  104 + super(context, attrs, defStyleAttr);
  105 + mContext = context;
  106 + View view = initView(context);
  107 +
  108 + this.addView(view);
  109 + }
  110 +
  111 + public View initView(Context context) {
  112 + View view = LayoutInflater.from(context).inflate(R.layout.item_answer, null);
  113 + ButterKnife.bind(this, view);
  114 + return view;
  115 + }
  116 +
  117 + /*选择答题类型*/
  118 + public void selectAnswerSheetType(int type) {
  119 + tvExamCountdown.setText("_s");
  120 + llExamAnswer.setVisibility(View.GONE);
  121 + tvExamUp.setVisibility(View.VISIBLE);
  122 + tvExamCancle.setText(character_cancle);
  123 + switch (type) {
  124 + case ANSWER_TYPE_SINGLE_OR_MORE:
  125 + ANSWER_CURRENT_TYPE = ANSWER_TYPE_SINGLE_OR_MORE;
  126 + llExamSingleOrMore.setVisibility(View.VISIBLE);
  127 + llExamSelectRightOrWrong.setVisibility(View.GONE);
  128 + llExamFilling.setVisibility(View.GONE);
  129 + break;
  130 + case ANSWER_TYPE_RIGHT_OR_WRONG:
  131 + ANSWER_CURRENT_TYPE = ANSWER_TYPE_RIGHT_OR_WRONG;
  132 + llExamSingleOrMore.setVisibility(View.GONE);
  133 + llExamSelectRightOrWrong.setVisibility(View.VISIBLE);
  134 + llExamFilling.setVisibility(View.GONE);
  135 + break;
  136 + case ANSWER_TYPE_FILLING:
  137 + ANSWER_CURRENT_TYPE = ANSWER_TYPE_FILLING;
  138 + llExamSingleOrMore.setVisibility(View.GONE);
  139 + llExamSelectRightOrWrong.setVisibility(View.GONE);
  140 + llExamFilling.setVisibility(View.VISIBLE);
  141 + break;
  142 +
  143 + }
  144 + }
  145 +
  146 + @OnClick({R.id.tv_exam_up, R.id.tv_exam_cancle})
  147 + public void onViewClicked(View view) {
  148 + switch (view.getId()) {
  149 + case R.id.tv_exam_up:
  150 + //提交需要获取结果,清除数据,时间清理
  151 +// relExamLayout.setVisibility(GONE);
  152 + handleAnswer(ANSWER_CURRENT_TYPE);
  153 + ToastUtil.showToastshort("选择答案:" + sb.toString() + sb.length(), mContext);
  154 + recoverStatus();
  155 + setSubmitAnswer();
  156 + break;
  157 + case R.id.tv_exam_cancle:
  158 + recoverStatus();
  159 +// if(character_cancle.equals(tvExamCancle)) {
  160 +// setAnsNormalLayout(53);
  161 +// }else{
  162 +//
  163 +// }
  164 + if(relExamLayout.isShown()){
  165 + relExamLayout.setVisibility(GONE);
  166 + }
  167 + break;
  168 + }
  169 + }
  170 +
  171 + /*开始倒计时*/
  172 + public void startCountTimer(int time) {
  173 + ANSWER_TIMEOUT = time;
  174 + cancleCountTimer();
  175 + mAnswerCount = new AnswerCount(ANSWER_TIMEOUT * 1000, 1000);
  176 + mAnswerCount.start();
  177 + //提交需要获取结果,清除数据,时间清理
  178 + relExamLayout.setVisibility(VISIBLE);
  179 + }
  180 +
  181 + /*销毁倒计时*/
  182 + public void cancleCountTimer() {
  183 + if (mAnswerCount != null) {
  184 + mAnswerCount.cancel();
  185 + }
  186 + }
  187 +
  188 + /**
  189 + * 处理结果,拼装答案
  190 + *
  191 + * @param type
  192 + */
  193 + public void handleAnswer(int type) {
  194 + switch (type) {
  195 + case ANSWER_TYPE_SINGLE_OR_MORE:
  196 + handleSingleOrMore();
  197 + break;
  198 + case ANSWER_TYPE_RIGHT_OR_WRONG:
  199 + handleRightOrWrong();
  200 + break;
  201 + case ANSWER_TYPE_FILLING:
  202 +
  203 + break;
  204 + }
  205 +
  206 + }
  207 +
  208 + /*单选,多选答案拼接*/
  209 + public void handleSingleOrMore() {
  210 + sb.setLength(0);
  211 + if (cbExamA.isChecked()) {
  212 + sb.append("A");
  213 + }
  214 + if (cbExamB.isChecked()) {
  215 + sb.append("B");
  216 + }
  217 + if (cbExamC.isChecked()) {
  218 + sb.append("C");
  219 + }
  220 + if (cbExamD.isChecked()) {
  221 + sb.append("D");
  222 + }
  223 +
  224 + }
  225 +
  226 + /*处理对错*/
  227 + public void handleRightOrWrong() {
  228 + sb.setLength(0);
  229 + if (rbExamR.isChecked()) {
  230 + sb.append("对");
  231 + } else {
  232 + sb.append("错");
  233 + }
  234 +
  235 + }
  236 +
  237 + /*恢复状态*/
  238 + public void recoverStatus() {
  239 + switch (ANSWER_CURRENT_TYPE) {
  240 + case ANSWER_TYPE_SINGLE_OR_MORE:
  241 + cbExamA.setChecked(false);
  242 + cbExamB.setChecked(false);
  243 + cbExamC.setChecked(false);
  244 + cbExamD.setChecked(false);
  245 + break;
  246 + case ANSWER_TYPE_RIGHT_OR_WRONG:
  247 + rbExamR.setChecked(true);
  248 + rbExamW.setChecked(false);
  249 + break;
  250 + case ANSWER_TYPE_FILLING:
  251 + break;
  252 + }
  253 + }
  254 + /*隐藏所有题目*/
  255 + private void hideAllTitle(){
  256 + llExamSingleOrMore.setVisibility(View.GONE);
  257 + llExamSelectRightOrWrong.setVisibility(View.GONE);
  258 + llExamFilling.setVisibility(View.GONE);
  259 + }
  260 + /*设置显示答案布局大小*/
  261 + public void setAnswerLayout(int num){
  262 + if(onAnswerLayoutChangeListener!=null) {
  263 + onAnswerLayoutChangeListener.setAnswerSheetFramLayout(num);
  264 + }
  265 + }
  266 +
  267 + /*设置显示答案布局大小*/
  268 + public void setAnsNormalLayout(int num){
  269 + if(onAnswerLayoutChangeListener!=null) {
  270 + onAnswerLayoutChangeListener.setAnswerSheetNormal(num);
  271 + }
  272 + }
  273 + /*提交答案 设置*/
  274 + private void setSubmitAnswer(){
  275 + hideAllTitle();
  276 + llExamAnswer.setVisibility(View.VISIBLE);
  277 + cancleCountTimer();
  278 + tvExamUp.setVisibility(View.GONE);
  279 + tvExamCancle.setText(character_close);
  280 + setAnswerLayout(100);
  281 +
  282 + }
  283 + @OnClick(R.id.ll_exam_answer)
  284 + public void onViewClicked() {
  285 + }
  286 +
  287 + /*倒计时处理*/
  288 + class AnswerCount extends CountDownTimer {
  289 +
  290 + /**
  291 + * @param millisInFuture The number of millis in the future from the call
  292 + * to {@link #start()} until the countdown is done and {@link #onFinish()}
  293 + * is called.
  294 + * @param countDownInterval The interval along the way to receive
  295 + * {@link #onTick(long)} callbacks.
  296 + */
  297 + public AnswerCount(long millisInFuture, long countDownInterval) {
  298 + super(millisInFuture, countDownInterval);
  299 + }
  300 +
  301 + @Override
  302 + public void onTick(long millisUntilFinished) {
  303 + if (millisUntilFinished < 10) {
  304 + tvExamCountdown.setText(" " + millisUntilFinished / 1000 + "s");
  305 + } else {
  306 + tvExamCountdown.setText(millisUntilFinished / 1000 + "s");
  307 + }
  308 +
  309 + }
  310 +
  311 + @Override
  312 + public void onFinish() {
  313 + //这个结束应该做自动提交答案的工作
  314 + tvExamCountdown.setText("0s");
  315 + }
  316 + }
  317 +}
@@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@
13 * See the License for the specific language governing permissions and 13 * See the License for the specific language governing permissions and
14 * limitations under the License. 14 * limitations under the License.
15 */ 15 */
16 -package com.mang.xdy.demo.widget.chat; 16 +package com.mang.xuedianyun.android.widget.chat;
17 17
18 import android.os.Bundle; 18 import android.os.Bundle;
19 import android.view.LayoutInflater; 19 import android.view.LayoutInflater;
@@ -22,7 +22,7 @@ import android.view.ViewGroup; @@ -22,7 +22,7 @@ import android.view.ViewGroup;
22 import android.widget.LinearLayout; 22 import android.widget.LinearLayout;
23 23
24 24
25 -import com.mang.xdy.demo.R; 25 +import com.mang.xuedianyun.android.R;
26 26
27 import org.kymjs.kjframe.ui.SupportFragment; 27 import org.kymjs.kjframe.ui.SupportFragment;
28 28
@@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@
13 * See the License for the specific language governing permissions and 13 * See the License for the specific language governing permissions and
14 * limitations under the License. 14 * limitations under the License.
15 */ 15 */
16 -package com.mang.xdy.demo.widget.chat; 16 +package com.mang.xuedianyun.android.widget.chat;
17 17
18 import android.app.Activity; 18 import android.app.Activity;
19 import android.graphics.Color; 19 import android.graphics.Color;
@@ -36,9 +36,9 @@ import android.widget.RadioButton; @@ -36,9 +36,9 @@ import android.widget.RadioButton;
36 import android.widget.RadioGroup; 36 import android.widget.RadioGroup;
37 37
38 38
39 -import com.mang.xdy.demo.R;  
40 -import com.mang.xdy.demo.adapter.FaceAdapter;  
41 -import com.mang.xdy.demo.bean.Faceicon; 39 +import com.mang.xuedianyun.android.R;
  40 +import com.mang.xuedianyun.android.adapter.FaceAdapter;
  41 +import com.mang.xuedianyun.android.bean.Faceicon;
42 42
43 import org.kymjs.kjframe.ui.SupportFragment; 43 import org.kymjs.kjframe.ui.SupportFragment;
44 import org.kymjs.kjframe.utils.StringUtils; 44 import org.kymjs.kjframe.utils.StringUtils;
@@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@
13 * See the License for the specific language governing permissions and 13 * See the License for the specific language governing permissions and
14 * limitations under the License. 14 * limitations under the License.
15 */ 15 */
16 -package com.mang.xdy.demo.widget.chat; 16 +package com.mang.xuedianyun.android.widget.chat;
17 17
18 import android.app.Activity; 18 import android.app.Activity;
19 import android.content.Context; 19 import android.content.Context;
@@ -29,8 +29,8 @@ import android.widget.LinearLayout; @@ -29,8 +29,8 @@ import android.widget.LinearLayout;
29 import android.widget.RelativeLayout; 29 import android.widget.RelativeLayout;
30 30
31 31
32 -import com.mang.xdy.demo.R;  
33 -import com.mang.xdy.demo.adapter.FaceCategroyAdapter; 32 +import com.mang.xuedianyun.android.R;
  33 +import com.mang.xuedianyun.android.adapter.FaceCategroyAdapter;
34 34
35 import java.util.List; 35 import java.util.List;
36 36
@@ -13,10 +13,10 @@ @@ -13,10 +13,10 @@
13 * See the License for the specific language governing permissions and 13 * See the License for the specific language governing permissions and
14 * limitations under the License. 14 * limitations under the License.
15 */ 15 */
16 -package com.mang.xdy.demo.widget.chat; 16 +package com.mang.xuedianyun.android.widget.chat;
17 17
18 18
19 -import com.mang.xdy.demo.bean.Faceicon; 19 +import com.mang.xuedianyun.android.bean.Faceicon;
20 20
21 /** 21 /**
22 * 表情栏顶部按钮的监听器 22 * 表情栏顶部按钮的监听器
@@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@
13 * See the License for the specific language governing permissions and 13 * See the License for the specific language governing permissions and
14 * limitations under the License. 14 * limitations under the License.
15 */ 15 */
16 -package com.mang.xdy.demo.widget.chat; 16 +package com.mang.xuedianyun.android.widget.chat;
17 17
18 import android.annotation.SuppressLint; 18 import android.annotation.SuppressLint;
19 import android.content.Context; 19 import android.content.Context;
@@ -39,7 +39,7 @@ import android.widget.LinearLayout; @@ -39,7 +39,7 @@ import android.widget.LinearLayout;
39 import android.widget.TextView; 39 import android.widget.TextView;
40 40
41 41
42 -import com.mang.xdy.demo.R; 42 +import com.mang.xuedianyun.android.R;
43 43
44 import java.util.Locale; 44 import java.util.Locale;
45 45
@@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@
13 * See the License for the specific language governing permissions and 13 * See the License for the specific language governing permissions and
14 * limitations under the License. 14 * limitations under the License.
15 */ 15 */
16 -package com.mang.xdy.demo.widget.chat; 16 +package com.mang.xuedianyun.android.widget.chat;
17 17
18 import android.graphics.Rect; 18 import android.graphics.Rect;
19 import android.view.View; 19 import android.view.View;
1 -package com.mang.xdy.demo.widget.chat; 1 +package com.mang.xuedianyun.android.widget.chat;
2 2
3 import android.content.Context; 3 import android.content.Context;
4 import android.content.Intent; 4 import android.content.Intent;
  1 +package com.mang.xuedianyun.android.widget.dialog;
  2 +
  3 +import android.app.Dialog;
  4 +import android.content.Context;
  5 +import android.view.Display;
  6 +import android.view.Gravity;
  7 +import android.view.LayoutInflater;
  8 +import android.view.View;
  9 +import android.view.Window;
  10 +import android.view.WindowManager;
  11 +import android.widget.LinearLayout;
  12 +import android.widget.ScrollView;
  13 +import android.widget.TextView;
  14 +
  15 +import com.mang.xuedianyun.android.R;
  16 +
  17 +import butterknife.ButterKnife;
  18 +
  19 +
  20 +/**
  21 + * Created by abao on 2017/5/9.
  22 + * @deprecated
  23 + */
  24 +
  25 +public class AnswText {
  26 +
  27 +
  28 +
  29 +
  30 +
  31 +
  32 + /*单选多选类型*/
  33 + public final static int ANSWER_TYPE_SINGLE_OR_MORE = 1;
  34 + /*对错类型*/
  35 + public final static int ANSWER_TYPE_RIGHT_OR_WRONG = 2;
  36 + /*填空*/
  37 + public final static int ANSWER_TYPE_FILLING = 3;
  38 + /*单前的type*/
  39 + private static int ANSWER_CURRENT_TYPE = 1;
  40 + /*倒计时时间 s*/
  41 + public static int ANSWER_TIMEOUT = 30;
  42 +
  43 +
  44 +
  45 + private StringBuffer sb = new StringBuffer();
  46 + private Context mContext;
  47 + private String character_close="关闭";
  48 + private String character_cancle="放弃";
  49 +
  50 + private OnAnswerLayoutChangeListener onAnswerLayoutChangeListener;
  51 + public interface OnAnswerLayoutChangeListener{
  52 + /**
  53 + * 改变显示布局的大小
  54 + * @param
  55 + */
  56 + void setAnswerSheetFramLayout(int num);
  57 +
  58 + void setAnswerSheetNormal(int num);
  59 + }
  60 + public void setOnAnswerLayoutChangeListener(OnAnswerLayoutChangeListener onAnswerLayoutChangeListener){
  61 + this.onAnswerLayoutChangeListener=onAnswerLayoutChangeListener;
  62 + }
  63 +
  64 + private Context context;
  65 + private Dialog dialog;
  66 + private TextView txt_title;
  67 + private TextView txt_cancel;
  68 + private LinearLayout lLayout_content;
  69 + private ScrollView sLayout_content;
  70 + private boolean showTitle = false;
  71 +// private List<ActionSheetDialog.SheetItem> sheetItemList;
  72 + private Display display;
  73 +
  74 + public AnswText(Context context) {
  75 + this.context = context;
  76 + this.mContext=context;
  77 + WindowManager windowManager = (WindowManager) context
  78 + .getSystemService(Context.WINDOW_SERVICE);
  79 + display = windowManager.getDefaultDisplay();
  80 + }
  81 +
  82 + public AnswText builder() {
  83 + View view = LayoutInflater.from(context).inflate(
  84 + R.layout.view_text, null);
  85 + ButterKnife.bind(this,view);
  86 + view.setMinimumWidth(display.getWidth());
  87 +
  88 + dialog = new Dialog(context, R.style.ActionSheetDialogStyle);
  89 + dialog.setContentView(view);
  90 + Window dialogWindow = dialog.getWindow();
  91 + dialogWindow.setGravity(Gravity.LEFT | Gravity.BOTTOM);
  92 +// dialogWindow.setGravity( Gravity.BOTTOM);
  93 + WindowManager.LayoutParams lp = dialogWindow.getAttributes();
  94 + lp.x = 0;
  95 + lp.y = 0;
  96 + dialogWindow.setAttributes(lp);
  97 + return this;
  98 + }
  99 + public void show() {
  100 + dialog.show();
  101 + }
  102 +
  103 +
  104 +
  105 +}
  106 +
1 -package com.mang.xdy.demo.widget.dialog; 1 +package com.mang.xuedianyun.android.widget.dialog;
2 2
3 import android.app.Dialog; 3 import android.app.Dialog;
4 import android.content.Context; 4 import android.content.Context;
@@ -12,15 +12,14 @@ import android.view.ViewGroup; @@ -12,15 +12,14 @@ import android.view.ViewGroup;
12 import android.view.Window; 12 import android.view.Window;
13 import android.view.WindowManager; 13 import android.view.WindowManager;
14 import android.widget.CheckBox; 14 import android.widget.CheckBox;
15 -import android.widget.ImageView;  
16 import android.widget.LinearLayout; 15 import android.widget.LinearLayout;
17 import android.widget.RadioButton; 16 import android.widget.RadioButton;
18 import android.widget.RelativeLayout; 17 import android.widget.RelativeLayout;
19 import android.widget.ScrollView; 18 import android.widget.ScrollView;
20 import android.widget.TextView; 19 import android.widget.TextView;
21 20
22 -import com.mang.xdy.demo.R;  
23 -import com.mang.xdy.demo.utils.ToastUtil; 21 +import com.mang.xuedianyun.android.R;
  22 +import com.mang.xuedianyun.android.utils.ToastUtil;
24 import com.mang.xdy.utils.XdyLogUtil; 23 import com.mang.xdy.utils.XdyLogUtil;
25 import com.mang.xdy.utils.XdyStringUtils; 24 import com.mang.xdy.utils.XdyStringUtils;
26 25
1 -package com.mang.xdy.demo.widget.dialog; 1 +package com.mang.xuedianyun.android.widget.dialog;
2 2
3 import android.content.Context; 3 import android.content.Context;
4 import android.view.Gravity; 4 import android.view.Gravity;
@@ -7,8 +7,8 @@ import android.widget.Button; @@ -7,8 +7,8 @@ import android.widget.Button;
7 import android.widget.EditText; 7 import android.widget.EditText;
8 8
9 9
10 -import com.mang.xdy.demo.R;  
11 -import com.mang.xdy.demo.dialog.BaseDialog; 10 +import com.mang.xuedianyun.android.R;
  11 +import com.mang.xuedianyun.android.dialog.BaseDialog;
12 import com.mang.xdy.utils.UIUtils; 12 import com.mang.xdy.utils.UIUtils;
13 13
14 import org.greenrobot.eventbus.EventBus; 14 import org.greenrobot.eventbus.EventBus;
1 -package com.mang.xdy.demo.widget.emoji; 1 +package com.mang.xuedianyun.android.widget.emoji;
2 2
3 import android.view.KeyEvent; 3 import android.view.KeyEvent;
4 import android.widget.EditText; 4 import android.widget.EditText;
@@ -13,13 +13,13 @@ @@ -13,13 +13,13 @@
13 * See the License for the specific language governing permissions and 13 * See the License for the specific language governing permissions and
14 * limitations under the License. 14 * limitations under the License.
15 */ 15 */
16 -package com.mang.xdy.demo.widget.emoji; 16 +package com.mang.xuedianyun.android.widget.emoji;
17 17
18 import android.widget.AbsListView; 18 import android.widget.AbsListView;
19 import android.widget.TextView; 19 import android.widget.TextView;
20 20
21 21
22 -import com.mang.xdy.demo.R; 22 +import com.mang.xuedianyun.android.R;
23 23
24 import org.kymjs.kjframe.widget.AdapterHolder; 24 import org.kymjs.kjframe.widget.AdapterHolder;
25 import org.kymjs.kjframe.widget.KJAdapter; 25 import org.kymjs.kjframe.widget.KJAdapter;
@@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@
13 * See the License for the specific language governing permissions and 13 * See the License for the specific language governing permissions and
14 * limitations under the License. 14 * limitations under the License.
15 */ 15 */
16 -package com.mang.xdy.demo.widget.emoji; 16 +package com.mang.xuedianyun.android.widget.emoji;
17 17
18 import android.app.Activity; 18 import android.app.Activity;
19 import android.os.Bundle; 19 import android.os.Bundle;
@@ -31,8 +31,8 @@ import android.widget.RadioButton; @@ -31,8 +31,8 @@ import android.widget.RadioButton;
31 import android.widget.RadioGroup; 31 import android.widget.RadioGroup;
32 32
33 33
34 -import com.mang.xdy.demo.R;  
35 -import com.mang.xdy.demo.widget.chat.OnOperationListener; 34 +import com.mang.xuedianyun.android.R;
  35 +import com.mang.xuedianyun.android.widget.chat.OnOperationListener;
36 36
37 import org.kymjs.kjframe.ui.SupportFragment; 37 import org.kymjs.kjframe.ui.SupportFragment;
38 38
@@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@
13 * See the License for the specific language governing permissions and 13 * See the License for the specific language governing permissions and
14 * limitations under the License. 14 * limitations under the License.
15 */ 15 */
16 -package com.mang.xdy.demo.widget.emoji; 16 +package com.mang.xuedianyun.android.widget.emoji;
17 17
18 /** 18 /**
19 * emoji表情的javabean 19 * emoji表情的javabean
1 -package com.mang.xdy.demo.widget.emoji; 1 +package com.mang.xuedianyun.android.widget.emoji;
2 2
3 3
4 -import com.mang.xdy.demo.R; 4 +import com.mang.xuedianyun.android.R;
5 5
6 import java.util.ArrayList; 6 import java.util.ArrayList;
7 import java.util.HashMap; 7 import java.util.HashMap;
1 -package com.mang.xdy.demo.widget.emoji; 1 +package com.mang.xuedianyun.android.widget.emoji;
2 2
3 import android.content.Context; 3 import android.content.Context;
4 import android.content.res.TypedArray; 4 import android.content.res.TypedArray;
1 -package com.mang.xdy.demo.widget.emoji; 1 +package com.mang.xuedianyun.android.widget.emoji;
2 2
3 import android.content.Context; 3 import android.content.Context;
4 import android.content.res.TypedArray; 4 import android.content.res.TypedArray;
1 -package com.mang.xdy.demo.widget.view; 1 +package com.mang.xuedianyun.android.widget.view;
2 2
3 import android.content.Context; 3 import android.content.Context;
4 import android.os.Build; 4 import android.os.Build;
@@ -7,7 +7,7 @@ import android.view.View; @@ -7,7 +7,7 @@ import android.view.View;
7 import android.view.ViewGroup; 7 import android.view.ViewGroup;
8 import android.widget.RelativeLayout; 8 import android.widget.RelativeLayout;
9 9
10 -import com.mang.xdy.demo.utils.DisplayUtil; 10 +import com.mang.xuedianyun.android.utils.DisplayUtil;
11 11
12 12
13 public class AutoAdaptHeaderViewGroup extends RelativeLayout { 13 public class AutoAdaptHeaderViewGroup extends RelativeLayout {
1 -package com.mang.xdy.demo.widget.view; 1 +package com.mang.xuedianyun.android.widget.view;
2 2
3 import android.content.Context; 3 import android.content.Context;
4 import android.support.v4.view.ViewPager; 4 import android.support.v4.view.ViewPager;
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<selector xmlns:android="http://schemas.android.com/apk/res/android">
  3 + <item android:drawable="@color/home_btn_green_press" android:state_pressed="true"></item>
  4 + <item android:drawable="@color/home_btn_green_press" android:state_checked="true"></item>
  5 + <item android:drawable="@color/home_btn_green"></item>
  6 +</selector>
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<selector xmlns:android="http://schemas.android.com/apk/res/android">
  3 + <item android:drawable="@drawable/answer_select" android:state_checked="true" />
  4 + <item android:drawable="@drawable/answer_unselect" />
  5 +</selector>
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<selector xmlns:android="http://schemas.android.com/apk/res/android">
  3 + <item android:drawable="@drawable/spreadback" android:state_checked="true" />
  4 + <item android:drawable="@drawable/foldback" />
  5 +</selector>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<shape
  3 + xmlns:android="http://schemas.android.com/apk/res/android"
  4 + android:shape="oval"
  5 + android:useLevel="false" >
  6 + <solid android:color="@color/colorSkyBlue" />
  7 + <!--<padding-->
  8 + <!--android:left="2dp"-->
  9 + <!--android:top="1dp"-->
  10 + <!--android:right="2dp"-->
  11 + <!--android:bottom="1dp" />-->
  12 + <!--<solid-->
  13 + <!--android:color="@color/actionsheet_red" />-->
  14 + <!--<stroke-->
  15 + <!--android:width="1dp"-->
  16 + <!--android:color="@android:color/white" />-->
  17 + <size android:width="18dp"
  18 + android:height="18dp" />
  19 +</shape>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<shape
  3 + xmlns:android="http://schemas.android.com/apk/res/android"
  4 + android:shape="oval"
  5 + android:useLevel="false" >
  6 + <solid android:color="@color/actionsheet_red" />
  7 + <!--<padding-->
  8 + <!--android:left="2dp"-->
  9 + <!--android:top="1dp"-->
  10 + <!--android:right="2dp"-->
  11 + <!--android:bottom="1dp" />-->
  12 + <!--<solid-->
  13 + <!--android:color="@color/actionsheet_red" />-->
  14 + <!--<stroke-->
  15 + <!--android:width="1dp"-->
  16 + <!--android:color="@android:color/white" />-->
  17 + <size android:width="18dp"
  18 + android:height="18dp" />
  19 +</shape>
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<shape xmlns:android="http://schemas.android.com/apk/res/android"
  3 + android:shape="rectangle">
  4 +
  5 + <!-- 圆角 -->
  6 + <corners android:radius="16dp" />
  7 +
  8 + <!-- 填充颜色 -->
  9 + <solid android:color="@color/colorSkyBlue" />
  10 +
  11 +
  12 + <!--&lt;!&ndash;内边距&ndash;&gt;-->
  13 + <padding
  14 + android:bottom="5dp"
  15 + android:left="5dp"
  16 + android:right="5dp"
  17 + android:top="5dp" />
  18 +</shape>
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<shape xmlns:android="http://schemas.android.com/apk/res/android"
  3 + android:shape="rectangle">
  4 +
  5 + <!-- 圆角 -->
  6 + <corners android:radius="16dp" />
  7 +
  8 + <!-- 填充颜色 -->
  9 + <solid android:color="@color/colorGrey" />
  10 +
  11 +
  12 + <!--内边距-->
  13 + <padding
  14 + android:bottom="5dp"
  15 + android:left="5dp"
  16 + android:right="5dp"
  17 + android:top="5dp" />
  18 +</shape>
@@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
5 android:layout_width="match_parent" 5 android:layout_width="match_parent"
6 android:layout_height="match_parent" 6 android:layout_height="match_parent"
7 android:orientation="vertical" 7 android:orientation="vertical"
8 - tools:context="com.mang.xdy.demo.MainActivity"> 8 + tools:context="com.mang.xuedianyun.android.MainActivity">
9 <RelativeLayout 9 <RelativeLayout
10 android:id="@+id/rl_home_close" 10 android:id="@+id/rl_home_close"
11 android:layout_width="@dimen/ui_DIMEN_98.0PX" 11 android:layout_width="@dimen/ui_DIMEN_98.0PX"
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3 + xmlns:tools="http://schemas.android.com/tools"
  4 + xmlns:custom="http://schemas.android.com/apk/res-auto"
  5 + android:id="@+id/activity_video_play"
  6 + android:layout_width="match_parent"
  7 + android:layout_height="match_parent"
  8 + android:orientation="vertical"
  9 + android:background="#e3e4e6"
  10 + tools:context="com.mang.xuedianyun.android.activity.VideoPlayActivity">
  11 + <RelativeLayout
  12 + android:id="@+id/avg_videoPlay_back"
  13 + android:layout_width="match_parent"
  14 + android:layout_height="wrap_content"
  15 + android:layout_alignParentLeft="true"
  16 + android:layout_alignParentStart="true"
  17 + android:layout_alignParentTop="true"
  18 + android:paddingLeft="@dimen/ui_DIMEN_20.0PX"
  19 + android:paddingRight="@dimen/ui_DIMEN_20.0PX">
  20 +
  21 + <ImageView
  22 + android:id="@+id/img_videoPlay_back"
  23 + android:layout_width="wrap_content"
  24 + android:layout_height="@dimen/ui_titlebar_height"
  25 + android:paddingRight="10dp"
  26 + android:paddingLeft="15dp"
  27 + android:src="@mipmap/back"/>
  28 + <TextView
  29 + android:layout_toRightOf="@+id/img_videoPlay_back"
  30 + android:layout_width="wrap_content"
  31 + style="@style/ui_wrapTvBaseStyle"
  32 + android:layout_height="@dimen/ui_titlebar_height"
  33 + android:text="@string/home_title_back"
  34 + android:gravity="center"
  35 + android:textColor="@color/white"
  36 + android:visibility="gone"
  37 + />
  38 + <TextView
  39 + android:id="@+id/tv_videoPlay_className"
  40 + style="@style/ui_wrapTvBaseStyle"
  41 + android:layout_height="@dimen/ui_titlebar_height"
  42 + android:gravity="center"
  43 + android:layout_centerHorizontal="true"
  44 + android:textColor="@color/white"
  45 + android:layout_toRightOf="@+id/img_videoPlay_back"
  46 + tools:text="dfdfdfdfdfdf"
  47 + android:textSize="@dimen/ui_DIMEN_34.0PX"/>
  48 + </RelativeLayout>
  49 + <!--白板+right-->
  50 + <RelativeLayout
  51 + android:layout_width="match_parent"
  52 + android:layout_height="match_parent"
  53 + android:orientation="horizontal"
  54 + android:layout_below="@+id/avg_videoPlay_back"
  55 + android:layout_above="@+id/fl_media"
  56 + >
  57 +
  58 + <LinearLayout
  59 + android:id="@+id/ll_videoPlay_right"
  60 + android:layout_width="wrap_content"
  61 + android:layout_height="match_parent"
  62 + android:layout_weight="1"
  63 + android:orientation="vertical"
  64 + android:layout_alignParentRight="true"
  65 + >
  66 + <RelativeLayout
  67 + android:id="@+id/rel_videoPlay_play"
  68 + android:layout_width="255dp"
  69 + android:layout_alignParentRight="true"
  70 + android:layout_weight="1"
  71 + android:layout_height="wrap_content">
  72 + <com.pili.pldroid.player.widget.PLVideoTextureView
  73 + android:id="@+id/img_playVideo_replay"
  74 + android:layout_width="match_parent"
  75 + android:layout_height="match_parent"
  76 + android:layout_gravity="center"/>
  77 + <SurfaceView
  78 + android:id="@+id/surfaceview_playVideo"
  79 + android:layout_width="match_parent"
  80 + android:layout_height="match_parent"
  81 + />
  82 + <ImageView
  83 + android:id="@+id/img_playVideo_novideo"
  84 + android:layout_width="match_parent"
  85 + android:layout_height="match_parent"
  86 + android:background="@mipmap/novideo"
  87 + />
  88 + <FrameLayout
  89 + android:layout_width="match_parent"
  90 + android:layout_height="wrap_content">
  91 +
  92 + </FrameLayout>
  93 + <LinearLayout
  94 + android:layout_width="wrap_content"
  95 + android:layout_height="wrap_content"
  96 + android:orientation="vertical"
  97 + android:layout_alignParentRight="true"
  98 + android:id="@+id/linearLayout">
  99 +
  100 + </LinearLayout>
  101 +
  102 +
  103 +
  104 + </RelativeLayout>
  105 +
  106 + <!--推流-->
  107 + <RelativeLayout
  108 + android:id="@+id/rel_videoPlay_publish"
  109 + android:layout_width="255dp"
  110 + android:layout_height="wrap_content"
  111 + android:layout_weight="1"
  112 + android:layout_below="@+id/rel_videoPlay_play"
  113 + android:layout_alignParentRight="true"
  114 + android:layout_alignLeft="@+id/rel_videoPlay_play"
  115 + android:layout_marginTop="8dp"
  116 + >
  117 +
  118 + <SurfaceView
  119 + android:id="@+id/sur_plaVideo_publish"
  120 + android:layout_width="match_parent"
  121 + android:layout_height="match_parent"
  122 + android:visibility="gone"
  123 + tools:visibility="visible"
  124 + android:layout_alignParentRight="true"
  125 + android:layout_alignParentBottom="true"
  126 + />
  127 + <FrameLayout
  128 + android:id="@+id/fra_videoPlay_student_cover"
  129 + android:layout_width="match_parent"
  130 + android:layout_height="match_parent"
  131 + android:layout_centerInParent="true"
  132 + >
  133 + <ImageView
  134 + android:layout_width="wrap_content"
  135 + android:layout_height="wrap_content"
  136 + android:background="@mipmap/student"
  137 + tools:visibility="visible"
  138 + android:layout_gravity="center"
  139 + android:scaleType="fitCenter"
  140 + />
  141 + </FrameLayout>
  142 +
  143 + <ImageView
  144 + android:id="@+id/img_playVideo_publishAudio"
  145 + android:layout_width="match_parent"
  146 + android:layout_height="match_parent"
  147 + android:background="@mipmap/audio_mode"
  148 + android:visibility="gone"
  149 + tools:visibility="visible"
  150 + android:scaleType="fitCenter"
  151 + android:layout_alignParentRight="true"
  152 + android:layout_alignParentBottom="true"
  153 + />
  154 + <FrameLayout
  155 + android:id="@+id/fra_videoPlay_start"
  156 + android:layout_width="50dp"
  157 + android:layout_height="50dp"
  158 +
  159 + tools:visibility="visible"
  160 + android:layout_alignParentLeft="true"
  161 + android:layout_alignParentBottom="true"
  162 + >
  163 + <ImageView
  164 + android:id="@+id/img_videoPlay_start"
  165 + android:layout_width="20dp"
  166 + android:layout_height="12dp"
  167 + android:layout_marginTop="20dp"
  168 + android:layout_marginLeft="5dp"
  169 + android:background="@mipmap/camera_normal2x"
  170 + />
  171 + </FrameLayout>
  172 + <!--音频-->
  173 + <FrameLayout
  174 + android:id="@+id/fra_videoPlay_start_audio"
  175 + android:layout_width="50dp"
  176 + android:layout_height="50dp"
  177 + android:layout_toRightOf="@+id/fra_videoPlay_start"
  178 + tools:visibility="visible"
  179 + android:layout_alignParentBottom="true"
  180 + >
  181 + <ImageView
  182 + android:id="@+id/img_videoPlay_start_audio"
  183 + android:layout_width="12dp"
  184 + android:layout_height="20dp"
  185 + android:layout_marginTop="15dp"
  186 + android:background="@mipmap/mic_normal2x"
  187 + />
  188 + </FrameLayout>
  189 +
  190 + <FrameLayout
  191 + android:id="@+id/fra_videoPlay_stopPublish"
  192 + android:layout_width="70dp"
  193 + android:layout_height="50dp"
  194 + android:visibility="gone"
  195 + tools:visibility="visible"
  196 + android:layout_alignParentLeft="true"
  197 + android:layout_alignParentBottom="true"
  198 + android:layout_alignBottom="@+id/sur_plaVideo_publish"
  199 + >
  200 + <ImageView
  201 + android:id="@+id/img_videoPlay_stopPublish"
  202 + android:layout_width="wrap_content"
  203 + android:layout_height="wrap_content"
  204 + android:layout_marginTop="20dp"
  205 + android:layout_marginLeft="15dp"
  206 + android:enabled="false"
  207 + android:background="@mipmap/hangup_normal2x"
  208 + />
  209 + </FrameLayout>
  210 + </RelativeLayout>
  211 +
  212 + <LinearLayout
  213 + android:id="@+id/ll_videoPlay_tablet_chat"
  214 + android:layout_width="255dp"
  215 + android:layout_height="match_parent"
  216 + android:orientation="vertical"
  217 + android:layout_marginTop="8dp"
  218 + />
  219 + </LinearLayout>
  220 + <!--Tablet文档-->
  221 + <LinearLayout
  222 + android:id="@+id/ll_videoPlay_tablet_doc"
  223 + android:layout_width="match_parent"
  224 + android:layout_height="match_parent"
  225 + android:layout_weight="3"
  226 + android:orientation="vertical"
  227 + android:layout_marginRight="5dp"
  228 + android:layout_marginLeft="5dp"
  229 + android:layout_toLeftOf="@+id/ll_videoPlay_right"
  230 + />
  231 +
  232 + </RelativeLayout>
  233 + <com.flyco.tablayout.SlidingTabLayout
  234 + android:id="@+id/stl_videoPlay_tab"
  235 + android:layout_width="match_parent"
  236 + android:layout_height="@dimen/ui_titlebar_height"
  237 + android:layout_alignParentLeft="true"
  238 + android:layout_alignParentStart="true"
  239 + android:background="#fafafa"
  240 + custom:tl_indicator_color="@color/home_tab_selected"
  241 + custom:tl_indicator_corner_radius="1.5dp"
  242 + custom:tl_indicator_height="@dimen/ui_DIMEN_5.0PX"
  243 + custom:tl_tab_space_equal="true"
  244 + custom:tl_textSelectColor="@color/home_tab_selected"
  245 + custom:tl_textUnselectColor="@color/home_tab_unselected"
  246 + custom:tl_textsize="@dimen/ui_DIMEN_28.0PX"/>
  247 + <com.mang.xuedianyun.android.widget.view.NoScrollViewPager
  248 + android:id="@+id/viewpager"
  249 + android:layout_below="@+id/stl_videoPlay_tab"
  250 + android:layout_width="wrap_content"
  251 + android:layout_height="wrap_content"
  252 + android:layout_alignRight="@+id/stl_videoPlay_tab"
  253 +
  254 +
  255 + android:background="@android:color/white" >
  256 +
  257 + </com.mang.xuedianyun.android.widget.view.NoScrollViewPager>
  258 +
  259 +
  260 + <FrameLayout
  261 + android:id="@+id/fl_media"
  262 + android:layout_width="match_parent"
  263 + android:layout_height="wrap_content"
  264 + android:layout_alignParentBottom="true"
  265 + >
  266 + <include
  267 + layout="@layout/home_media_controller"
  268 + android:layout_width="match_parent"
  269 + android:layout_height="wrap_content"/>
  270 + </FrameLayout>
  271 +
  272 +
  273 +</RelativeLayout>
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3 + xmlns:tools="http://schemas.android.com/tools"
  4 + android:id="@+id/activity_video_play"
  5 + android:layout_width="match_parent"
  6 + android:layout_height="match_parent"
  7 + android:orientation="vertical"
  8 + tools:context="com.mang.xuedianyun.android.activity.VideoPlayActivity">
  9 + <RelativeLayout
  10 + android:layout_width="wrap_content"
  11 + android:layout_height="wrap_content"
  12 + android:visibility="gone"
  13 + >
  14 + <SurfaceView
  15 + android:id="@+id/surfaceview_playVideo"
  16 + android:layout_width="match_parent"
  17 + android:layout_height="200dp"
  18 + android:visibility="gone"/>
  19 + <ImageView
  20 + android:id="@+id/img_playVideo_novideo"
  21 + android:layout_width="match_parent"
  22 + android:layout_height="200dp"
  23 + android:background="@mipmap/novideo"
  24 + />
  25 + </RelativeLayout>
  26 + <SurfaceView
  27 + android:id="@+id/surfaceview_pubisherVideo"
  28 + android:layout_width="match_parent"
  29 + android:layout_height="300dp" />
  30 + <android.support.design.widget.TabLayout
  31 + android:id="@+id/sliding_tabs"
  32 + android:layout_width="match_parent"
  33 + android:layout_height="wrap_content"
  34 + />
  35 +
  36 + <android.support.v4.view.ViewPager
  37 + android:id="@+id/viewpager"
  38 + android:layout_width="match_parent"
  39 + android:layout_height="0px"
  40 + android:layout_weight="1"
  41 + android:background="@android:color/white" />
  42 + <TextView
  43 + android:id="@+id/tv_videoPlay_url"
  44 + android:layout_width="wrap_content"
  45 + android:layout_height="wrap_content"
  46 + />
  47 + <LinearLayout
  48 + android:layout_width="match_parent"
  49 + android:layout_height="wrap_content"
  50 + android:orientation="horizontal">
  51 + <Button
  52 + android:id="@+id/btn_videoPlay_chat"
  53 + android:layout_width="wrap_content"
  54 + android:layout_height="wrap_content"
  55 + android:text="发送hello"
  56 + android:visibility="gone"
  57 + />
  58 + <Button
  59 + android:id="@+id/btn_videoPlay_pubsherVideo"
  60 + android:layout_width="wrap_content"
  61 + android:layout_height="wrap_content"
  62 + android:text="获取推流地址推送视频"
  63 + android:enabled="false"
  64 + />
  65 + <Button
  66 + android:id="@+id/btn_videoPlay_publisherAudio"
  67 + android:layout_width="wrap_content"
  68 + android:layout_height="wrap_content"
  69 + android:text="获取推流地址推送音频"
  70 + android:enabled="false"
  71 + />
  72 + <Button
  73 + android:id="@+id/btn_videoPlay_stop"
  74 + android:layout_width="wrap_content"
  75 + android:layout_height="wrap_content"
  76 + android:text="停止推流"
  77 + />
  78 + </LinearLayout>
  79 +</LinearLayout>
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<LinearLayout
  3 + android:layout_width="@dimen/ui_DIMEN_500.0PX"
  4 + android:layout_height="wrap_content"
  5 + android:layout_centerInParent="true"
  6 + android:background="@drawable/radius_solid_white_stroke_999"
  7 + android:gravity="center_horizontal"
  8 + android:orientation="vertical"
  9 + android:paddingBottom="@dimen/ui_DIMEN_20.0PX"
  10 + xmlns:android="http://schemas.android.com/apk/res/android">
  11 +<EditText
  12 + android:id="@+id/dialog_edt_username"
  13 + style="@style/home_login_edit_style"
  14 + android:hint="用户名"/>
  15 + <EditText
  16 + android:id="@+id/dialog_edt_userpwd"
  17 + style="@style/home_login_edit_style"
  18 + android:hint="密码"/>
  19 + <Button
  20 + android:id="@+id/dialog_btn_enter"
  21 + android:layout_width="100dp"
  22 + android:layout_height="wrap_content"
  23 + style="@style/home_site_btn_style"
  24 + android:text="登录"
  25 + />
  26 +</LinearLayout>
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3 + android:id="@+id/ll_chat_fragment_parent"
  4 + android:layout_width="match_parent"
  5 + android:layout_height="match_parent"
  6 + android:background="#ebebeb"
  7 + android:orientation="vertical">
  8 +
  9 + <com.mang.xuedianyun.android.widget.chat.KJChatKeyboard
  10 + android:id="@+id/chat_msg_input_box"
  11 + android:layout_width="match_parent"
  12 + android:layout_height="wrap_content"
  13 + android:layout_alignParentBottom="true" />
  14 +
  15 + <ListView
  16 + android:id="@+id/chat_listview"
  17 + android:layout_width="match_parent"
  18 + android:layout_height="match_parent"
  19 + android:layout_above="@+id/chat_msg_input_box"
  20 + android:cacheColorHint="#00000000"
  21 + android:divider="@null"
  22 + android:dividerHeight="8.33dp"
  23 + android:scrollbarStyle="outsideOverlay"
  24 + android:transcriptMode="normal" />
  25 +
  26 + <View
  27 + android:id="@+id/view_line"
  28 + android:layout_width="match_parent"
  29 + android:layout_height="1dp"
  30 + android:layout_below="@id/chat_listview"
  31 + android:background="#7fd8d8d8" />
  32 +
  33 +
  34 + <!-- -->
  35 +
  36 +</RelativeLayout>
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3 + android:orientation="vertical" android:layout_width="match_parent"
  4 + android:layout_height="match_parent">
  5 + <com.mang.xuedianyun.android.widget.CanvasView
  6 + android:id="@+id/canvas_doc_show"
  7 + android:layout_width="wrap_content"
  8 + android:layout_height="wrap_content" />
  9 +</RelativeLayout>