正在显示
4 个修改的文件
包含
538 行增加
和
484 行删除
1 | -//package com.mang.xdy.demo.activity; | ||
2 | -// | ||
3 | -// import android.app.AlertDialog; | ||
4 | -// import android.app.Dialog; | ||
5 | -// import android.content.Context; | ||
6 | -// import android.content.DialogInterface; | ||
7 | -// import android.media.Image; | ||
8 | -// import android.os.Bundle; | ||
9 | -// import android.os.Handler; | ||
10 | -// import android.os.Message; | ||
11 | -// import android.support.design.widget.TabLayout; | ||
12 | -// import android.support.v4.view.ViewPager; | ||
13 | -// import android.support.v7.app.AppCompatActivity; | ||
14 | -// import android.text.TextUtils; | ||
15 | -// import android.util.Log; | ||
16 | -// import android.view.Gravity; | ||
17 | -// import android.view.SurfaceView; | ||
18 | -// import android.view.View; | ||
19 | -// import android.view.Window; | ||
20 | -// import android.view.WindowManager; | ||
21 | -// import android.widget.Button; | ||
22 | -// import android.widget.EditText; | ||
23 | -// import android.widget.ImageView; | ||
24 | -// import android.widget.TextView; | ||
25 | -// import android.widget.Toast; | ||
26 | -// | ||
27 | -// import com.eventhandle.SmartEventCallback; | ||
28 | -// import com.google.gson.Gson; | ||
29 | -// import com.mang.xdy.common.Constants; | ||
30 | -// import com.mang.xdy.core.XdySdk; | ||
31 | -// import com.mang.xdy.demo.R; | ||
32 | -// import com.mang.xdy.demo.adapter.SimpleFragmentPagerAdapter; | ||
33 | -// import com.mang.xdy.demo.bean.AudioPlayBean; | ||
34 | -// import com.mang.xdy.demo.bean.ChatBean; | ||
35 | -// import com.mang.xdy.demo.bean.DocEntity; | ||
36 | -// import com.mang.xdy.demo.bean.ErrorEntity; | ||
37 | -// import com.mang.xdy.demo.bean.InitClassSuccessEntity; | ||
38 | -// import com.mang.xdy.demo.bean.JoinClass; | ||
39 | -// import com.mang.xdy.demo.bean.LiveBean; | ||
40 | -// import com.mang.xdy.demo.bean.PublisherEntity; | ||
41 | -// import com.mang.xdy.demo.bean.PublisherVideoExitBean; | ||
42 | -// import com.mang.xdy.demo.bean.PublisherVideoReturnBean; | ||
43 | -// import com.mang.xdy.demo.bean.VideoPlayBean; | ||
44 | -// import com.mang.xdy.demo.utils.JsonUtil; | ||
45 | -// import com.mang.xdy.demo.utils.ToastUtil; | ||
46 | -// import com.mang.xdy.demo.widget.dialog.LoginDialog; | ||
47 | -// import com.mang.xdy.listener.ObserverListener; | ||
48 | -// import com.mang.xdy.utils.UIUtils; | ||
49 | -// import com.mang.xdy.utils.XdyLogUtil; | ||
50 | -// import com.mang.xdy.utils.XdyStringUtils; | ||
51 | -// | ||
52 | -// import butterknife.BindView; | ||
53 | -// import butterknife.ButterKnife; | ||
54 | -// import butterknife.OnClick; | ||
55 | -// | ||
56 | -//public class VideoPublisherActivity extends AppCompatActivity implements ObserverListener{ | ||
57 | -// private final static String TAG = "VideoPlayActivity"; | ||
58 | -// @BindView(R.id.btn_videoPlay_pubsherVideo) | ||
59 | -// Button btnVideoPlayPubsherVideo; | ||
60 | -// @BindView(R.id.btn_videoPlay_chat) | ||
61 | -// Button btnVideoPlayChat; | ||
62 | -// @BindView(R.id.tv_videoPlay_url) | ||
63 | -// TextView tv_videoPlay_url; | ||
64 | -// @BindView(R.id.surfaceview_pubisherVideo) | ||
65 | -// SurfaceView surfaceview_pubisherVideo; | ||
66 | -// @BindView(R.id.btn_videoPlay_publisherAudio) | ||
67 | -// Button btn_videoPlay_publisherAudio; | ||
68 | -//// @BindView(R.id.img_playVideo_novideo) | ||
69 | -//// ImageView img_playVideo_novideo; | ||
70 | -// private String username=""; | ||
71 | -// private String userpwd=""; | ||
72 | -// private PersonDialog personDialog; | ||
73 | -// private SimpleFragmentPagerAdapter pagerAdapter; | ||
74 | -// private XdySdk xdySdk; | ||
75 | -// private ViewPager viewPager; | ||
76 | -// //默认推送视频 | ||
77 | -// private boolean isPusherAudio=false; | ||
78 | -// /*默认是可以退出的,如果进行推流则需要主动退出*/ | ||
79 | -// private boolean isAbleback=false; | ||
80 | -// private TabLayout tabLayout; | ||
81 | -// @BindView(R.id.surfaceview_playVideo) | ||
82 | -// SurfaceView surfaceviewPlayVideo; | ||
83 | -// @BindView(R.id.btn_videoPlay_stop) | ||
84 | -// Button btn_videoPlay_stop; | ||
85 | -// private String initClass = ""; | ||
86 | -// private String publisherSuccess=""; | ||
87 | -// /*视频成功返回值*/ | ||
88 | -// private PublisherVideoReturnBean publisherVideoReturnBean; | ||
89 | -// private Handler handler = new Handler() { | ||
90 | -// @Override | ||
91 | -// public void handleMessage(Message msg) { | ||
92 | -// super.handleMessage(msg); | ||
93 | -// switch (msg.what) { | ||
94 | -// case -2: | ||
95 | -// //加入课堂输入用户名,密码 | ||
96 | -// joinClass("", (Boolean) msg.obj); | ||
97 | -// break; | ||
98 | -// case -1: | ||
99 | -// //退出 | ||
100 | -// // xdySdk.api("leaveClass", ""); | ||
101 | -// break; | ||
102 | -// case 0: | ||
103 | -// parseJoinClass((String) msg.obj,true); | ||
104 | -// break; | ||
105 | -// case 7: | ||
106 | -// break; | ||
107 | -// case 8: | ||
108 | -// btnVideoPlayPubsherVideo.setEnabled(true); | ||
109 | -// btn_videoPlay_publisherAudio.setEnabled(true); | ||
110 | -// break; | ||
111 | -// | ||
112 | -// } | ||
113 | -// } | ||
114 | -// }; | ||
115 | -// | ||
116 | -// @Override | ||
117 | -// protected void onCreate(final Bundle savedInstanceState) { | ||
118 | -// super.onCreate(savedInstanceState); | ||
119 | -// getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); //屏幕常亮 | ||
120 | -// setContentView(R.layout.activity_video_publisher); | ||
121 | -// ButterKnife.bind(this); | ||
122 | -// btn_videoPlay_publisherAudio.setVisibility(View.GONE); | ||
123 | -//// setTablayout(); | ||
124 | -// xdySdk=XdySdk.getXdyInstance(); | ||
125 | -// xdySdk.add(this); | ||
126 | -// init(); | ||
127 | -// XdyLogUtil.e(TAG,"当前线程 main:"+android.os.Process.myPid()+"线程:"+Thread.currentThread().getId()+""); | ||
128 | -// xdySdk.setOnXdyAsyncMessageLitener(new XdySdk.OnXdyAsyncMessageLitener() { | ||
129 | -// @Override | ||
130 | -// public void onXdyAsyncMessageReceiver(String type, String response) { | ||
131 | -// | ||
132 | -// switch (type) { | ||
133 | -// case "class_init_success": | ||
134 | -// ToastUtil.showToastshort("初始化课堂成功", VideoPublisherActivity.this); | ||
135 | -// Message message = Message.obtain(); | ||
136 | -// message.obj = response; | ||
137 | -// message.what = 0; | ||
138 | -// handler.sendMessage(message); | ||
139 | -// break; | ||
140 | -// case "class_join_success": | ||
141 | -// //加入课堂成功 | ||
142 | -// UIUtils.closeDialog(mLoginDialog); | ||
143 | -// ToastUtil.showToastshort("加入课堂成功", VideoPublisherActivity.this); | ||
144 | -// //只有加入课堂成功才可以点击推流的按钮 | ||
145 | -// handler.sendEmptyMessage(8); | ||
146 | -// break; | ||
147 | -// case "video_stop": | ||
148 | -//// handler.sendEmptyMessage(7); | ||
149 | -// break; | ||
150 | -// case "audio_stop": | ||
151 | -// | ||
152 | -// break; | ||
153 | -// } | ||
154 | -// XdyLogUtil.e(TAG,"type:"+type+" response:"+response); | ||
155 | -// } | ||
156 | -// }); | ||
157 | -// } | ||
158 | -// | ||
159 | -// public void init() { | ||
160 | -// initClass = getIntent().getStringExtra("init"); | ||
161 | -// xdySdk.api("init", initClass); | ||
162 | -// | ||
163 | -// } | ||
164 | -//private LoginDialog mLoginDialog; | ||
165 | -// //判断解析是否有密码 | ||
166 | -// public void parseJoinClass(String rsponse,boolean isShowPwd){ | ||
167 | -// InitClassSuccessEntity initClassSuccessEntity=JsonUtil.parseJsonToBean(rsponse,InitClassSuccessEntity.class); | ||
168 | -// if(initClassSuccessEntity!=null) { | ||
169 | -// if (initClassSuccessEntity.isPasswordRequired()) { | ||
170 | -// isShowPwd=true; | ||
171 | -// } else { | ||
172 | -// isShowPwd=false; | ||
173 | -// userpwd = "123321"; | ||
174 | -// } | ||
175 | -// } | ||
176 | -// | ||
177 | -// if (mLoginDialog == null) { | ||
178 | -// mLoginDialog = new LoginDialog(this, isShowPwd, null); | ||
179 | -// mLoginDialog.show(); | ||
180 | -// mLoginDialog.setCanceledOnTouchOutside(false); | ||
181 | -// final boolean finalIsShowPwd = isShowPwd; | ||
182 | -// mLoginDialog.setBtnClick(new View.OnClickListener() { | ||
183 | -// @Override | ||
184 | -// public void onClick(View view) { | ||
185 | -// String[] nameAndPwd = mLoginDialog.getNameAndPwd(); | ||
186 | -// joinClass(nameAndPwd[0], nameAndPwd[1], finalIsShowPwd); | ||
187 | -// } | ||
188 | -// }); | ||
189 | -// }else if (mLoginDialog != null) { | ||
190 | -// UIUtils.closeDialog(mLoginDialog); | ||
191 | -// } | ||
192 | -// } | ||
193 | -// //加入课堂 | ||
194 | -// public void joinClass(String username,String userpwd,boolean isShowPwd) { | ||
195 | -// JoinClass joinClass=new JoinClass(); | ||
196 | -// joinClass.setHasCamera(false); | ||
197 | -// joinClass.setHasMicrophone(false); | ||
198 | -// joinClass.setUserName(username); | ||
199 | -// if(!isShowPwd){ | ||
200 | -// joinClass.setPassword("123321"); | ||
201 | -// }else{ | ||
202 | -// joinClass.setPassword(userpwd); | ||
203 | -// } | ||
204 | -// String temp=new Gson().toJson(joinClass); | ||
205 | -// String jsonParmp = XdyStringUtils.stringToJson(temp, true); | ||
206 | -// XdyLogUtil.e("加入课堂", jsonParmp); | ||
207 | -// xdySdk.api("joinClass", jsonParmp); | ||
208 | -// } | ||
209 | -// | ||
210 | -// //加入课堂 | ||
211 | -// public void joinClass(String rsponse,boolean isShowPwd) { | ||
212 | -// | ||
213 | -//// String temp = "{\n" + | ||
214 | -//// " \"userName\":\"base\",\n" + | ||
215 | -//// " \"password\":\"123321\",\n" + | ||
216 | -//// " \"hasCamera\":false,\n" + | ||
217 | -//// " \"hasMicrophone\":false}"; | ||
218 | -// JoinClass joinClass=new JoinClass(); | ||
219 | -// joinClass.setHasCamera(false); | ||
220 | -// joinClass.setHasMicrophone(false); | ||
221 | -// joinClass.setUserName(username); | ||
222 | -// if(!isShowPwd){ | ||
223 | -// joinClass.setPassword("123321"); | ||
224 | -// }else{ | ||
225 | -// joinClass.setPassword(userpwd); | ||
226 | -// } | ||
227 | -// String temp=new Gson().toJson(joinClass); | ||
228 | -// String jsonParmp = XdyStringUtils.stringToJson(temp, true); | ||
229 | -// XdyLogUtil.e("加入课堂", jsonParmp); | ||
230 | -// xdySdk.api("joinClass", jsonParmp); | ||
231 | -// } | ||
232 | -// | ||
233 | -// | ||
234 | -// | ||
235 | -// public void sendMeg() { | 1 | +package com.mang.xdy.demo.activity; |
2 | + | ||
3 | + import android.app.AlertDialog; | ||
4 | + import android.app.Dialog; | ||
5 | + import android.content.Context; | ||
6 | + import android.content.DialogInterface; | ||
7 | + import android.media.Image; | ||
8 | + import android.os.Bundle; | ||
9 | + import android.os.Handler; | ||
10 | + import android.os.Message; | ||
11 | + import android.support.design.widget.TabLayout; | ||
12 | + import android.support.v4.view.ViewPager; | ||
13 | + import android.support.v7.app.AppCompatActivity; | ||
14 | + import android.text.TextUtils; | ||
15 | + import android.util.Log; | ||
16 | + import android.view.Gravity; | ||
17 | + import android.view.SurfaceView; | ||
18 | + import android.view.View; | ||
19 | + import android.view.Window; | ||
20 | + import android.view.WindowManager; | ||
21 | + import android.widget.Button; | ||
22 | + import android.widget.EditText; | ||
23 | + import android.widget.ImageView; | ||
24 | + import android.widget.TextView; | ||
25 | + import android.widget.Toast; | ||
26 | + | ||
27 | + import com.eventhandle.SmartEventCallback; | ||
28 | + import com.google.gson.Gson; | ||
29 | + import com.mang.xdy.common.Constants; | ||
30 | + import com.mang.xdy.core.XdySdk; | ||
31 | + import com.mang.xdy.demo.R; | ||
32 | + import com.mang.xdy.demo.adapter.SimpleFragmentPagerAdapter; | ||
33 | + import com.mang.xdy.demo.bean.AudioPlayBean; | ||
34 | + import com.mang.xdy.demo.bean.ChatBean; | ||
35 | + import com.mang.xdy.demo.bean.DocEntity; | ||
36 | + import com.mang.xdy.demo.bean.ErrorEntity; | ||
37 | + import com.mang.xdy.demo.bean.InitClassSuccessEntity; | ||
38 | + import com.mang.xdy.demo.bean.JoinClass; | ||
39 | + import com.mang.xdy.demo.bean.LiveBean; | ||
40 | + import com.mang.xdy.demo.bean.PublisherEntity; | ||
41 | + import com.mang.xdy.demo.bean.PublisherVideoExitBean; | ||
42 | + import com.mang.xdy.demo.bean.PublisherVideoReturnBean; | ||
43 | + import com.mang.xdy.demo.bean.VideoPlayBean; | ||
44 | + import com.mang.xdy.demo.utils.JsonUtil; | ||
45 | + import com.mang.xdy.demo.utils.ToastUtil; | ||
46 | + import com.mang.xdy.demo.widget.dialog.LoginDialog; | ||
47 | + import com.mang.xdy.listener.ObserverListener; | ||
48 | + import com.mang.xdy.utils.UIUtils; | ||
49 | + import com.mang.xdy.utils.XdyLogUtil; | ||
50 | + import com.mang.xdy.utils.XdyStringUtils; | ||
51 | + | ||
52 | + import butterknife.BindView; | ||
53 | + import butterknife.ButterKnife; | ||
54 | + import butterknife.OnClick; | ||
55 | + | ||
56 | +public class VideoPublisherActivity extends AppCompatActivity implements ObserverListener{ | ||
57 | + private final static String TAG = "VideoPlayActivity"; | ||
58 | + @BindView(R.id.btn_videoPlay_pubsherVideo) | ||
59 | + Button btnVideoPlayPubsherVideo; | ||
60 | + @BindView(R.id.btn_videoPlay_chat) | ||
61 | + Button btnVideoPlayChat; | ||
62 | + @BindView(R.id.tv_videoPlay_url) | ||
63 | + TextView tv_videoPlay_url; | ||
64 | + @BindView(R.id.surfaceview_pubisherVideo) | ||
65 | + SurfaceView surfaceview_pubisherVideo; | ||
66 | + @BindView(R.id.btn_videoPlay_publisherAudio) | ||
67 | + Button btn_videoPlay_publisherAudio; | ||
68 | +// @BindView(R.id.img_playVideo_novideo) | ||
69 | +// ImageView img_playVideo_novideo; | ||
70 | + private String username=""; | ||
71 | + private String userpwd=""; | ||
72 | + private PersonDialog personDialog; | ||
73 | + private SimpleFragmentPagerAdapter pagerAdapter; | ||
74 | + private XdySdk xdySdk; | ||
75 | + private ViewPager viewPager; | ||
76 | + //默认推送视频 | ||
77 | + private boolean isPusherAudio=false; | ||
78 | + /*默认是可以退出的,如果进行推流则需要主动退出*/ | ||
79 | + private boolean isAbleback=false; | ||
80 | + private TabLayout tabLayout; | ||
81 | + @BindView(R.id.surfaceview_playVideo) | ||
82 | + SurfaceView surfaceviewPlayVideo; | ||
83 | + @BindView(R.id.btn_videoPlay_stop) | ||
84 | + Button btn_videoPlay_stop; | ||
85 | + private String initClass = ""; | ||
86 | + private String publisherSuccess=""; | ||
87 | + /*视频成功返回值*/ | ||
88 | + private PublisherVideoReturnBean publisherVideoReturnBean; | ||
89 | + private Handler handler = new Handler() { | ||
90 | + @Override | ||
91 | + public void handleMessage(Message msg) { | ||
92 | + super.handleMessage(msg); | ||
93 | + switch (msg.what) { | ||
94 | + case -2: | ||
95 | + //加入课堂输入用户名,密码 | ||
96 | + joinClass("", (Boolean) msg.obj); | ||
97 | + break; | ||
98 | + case -1: | ||
99 | + //退出 | ||
100 | + // xdySdk.api("leaveClass", ""); | ||
101 | + break; | ||
102 | + case 0: | ||
103 | + parseJoinClass((String) msg.obj,true); | ||
104 | + break; | ||
105 | + case 7: | ||
106 | + break; | ||
107 | + case 8: | ||
108 | + btnVideoPlayPubsherVideo.setEnabled(true); | ||
109 | + btn_videoPlay_publisherAudio.setEnabled(true); | ||
110 | + break; | ||
111 | + | ||
112 | + } | ||
113 | + } | ||
114 | + }; | ||
115 | + | ||
116 | + @Override | ||
117 | + protected void onCreate(final Bundle savedInstanceState) { | ||
118 | + super.onCreate(savedInstanceState); | ||
119 | + getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); //屏幕常亮 | ||
120 | + setContentView(R.layout.activity_video_publisher); | ||
121 | + ButterKnife.bind(this); | ||
122 | + btn_videoPlay_publisherAudio.setVisibility(View.GONE); | ||
123 | +// setTablayout(); | ||
124 | + xdySdk=XdySdk.getXdyInstance(); | ||
125 | + xdySdk.add(this); | ||
126 | + init(); | ||
127 | + XdyLogUtil.e(TAG,"当前线程 main:"+android.os.Process.myPid()+"线程:"+Thread.currentThread().getId()+""); | ||
128 | + xdySdk.setOnXdyAsyncMessageLitener(new XdySdk.OnXdyAsyncMessageLitener() { | ||
129 | + @Override | ||
130 | + public void onXdyAsyncMessageReceiver(String type, String response) { | ||
131 | + | ||
132 | + switch (type) { | ||
133 | + case "class_init_success": | ||
134 | + ToastUtil.showToastshort("初始化课堂成功", VideoPublisherActivity.this); | ||
135 | + Message message = Message.obtain(); | ||
136 | + message.obj = response; | ||
137 | + message.what = 0; | ||
138 | + handler.sendMessage(message); | ||
139 | + break; | ||
140 | + case "class_join_success": | ||
141 | + //加入课堂成功 | ||
142 | + UIUtils.closeDialog(mLoginDialog); | ||
143 | + ToastUtil.showToastshort("加入课堂成功", VideoPublisherActivity.this); | ||
144 | + //只有加入课堂成功才可以点击推流的按钮 | ||
145 | + handler.sendEmptyMessage(8); | ||
146 | + break; | ||
147 | + case "video_stop": | ||
148 | +// handler.sendEmptyMessage(7); | ||
149 | + break; | ||
150 | + case "audio_stop": | ||
151 | + | ||
152 | + break; | ||
153 | + } | ||
154 | + XdyLogUtil.e(TAG,"type:"+type+" response:"+response); | ||
155 | + } | ||
156 | + }); | ||
157 | + } | ||
158 | + | ||
159 | + public void init() { | ||
160 | + initClass = getIntent().getStringExtra("init"); | ||
161 | + xdySdk.api("init", initClass); | ||
162 | + | ||
163 | + } | ||
164 | +private LoginDialog mLoginDialog; | ||
165 | + //判断解析是否有密码 | ||
166 | + public void parseJoinClass(String rsponse,boolean isShowPwd){ | ||
167 | + InitClassSuccessEntity initClassSuccessEntity=JsonUtil.parseJsonToBean(rsponse,InitClassSuccessEntity.class); | ||
168 | + if(initClassSuccessEntity!=null) { | ||
169 | + if (initClassSuccessEntity.isPasswordRequired()) { | ||
170 | + isShowPwd=true; | ||
171 | + } else { | ||
172 | + isShowPwd=false; | ||
173 | + userpwd = "123321"; | ||
174 | + } | ||
175 | + } | ||
176 | + | ||
177 | + if (mLoginDialog == null) { | ||
178 | + mLoginDialog = new LoginDialog(this, isShowPwd, null); | ||
179 | + mLoginDialog.show(); | ||
180 | + mLoginDialog.setCanceledOnTouchOutside(false); | ||
181 | + final boolean finalIsShowPwd = isShowPwd; | ||
182 | + mLoginDialog.setBtnClick(new View.OnClickListener() { | ||
183 | + @Override | ||
184 | + public void onClick(View view) { | ||
185 | + String[] nameAndPwd = mLoginDialog.getNameAndPwd(); | ||
186 | + joinClass(nameAndPwd[0], nameAndPwd[1], finalIsShowPwd); | ||
187 | + } | ||
188 | + }); | ||
189 | + }else if (mLoginDialog != null) { | ||
190 | + UIUtils.closeDialog(mLoginDialog); | ||
191 | + } | ||
192 | + } | ||
193 | + //加入课堂 | ||
194 | + public void joinClass(String username,String userpwd,boolean isShowPwd) { | ||
195 | + JoinClass joinClass=new JoinClass(); | ||
196 | + joinClass.setHasCamera(false); | ||
197 | + joinClass.setHasMicrophone(false); | ||
198 | + joinClass.setUserName(username); | ||
199 | + if(!isShowPwd){ | ||
200 | + joinClass.setPassword("123321"); | ||
201 | + }else{ | ||
202 | + joinClass.setPassword(userpwd); | ||
203 | + } | ||
204 | + String temp=new Gson().toJson(joinClass); | ||
205 | + String jsonParmp = XdyStringUtils.stringToJson(temp, true); | ||
206 | + XdyLogUtil.e("加入课堂", jsonParmp); | ||
207 | + xdySdk.api("joinClass", jsonParmp); | ||
208 | + } | ||
209 | + | ||
210 | + //加入课堂 | ||
211 | + public void joinClass(String rsponse,boolean isShowPwd) { | ||
212 | + | ||
236 | // String temp = "{\n" + | 213 | // String temp = "{\n" + |
237 | -// " \"message\": \"固定发送测试 hello\",\n" + | ||
238 | -// " \"to\": 0\n" + | ||
239 | -// "}"; | ||
240 | -// String jsonParmp = XdyStringUtils.stringToJson(temp, true); | ||
241 | -// XdyLogUtil.e(TAG, "聊天" + jsonParmp); | ||
242 | -// xdySdk.api("sendChatMsg", jsonParmp); | ||
243 | -// | ||
244 | -// } | ||
245 | -// | ||
246 | -// /** | ||
247 | -// * 获取封装的推流地址 | ||
248 | -// */ | ||
249 | -// public void publisherVideoText(){ | ||
250 | -// xdySdk.api("publishVideo", "", surfaceview_pubisherVideo, VideoPublisherActivity.this); | ||
251 | -//// xdySdk.api(Constants.PUBLISH_AUDIO, "", surfaceview_pubisherVideo, VideoPublisherActivity.this); | ||
252 | -// | ||
253 | -// } | ||
254 | -// | ||
255 | -// @Override | ||
256 | -// protected void onPause() { | ||
257 | -// super.onPause(); | ||
258 | -//// xdySdk.onPublisherPause(); | ||
259 | -// } | ||
260 | -// | ||
261 | -// @Override | ||
262 | -// protected void onResume() { | ||
263 | -// super.onResume(); | ||
264 | -//// xdySdk.onPublisherResume(); | ||
265 | -// } | ||
266 | -// | ||
267 | -// @Override | ||
268 | -// protected void onDestroy() { | ||
269 | -// xdySdk.onPublisherStop(); | ||
270 | -// super.onDestroy(); | ||
271 | -// } | ||
272 | -// | ||
273 | -// @OnClick({R.id.btn_videoPlay_chat, R.id.btn_videoPlay_pubsherVideo,R.id.btn_videoPlay_publisherAudio,R.id.btn_videoPlay_stop}) | ||
274 | -// public void onViewClicked(View view) { | ||
275 | -// switch (view.getId()) { | ||
276 | -// case R.id.btn_videoPlay_chat: | ||
277 | -// handler.sendEmptyMessage(4); | ||
278 | -// break; | ||
279 | -// case R.id.btn_videoPlay_pubsherVideo: | ||
280 | -//// getPublish(); | ||
281 | -// publisherVideoText(); | ||
282 | -//// publisherAudioText(); | ||
283 | -// ToastUtil.showToastshort("推送视频",VideoPublisherActivity.this); | ||
284 | -// btnVideoPlayPubsherVideo.setClickable(false); | ||
285 | -// | ||
286 | -// break; | ||
287 | -// case R.id.btn_videoPlay_stop: | ||
288 | -// ToastUtil.showToastshort("正在退出,请稍等",this); | ||
289 | -// xdySdk.api("unPublishVideo",""); | ||
290 | -//// finish(); | ||
291 | -// break; | ||
292 | -// } | ||
293 | -// } | ||
294 | -// | ||
295 | -// @Override | ||
296 | -// public void observerUpData(final String type, final String parameter) { | ||
297 | -// handler.post(new Runnable() { | ||
298 | -// @Override | ||
299 | -// public void run() { | ||
300 | -// handError(type,parameter); | ||
301 | -// } | ||
302 | -// }); | ||
303 | -// } | ||
304 | -// public void handError(String errorId, String errorMsg) { | ||
305 | -// ErrorEntity errorEntity = JsonUtil.parseJsonToBean(errorMsg, ErrorEntity.class); | ||
306 | -// if (errorEntity == null) { | ||
307 | -// return; | ||
308 | -// } | ||
309 | -// switch (errorEntity.getCode() + "") { | ||
310 | -// case "100": | ||
311 | -// case "101": | ||
312 | -// case "102": | ||
313 | -// case "103": | ||
314 | -// case "104": | ||
315 | -// case "105": | ||
316 | -// case "106": | ||
317 | -// case "107": | ||
318 | -// case "200": | ||
319 | -// case "201": | ||
320 | -// case "202": | ||
321 | -// case "203": | ||
322 | -// case "204": | ||
323 | -// case "205": | ||
324 | -// case "206": | ||
325 | -// case "207": | ||
326 | -// case "208": | ||
327 | -// ToastUtil.showToastshort(errorEntity.getReson(), this); | ||
328 | -// exit(); | ||
329 | -// break; | ||
330 | -// case "300": | ||
331 | -// case "301": | ||
332 | -// break; | ||
333 | -// case "10000": | ||
334 | -// ToastUtil.showToastshort(errorEntity.getReson(), this); | ||
335 | -// break; | ||
336 | -// case "10001": | ||
337 | -// ToastUtil.showToastshort(errorEntity.getReson(), this); | ||
338 | -// break; | ||
339 | -// case "20000": | ||
340 | -// isDefaultExit=false; | ||
341 | -// showErrorDialog(); | ||
342 | -// ToastUtil.showToastshort(errorEntity.getReson(), this); | ||
343 | -// break; | ||
344 | -// } | ||
345 | -// | ||
346 | -// | ||
347 | -// } | ||
348 | -// | ||
349 | -// class EventHande implements SmartEventCallback { | ||
350 | -// @Override | ||
351 | -// public void onCallback(int code, long param1, long param2, String param3, String param4, Object param5) { | ||
352 | -// switch (code) { | ||
353 | -// case EVENTID.EVENT_DANIULIVE_ERC_PLAYER_STARTED: | ||
354 | -// Log.i(TAG, "开始。。"); | ||
355 | -// break; | ||
356 | -// case EVENTID.EVENT_DANIULIVE_ERC_PLAYER_CONNECTING: | ||
357 | -// Log.i(TAG, "连接中。。"); | ||
358 | -// break; | ||
359 | -// case EVENTID.EVENT_DANIULIVE_ERC_PLAYER_CONNECTION_FAILED: | ||
360 | -// Log.i(TAG, "连接失败。。"); | ||
361 | -// break; | ||
362 | -// case EVENTID.EVENT_DANIULIVE_ERC_PLAYER_CONNECTED: | ||
363 | -// Log.i(TAG, "连接成功。。"); | ||
364 | -//// PublisherEntity publisherEntity=new PublisherEntity(); | ||
365 | -//// if(TextUtils.isEmpty(publisherSuccess)) { | ||
366 | -//// publisherEntity.setPublishUrl(publisherSuccess); | ||
367 | -//// XdySdk.setAsyncApi("publishVideo", new Gson().toJson(publisherEntity)); | ||
368 | -//// } | ||
369 | -// //TODO | ||
370 | -// break; | ||
371 | -// case EVENTID.EVENT_DANIULIVE_ERC_PLAYER_DISCONNECTED: | ||
372 | -// Log.i(TAG, "连接断开。。"); | ||
373 | -// break; | ||
374 | -// case EVENTID.EVENT_DANIULIVE_ERC_PLAYER_STOP: | ||
375 | -// Log.i(TAG, "关闭。。"); | ||
376 | -// break; | ||
377 | -// case EVENTID.EVENT_DANIULIVE_ERC_PLAYER_RESOLUTION_INFO: | ||
378 | -// Log.i(TAG, "分辨率信息: width: " + param1 + ", height: " + param2); | ||
379 | -// break; | ||
380 | -// case EVENTID.EVENT_DANIULIVE_ERC_PLAYER_NO_MEDIADATA_RECEIVED: | ||
381 | -// Log.i(TAG, "收不到媒体数据,可能是url错误。。"); | ||
382 | -// } | ||
383 | -// | ||
384 | -// } | ||
385 | -// } | ||
386 | -// /*mcu断开或者网络原因为false*/ | ||
387 | -// private boolean isDefaultExit=true; | ||
388 | -// private android.support.v7.app.AlertDialog mErrorDialog; | ||
389 | -// public void showErrorDialog() { | ||
390 | -//// if(isDefaultExit){ | ||
391 | -//// return; | ||
392 | -//// } | ||
393 | -// if (mErrorDialog != null) | ||
394 | -// return; | ||
395 | -// | ||
396 | -// mErrorDialog = new android.support.v7.app.AlertDialog.Builder(this) | ||
397 | -// .setTitle("退出") | ||
398 | -// .setMessage("您设备的网络属于断开状态,请重新进入") | ||
399 | -// .setPositiveButton("确认", new DialogInterface.OnClickListener() { | ||
400 | -// @Override | ||
401 | -// public void onClick(DialogInterface dialogInterface, int i) { | ||
402 | -// dialogInterface.dismiss(); | ||
403 | -// exit(); | ||
404 | -// } | ||
405 | -// }) | ||
406 | -// .create(); | ||
407 | -// mErrorDialog.setCanceledOnTouchOutside(false); | ||
408 | -// | ||
409 | -// mErrorDialog.show(); | ||
410 | -// | ||
411 | -// } | ||
412 | -// | ||
413 | -// /** | ||
414 | -// * 错误情况退出 | ||
415 | -// */ | ||
416 | -// public void exit() { | ||
417 | -// | ||
418 | -// UIUtils.closeDialog(mLoginDialog); | ||
419 | -//// xdySdk.onPublisherStop(); | ||
420 | -// xdySdk.remove(this); | ||
421 | -// handler.removeCallbacksAndMessages(null); | ||
422 | -// this.finish(); | ||
423 | -// } | ||
424 | -// class PersonDialog extends Dialog { | ||
425 | -// public PersonDialog(Context context) { | ||
426 | -// this(context, false); | ||
427 | -// | ||
428 | -// } | ||
429 | -// | ||
430 | -// public PersonDialog(Context context, boolean showPwd) { | ||
431 | -// this(context, R.style.bottom_dialog, showPwd); | ||
432 | -// } | ||
433 | -// | ||
434 | -// public PersonDialog(Context context, int themeResId, boolean showPwd) { | ||
435 | -// super(context, themeResId); | ||
436 | -// init(context, showPwd); | ||
437 | -// } | ||
438 | -// | ||
439 | -// public void init(Context context, boolean showPwd) { | ||
440 | -// View view = View.inflate(context, R.layout.dialog_item, null); | ||
441 | -// setContentView(view); | ||
442 | -// initView(view,showPwd); | ||
443 | -// setCanceledOnTouchOutside(false); | ||
444 | -// Window window = getWindow(); | ||
445 | -// WindowManager.LayoutParams params = window.getAttributes(); | ||
446 | -// params.width = WindowManager.LayoutParams.MATCH_PARENT; | ||
447 | -// params.height = dp2px(context, 220); | ||
448 | -// window.setAttributes(params); | ||
449 | -// window.setGravity(Gravity.CENTER); | ||
450 | -// } | ||
451 | -// | ||
452 | -// public int dp2px(Context context, float dp) { | ||
453 | -// return (int) Math.ceil(context.getResources().getDisplayMetrics().density * dp); | ||
454 | -// } | ||
455 | -// public void initView(View view, final boolean showPwd){ | ||
456 | -// final EditText edt_uername= (EditText) view.findViewById(R.id.dialog_edt_username); | ||
457 | -// final EditText edt_userpwd= (EditText) view.findViewById(R.id.dialog_edt_userpwd); | ||
458 | -// if(showPwd){ | ||
459 | -// edt_userpwd.setVisibility(View.VISIBLE); | ||
460 | -// }else{ | ||
461 | -// edt_userpwd.setVisibility(View.GONE); | ||
462 | -// } | ||
463 | -// Button btn_enter= (Button) view.findViewById(R.id.dialog_btn_enter); | ||
464 | -// btn_enter.setOnClickListener(new View.OnClickListener() { | ||
465 | -// @Override | ||
466 | -// public void onClick(View v) { | ||
467 | -// username=edt_uername.getText().toString(); | ||
468 | -// userpwd=edt_userpwd.getText().toString(); | ||
469 | -// if(TextUtils.isEmpty(username)){ | ||
470 | -// ToastUtil.showToastshort("用户名不能为空",VideoPublisherActivity.this); | ||
471 | -// return; | ||
472 | -// } | ||
473 | -// if(showPwd&&TextUtils.isEmpty(userpwd)){ | ||
474 | -// ToastUtil.showToastshort("密码不能为空",VideoPublisherActivity.this); | ||
475 | -// return; | 214 | +// " \"userName\":\"base\",\n" + |
215 | +// " \"password\":\"123321\",\n" + | ||
216 | +// " \"hasCamera\":false,\n" + | ||
217 | +// " \"hasMicrophone\":false}"; | ||
218 | + JoinClass joinClass=new JoinClass(); | ||
219 | + joinClass.setHasCamera(false); | ||
220 | + joinClass.setHasMicrophone(false); | ||
221 | + joinClass.setUserName(username); | ||
222 | + if(!isShowPwd){ | ||
223 | + joinClass.setPassword("123321"); | ||
224 | + }else{ | ||
225 | + joinClass.setPassword(userpwd); | ||
226 | + } | ||
227 | + String temp=new Gson().toJson(joinClass); | ||
228 | + String jsonParmp = XdyStringUtils.stringToJson(temp, true); | ||
229 | + XdyLogUtil.e("加入课堂", jsonParmp); | ||
230 | + xdySdk.api("joinClass", jsonParmp); | ||
231 | + } | ||
232 | + | ||
233 | + | ||
234 | + | ||
235 | + public void sendMeg() { | ||
236 | + String temp = "{\n" + | ||
237 | + " \"message\": \"固定发送测试 hello\",\n" + | ||
238 | + " \"to\": 0\n" + | ||
239 | + "}"; | ||
240 | + String jsonParmp = XdyStringUtils.stringToJson(temp, true); | ||
241 | + XdyLogUtil.e(TAG, "聊天" + jsonParmp); | ||
242 | + xdySdk.api("sendChatMsg", jsonParmp); | ||
243 | + | ||
244 | + } | ||
245 | + | ||
246 | + /** | ||
247 | + * 获取封装的推流地址 | ||
248 | + */ | ||
249 | + public void publisherVideoText(){ | ||
250 | + xdySdk.api("publishVideo", "", surfaceview_pubisherVideo, VideoPublisherActivity.this); | ||
251 | +// xdySdk.api(Constants.PUBLISH_AUDIO, "", surfaceview_pubisherVideo, VideoPublisherActivity.this); | ||
252 | + | ||
253 | + } | ||
254 | + | ||
255 | + @Override | ||
256 | + protected void onPause() { | ||
257 | + super.onPause(); | ||
258 | + xdySdk.onPublisherPause(); | ||
259 | + } | ||
260 | + | ||
261 | + @Override | ||
262 | + protected void onResume() { | ||
263 | + super.onResume(); | ||
264 | + xdySdk.onPublisherResume(); | ||
265 | + } | ||
266 | + | ||
267 | + @Override | ||
268 | + protected void onDestroy() { | ||
269 | + xdySdk.onPublisherStop(); | ||
270 | + super.onDestroy(); | ||
271 | + } | ||
272 | + | ||
273 | + @OnClick({R.id.btn_videoPlay_chat, R.id.btn_videoPlay_pubsherVideo,R.id.btn_videoPlay_publisherAudio,R.id.btn_videoPlay_stop}) | ||
274 | + public void onViewClicked(View view) { | ||
275 | + switch (view.getId()) { | ||
276 | + case R.id.btn_videoPlay_chat: | ||
277 | + handler.sendEmptyMessage(4); | ||
278 | + break; | ||
279 | + case R.id.btn_videoPlay_pubsherVideo: | ||
280 | +// getPublish(); | ||
281 | + publisherVideoText(); | ||
282 | +// publisherAudioText(); | ||
283 | + ToastUtil.showToastshort("推送视频",VideoPublisherActivity.this); | ||
284 | + btnVideoPlayPubsherVideo.setClickable(false); | ||
285 | + | ||
286 | + break; | ||
287 | + case R.id.btn_videoPlay_stop: | ||
288 | + ToastUtil.showToastshort("正在退出,请稍等",this); | ||
289 | + xdySdk.api("unPublishVideo",""); | ||
290 | +// finish(); | ||
291 | + break; | ||
292 | + } | ||
293 | + } | ||
294 | + | ||
295 | + @Override | ||
296 | + public void observerUpData(final String type, final String parameter) { | ||
297 | + handler.post(new Runnable() { | ||
298 | + @Override | ||
299 | + public void run() { | ||
300 | + handError(type,parameter); | ||
301 | + } | ||
302 | + }); | ||
303 | + } | ||
304 | + public void handError(String errorId, String errorMsg) { | ||
305 | + ErrorEntity errorEntity = JsonUtil.parseJsonToBean(errorMsg, ErrorEntity.class); | ||
306 | + if (errorEntity == null) { | ||
307 | + return; | ||
308 | + } | ||
309 | + switch (errorEntity.getCode() + "") { | ||
310 | + case "100": | ||
311 | + case "101": | ||
312 | + case "102": | ||
313 | + case "103": | ||
314 | + case "104": | ||
315 | + case "105": | ||
316 | + case "106": | ||
317 | + case "107": | ||
318 | + case "200": | ||
319 | + case "201": | ||
320 | + case "202": | ||
321 | + case "203": | ||
322 | + case "204": | ||
323 | + case "205": | ||
324 | + case "206": | ||
325 | + case "207": | ||
326 | + case "208": | ||
327 | + ToastUtil.showToastshort(errorEntity.getReson(), this); | ||
328 | + exit(); | ||
329 | + break; | ||
330 | + case "300": | ||
331 | + case "301": | ||
332 | + break; | ||
333 | + case "10000": | ||
334 | + ToastUtil.showToastshort(errorEntity.getReson(), this); | ||
335 | + break; | ||
336 | + case "10001": | ||
337 | + ToastUtil.showToastshort(errorEntity.getReson(), this); | ||
338 | + break; | ||
339 | + case "20000": | ||
340 | + isDefaultExit=false; | ||
341 | + showErrorDialog(); | ||
342 | + ToastUtil.showToastshort(errorEntity.getReson(), this); | ||
343 | + break; | ||
344 | + } | ||
345 | + | ||
346 | + | ||
347 | + } | ||
348 | + | ||
349 | + class EventHande implements SmartEventCallback { | ||
350 | + @Override | ||
351 | + public void onCallback(int code, long param1, long param2, String param3, String param4, Object param5) { | ||
352 | + switch (code) { | ||
353 | + case EVENTID.EVENT_DANIULIVE_ERC_PLAYER_STARTED: | ||
354 | + Log.i(TAG, "开始。。"); | ||
355 | + break; | ||
356 | + case EVENTID.EVENT_DANIULIVE_ERC_PLAYER_CONNECTING: | ||
357 | + Log.i(TAG, "连接中。。"); | ||
358 | + break; | ||
359 | + case EVENTID.EVENT_DANIULIVE_ERC_PLAYER_CONNECTION_FAILED: | ||
360 | + Log.i(TAG, "连接失败。。"); | ||
361 | + break; | ||
362 | + case EVENTID.EVENT_DANIULIVE_ERC_PLAYER_CONNECTED: | ||
363 | + Log.i(TAG, "连接成功。。"); | ||
364 | +// PublisherEntity publisherEntity=new PublisherEntity(); | ||
365 | +// if(TextUtils.isEmpty(publisherSuccess)) { | ||
366 | +// publisherEntity.setPublishUrl(publisherSuccess); | ||
367 | +// XdySdk.setAsyncApi("publishVideo", new Gson().toJson(publisherEntity)); | ||
476 | // } | 368 | // } |
477 | -// dismiss(); | ||
478 | -// Message message=Message.obtain(); | ||
479 | -// message.what=-2; | ||
480 | -// message.obj=showPwd; | ||
481 | -// handler.sendMessage(message); | ||
482 | -// } | ||
483 | -// }); | 369 | + //TODO |
370 | + break; | ||
371 | + case EVENTID.EVENT_DANIULIVE_ERC_PLAYER_DISCONNECTED: | ||
372 | + Log.i(TAG, "连接断开。。"); | ||
373 | + break; | ||
374 | + case EVENTID.EVENT_DANIULIVE_ERC_PLAYER_STOP: | ||
375 | + Log.i(TAG, "关闭。。"); | ||
376 | + break; | ||
377 | + case EVENTID.EVENT_DANIULIVE_ERC_PLAYER_RESOLUTION_INFO: | ||
378 | + Log.i(TAG, "分辨率信息: width: " + param1 + ", height: " + param2); | ||
379 | + break; | ||
380 | + case EVENTID.EVENT_DANIULIVE_ERC_PLAYER_NO_MEDIADATA_RECEIVED: | ||
381 | + Log.i(TAG, "收不到媒体数据,可能是url错误。。"); | ||
382 | + } | ||
383 | + | ||
384 | + } | ||
385 | + } | ||
386 | + /*mcu断开或者网络原因为false*/ | ||
387 | + private boolean isDefaultExit=true; | ||
388 | + private android.support.v7.app.AlertDialog mErrorDialog; | ||
389 | + public void showErrorDialog() { | ||
390 | +// if(isDefaultExit){ | ||
391 | +// return; | ||
484 | // } | 392 | // } |
485 | -// } | ||
486 | -// | ||
487 | -//} | 393 | + if (mErrorDialog != null) |
394 | + return; | ||
395 | + | ||
396 | + mErrorDialog = new android.support.v7.app.AlertDialog.Builder(this) | ||
397 | + .setTitle("退出") | ||
398 | + .setMessage("您设备的网络属于断开状态,请重新进入") | ||
399 | + .setPositiveButton("确认", new DialogInterface.OnClickListener() { | ||
400 | + @Override | ||
401 | + public void onClick(DialogInterface dialogInterface, int i) { | ||
402 | + dialogInterface.dismiss(); | ||
403 | + exit(); | ||
404 | + } | ||
405 | + }) | ||
406 | + .create(); | ||
407 | + mErrorDialog.setCanceledOnTouchOutside(false); | ||
408 | + | ||
409 | + mErrorDialog.show(); | ||
410 | + | ||
411 | + } | ||
412 | + | ||
413 | + /** | ||
414 | + * 错误情况退出 | ||
415 | + */ | ||
416 | + public void exit() { | ||
417 | + | ||
418 | + UIUtils.closeDialog(mLoginDialog); | ||
419 | +// xdySdk.onPublisherStop(); | ||
420 | + xdySdk.remove(this); | ||
421 | + handler.removeCallbacksAndMessages(null); | ||
422 | + this.finish(); | ||
423 | + } | ||
424 | + class PersonDialog extends Dialog { | ||
425 | + public PersonDialog(Context context) { | ||
426 | + this(context, false); | ||
427 | + | ||
428 | + } | ||
429 | + | ||
430 | + public PersonDialog(Context context, boolean showPwd) { | ||
431 | + this(context, R.style.bottom_dialog, showPwd); | ||
432 | + } | ||
433 | + | ||
434 | + public PersonDialog(Context context, int themeResId, boolean showPwd) { | ||
435 | + super(context, themeResId); | ||
436 | + init(context, showPwd); | ||
437 | + } | ||
438 | + | ||
439 | + public void init(Context context, boolean showPwd) { | ||
440 | + View view = View.inflate(context, R.layout.dialog_item, null); | ||
441 | + setContentView(view); | ||
442 | + initView(view,showPwd); | ||
443 | + setCanceledOnTouchOutside(false); | ||
444 | + Window window = getWindow(); | ||
445 | + WindowManager.LayoutParams params = window.getAttributes(); | ||
446 | + params.width = WindowManager.LayoutParams.MATCH_PARENT; | ||
447 | + params.height = dp2px(context, 220); | ||
448 | + window.setAttributes(params); | ||
449 | + window.setGravity(Gravity.CENTER); | ||
450 | + } | ||
451 | + | ||
452 | + public int dp2px(Context context, float dp) { | ||
453 | + return (int) Math.ceil(context.getResources().getDisplayMetrics().density * dp); | ||
454 | + } | ||
455 | + public void initView(View view, final boolean showPwd){ | ||
456 | + final EditText edt_uername= (EditText) view.findViewById(R.id.dialog_edt_username); | ||
457 | + final EditText edt_userpwd= (EditText) view.findViewById(R.id.dialog_edt_userpwd); | ||
458 | + if(showPwd){ | ||
459 | + edt_userpwd.setVisibility(View.VISIBLE); | ||
460 | + }else{ | ||
461 | + edt_userpwd.setVisibility(View.GONE); | ||
462 | + } | ||
463 | + Button btn_enter= (Button) view.findViewById(R.id.dialog_btn_enter); | ||
464 | + btn_enter.setOnClickListener(new View.OnClickListener() { | ||
465 | + @Override | ||
466 | + public void onClick(View v) { | ||
467 | + username=edt_uername.getText().toString(); | ||
468 | + userpwd=edt_userpwd.getText().toString(); | ||
469 | + if(TextUtils.isEmpty(username)){ | ||
470 | + ToastUtil.showToastshort("用户名不能为空",VideoPublisherActivity.this); | ||
471 | + return; | ||
472 | + } | ||
473 | + if(showPwd&&TextUtils.isEmpty(userpwd)){ | ||
474 | + ToastUtil.showToastshort("密码不能为空",VideoPublisherActivity.this); | ||
475 | + return; | ||
476 | + } | ||
477 | + dismiss(); | ||
478 | + Message message=Message.obtain(); | ||
479 | + message.what=-2; | ||
480 | + message.obj=showPwd; | ||
481 | + handler.sendMessage(message); | ||
482 | + } | ||
483 | + }); | ||
484 | + } | ||
485 | + } | ||
486 | + | ||
487 | +} |
MyApplication/XdyDemo/src/main/java/com/mang/xdy/demo/widget/view/AutoAdaptHeaderViewGroup.java
0 → 100644
1 | +package com.mang.xdy.demo.widget.view; | ||
2 | + | ||
3 | +import android.content.Context; | ||
4 | +import android.os.Build; | ||
5 | +import android.util.AttributeSet; | ||
6 | +import android.view.View; | ||
7 | +import android.view.ViewGroup; | ||
8 | +import android.widget.RelativeLayout; | ||
9 | + | ||
10 | +import com.mang.xdy.demo.utils.DisplayUtil; | ||
11 | + | ||
12 | + | ||
13 | +public class AutoAdaptHeaderViewGroup extends RelativeLayout { | ||
14 | + | ||
15 | + private int statusBarHeight; | ||
16 | + | ||
17 | + public AutoAdaptHeaderViewGroup(Context context) { | ||
18 | + this(context, null); | ||
19 | + } | ||
20 | + | ||
21 | + public AutoAdaptHeaderViewGroup(Context context, AttributeSet attrs) { | ||
22 | + this(context, attrs, 0); | ||
23 | + } | ||
24 | + | ||
25 | + public AutoAdaptHeaderViewGroup(Context context, AttributeSet attrs, int defStyle) { | ||
26 | + super(context, attrs, defStyle); | ||
27 | + statusBarHeight = DisplayUtil.getStatusBarHeight(getContext()); | ||
28 | + } | ||
29 | + | ||
30 | + private LayoutParams makeLayoutParams(View view) { | ||
31 | + ViewGroup.LayoutParams lpOld = view.getLayoutParams(); | ||
32 | + LayoutParams lp = null; | ||
33 | + if (lpOld == null) { | ||
34 | + lp = new LayoutParams(-2, -1); | ||
35 | + } else { | ||
36 | + lp = new LayoutParams(lpOld.width, lpOld.height); | ||
37 | + } | ||
38 | + return lp; | ||
39 | + } | ||
40 | + | ||
41 | + @Override | ||
42 | + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { | ||
43 | + super.onMeasure(widthMeasureSpec, heightMeasureSpec); | ||
44 | + //设置headerbar高度 | ||
45 | + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { | ||
46 | + //加上状态栏的高度 | ||
47 | + | ||
48 | + int paddingBottom = getPaddingBottom(); | ||
49 | + int paddingRight = getPaddingRight(); | ||
50 | + int paddingLeft= getPaddingLeft(); | ||
51 | + setPadding(paddingLeft, statusBarHeight, paddingRight, paddingBottom); | ||
52 | + } | ||
53 | + } | ||
54 | +} |
1.7 KB
3.0 KB
-
请 注册 或 登录 后发表评论