作者 朱振飞

add

package com.yinhebairong.clasmanage.ui;
import android.Manifest;
import android.app.Activity;
import android.app.Service;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.graphics.Color;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;
import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder;
import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack;
import com.shuyu.gsyvideoplayer.listener.LockClickListener;
import com.shuyu.gsyvideoplayer.utils.OrientationUtils;
import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer;
import com.yinhebairong.clasmanage.R;
import com.yinhebairong.clasmanage.base.BaseActivity;
import com.yinhebairong.clasmanage.base.instant.Layout;
import com.yinhebairong.clasmanage.base.instant.TopNavigationBar;
import com.yinhebairong.clasmanage.base.instant.slideslip.SlideLip;
import com.yinhebairong.clasmanage.ui.jxt.activity.HD.Fbhd_Activity;
import com.yinhebairong.clasmanage.view.DebugLog;
import java.io.IOException;
import java.lang.ref.WeakReference;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
public class AudioAndVideoPlayActivity extends AppCompatActivity implements View.OnClickListener{
private ImageButton play, pause, stop, volume_plus, volume_decrease;
private ImageButton pause, stop, volume_plus, volume_decrease;
private ImageView play;
private TextView musicName, musicLength, musicCur;
private SeekBar seekBar;
... ... @@ -70,13 +45,13 @@ public class AudioAndVideoPlayActivity extends AppCompatActivity implements View
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_audio);
setContentView(R.layout.pop_audio);
audioManager = (AudioManager) getSystemService(Service.AUDIO_SERVICE);
format = new SimpleDateFormat("mm:ss");
play = (ImageButton) findViewById(R.id.play);
play = (ImageView) findViewById(R.id.play);
pause = (ImageButton) findViewById(R.id.pause);
stop = (ImageButton) findViewById(R.id.stop);
volume_plus = (ImageButton) findViewById(R.id.volume_plus);
... ...
package com.yinhebairong.clasmanage.ui;
import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.Color;
import android.media.MediaPlayer;
import android.os.Handler;
import android.os.Message;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.PopupWindow;
import android.widget.SeekBar;
import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder;
... ... @@ -20,7 +25,11 @@ import com.yinhebairong.clasmanage.base.BaseActivity;
import com.yinhebairong.clasmanage.base.instant.Layout;
import com.yinhebairong.clasmanage.base.instant.TopNavigationBar;
import com.yinhebairong.clasmanage.base.instant.slideslip.SlideLip;
import com.yinhebairong.clasmanage.m.M;
import com.yinhebairong.clasmanage.ui.jxt.activity.HD.Fbhd_Activity;
import com.yinhebairong.clasmanage.ui.jxt.activity.HD.Hdxq_Activity;
import com.yinhebairong.clasmanage.view.DebugLog;
import com.yinhebairong.clasmanage.view.pop.AudioPopupWindow;
import java.io.IOException;
import java.util.concurrent.ExecutorService;
... ... @@ -36,12 +45,10 @@ import butterknife.OnClick;
public class AudioAndVideoPlayActivity2 extends BaseActivity {
@BindView(R.id.include_back)
ImageView includeBack;
@BindView(R.id.include_right)
ImageView include_right;
@BindView(R.id.videoplay)
StandardGSYVideoPlayer videoplay;
@BindView(R.id.btn_bofang)
Button btn_bofang;
@BindView(R.id.seekBar1)
SeekBar seekBar1;
private boolean isPlay;
private boolean isPause;
GSYVideoOptionBuilder gsyVideoOption;
... ... @@ -74,12 +81,89 @@ public class AudioAndVideoPlayActivity2 extends BaseActivity {
});
}
@OnClick({})
@OnClick({R.id.include_right})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.include_right:
optionPop();
break;
}
}
PopupWindow downloadPopupwindow;
/**
* 右上角pop
*/
private void optionPop() {
View view = LayoutInflater.from(AudioAndVideoPlayActivity2.this).inflate(R.layout.popup_download, null);
// 弹窗
downloadPopupwindow = new PopupWindow(view, WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
downloadPopupwindow.setOutsideTouchable(true);
downloadPopupwindow.setTouchable(true);
downloadPopupwindow.setFocusable(true);
downloadPopupwindow.setBackgroundDrawable(getResources().getDrawable(R.color.color_tm));
downloadPopupwindow.showAtLocation(view, Gravity.BOTTOM, 0, M.getNavigationBarHeight(this));
view.findViewById(R.id.tv_download).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
downloadPopupwindow.dismiss();
}
});
view.findViewById(R.id.tv_cancal).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
downloadPopupwindow.dismiss();
}
});
view.findViewById(R.id.tv_zhuanfa).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
audioPop();
downloadPopupwindow.dismiss();
}
});
}
PopupWindow audioPop;
AudioPopupWindow customPopupWindow;
/**
* 音频pop
*/
private void audioPop() {
customPopupWindow = new AudioPopupWindow(AudioAndVideoPlayActivity2.this);
customPopupWindow.start("http://class.ynsdfx.com/uploads/20200410/4958b3dc56895cedffbe20ca86869c4c.wav","试试");
// View view = LayoutInflater.from(AudioAndVideoPlayActivity2.this).inflate(R.layout.popup_hdxq, null);
// // 弹窗
// audioPop = new PopupWindow(view, WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
// audioPop.setOutsideTouchable(true);
// audioPop.setTouchable(true);
// audioPop.setFocusable(true);
// audioPop.setBackgroundDrawable(getResources().getDrawable(R.color.color_tm));
// audioPop.showAtLocation(view, Gravity.BOTTOM, 0, M.getNavigationBarHeight(this));
// view.findViewById(R.id.tv_download).setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// audioPop.dismiss();
// }
// });
//
// view.findViewById(R.id.tv_cancal).setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// audioPop.dismiss();
// }
// });
// view.findViewById(R.id.tv_zhuanfa).setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// audioPop.dismiss();
// }
// });
}
private void setplay(GSYVideoOptionBuilder gsyVideoOption, String url) {
gsyVideoOption
.setIsTouchWiget(true)
... ... @@ -140,13 +224,15 @@ public class AudioAndVideoPlayActivity2 extends BaseActivity {
@Override
protected void onDestroy() {
super.onDestroy();
if (isPlay&&videoplay!=null) {
if (isPlay && videoplay != null) {
videoplay.getCurrentPlayer().release();
}
if (orientationUtils != null) {
orientationUtils.releaseListener();
}
if (customPopupWindow != null) {
customPopupWindow.destroy();
}
}
... ...
... ... @@ -72,7 +72,7 @@ public class HomeFragment extends BaseFragment {
startActivitys(QmpmActivity.class);
break;
case R.id.home_kcb: // 课程表
startActivitys(AudioAndVideoPlayActivity.class);
startActivitys(AudioAndVideoPlayActivity2.class);
break;
// case R.id.home_wdjk: // 我的监考
// startActivitys(WdjkActivity.class);
... ...
package com.yinhebairong.clasmanage.view.pop;
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.Service;
import android.content.Context;
import android.content.pm.PackageManager;
import android.graphics.drawable.ColorDrawable;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.RelativeLayout;
import android.widget.SeekBar;
import android.widget.TextView;
import com.yinhebairong.clasmanage.R;
import com.yinhebairong.clasmanage.m.M;
import com.yinhebairong.clasmanage.ui.AudioAndVideoPlayActivity;
import java.text.SimpleDateFormat;
import java.util.Timer;
import java.util.TimerTask;
/**
* Time: 4/13/2020 10:04
* Author: TAO
* Description:
*/
public class AudioPopupWindow extends PopupWindow implements View.OnClickListener {
private View mPopView;
private ImageView play;
private TextView tv_downloud, musicName, musicLength, musicCur;
private LinearLayout id_pop_layout;
private SeekBar seekBar;
private MediaPlayer mediaPlayer = new MediaPlayer();
private AudioManager audioManager;
private Timer timer;
int maxVolume, currentVolume;
private boolean isSeekBarChanging;//互斥变量,防止进度条与定时器冲突。
private int currentPosition;//当前音乐播放的进度
SimpleDateFormat format;
private Context mContext;
public AudioPopupWindow(Context context) {
super(context);
mContext = context;
init(context);
setPopupWindow();
}
/**
* 开始
*
* @param url
* @param name
*/
public void start(String url, String name) {
initMediaPlayer(url, name);//初始化mediaplayer
showAtLocation(mPopView, Gravity.BOTTOM, 0, M.getNavigationBarHeight(mContext));
}
private void init(Context context) {
LayoutInflater inflater = LayoutInflater.from(context);
mPopView = inflater.inflate(R.layout.pop_audio, null);
play = (ImageView) mPopView.findViewById(R.id.play);
tv_downloud = (TextView) mPopView.findViewById(R.id.tv_downloud);
musicName = (TextView) mPopView.findViewById(R.id.music_name);
tv_downloud = (TextView) mPopView.findViewById(R.id.tv_downloud);
musicLength = (TextView) mPopView.findViewById(R.id.music_length);
musicCur = (TextView) mPopView.findViewById(R.id.music_cur);
id_pop_layout = (LinearLayout) mPopView.findViewById(R.id.id_pop_layout);
play.setOnClickListener(this);
id_pop_layout.setOnClickListener(this);
audioManager = (AudioManager) ((Activity) mContext).getSystemService(Service.AUDIO_SERVICE);
format = new SimpleDateFormat("mm:ss");
seekBar = (SeekBar) mPopView.findViewById(R.id.seekBar);
seekBar.setOnSeekBarChangeListener(new MySeekBar());
tv_downloud.setOnClickListener(this);
if (ContextCompat.checkSelfPermission(mContext, Manifest.permission.WRITE_EXTERNAL_STORAGE) !=
PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions((Activity) mContext,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
} else {
}
}
/**
* 设置窗口的相关属性
*/
@SuppressLint("InlinedApi")
private void setPopupWindow() {
this.setContentView(mPopView);// 设置View
this.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);// 设置弹出窗口的宽
this.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);// 设置弹出窗口的高
this.setFocusable(true);// 设置弹出窗口可
this.setAnimationStyle(R.style.AnimTopMiddle);// 设置动画
this.setBackgroundDrawable(new ColorDrawable(0x00000000));// 设置背景透明
this.setOutsideTouchable(true);
// this.setOnDismissListener(new OnDismissListener() { //退出popupwidon时显示父控件原来的颜色
// @Override
// public void onDismiss() {
// WindowManager.LayoutParams lp = getWindow().getAttributes();
// lp.alpha = 1.0f;
// getWindow().setAttributes(lp);
// }
// });
// mPopView.setOnTouchListener(new View.OnTouchListener() {// 如果触摸位置在窗口外面则销毁
// @Override
// public boolean onTouch(View v, MotionEvent event) {
// int height = mPopView.findViewById(R.id.id_pop_layout).getTop();
// int y = (int) event.getY();
// if (event.getAction() == MotionEvent.ACTION_UP) {
// if (y < height) {
// dismiss();
// }
// }
// return true;
// }
// });
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.play:
if (!mediaPlayer.isPlaying()) {//没播放
mediaPlayer.start();//开始播放
mediaPlayer.seekTo(currentPosition);
//监听播放时回调函数
timer = new Timer();
timer.schedule(new TimerTask() {
Runnable updateUI = new Runnable() {
@Override
public void run() {
musicCur.setText(format.format(mediaPlayer.getCurrentPosition()) + "");
}
};
@Override
public void run() {
if (!isSeekBarChanging) {
seekBar.setProgress(mediaPlayer.getCurrentPosition());
((Activity) mContext).runOnUiThread(updateUI);
}
}
}, 0, 50);
} else {
currentPosition = seekBar.getProgress();
mediaPlayer.pause();//暂停播放
}
break;
case R.id.tv_downloud:
break;
case R.id.id_pop_layout:
currentPosition = seekBar.getProgress();
mediaPlayer.pause();//暂停播放
dismiss();
break;
}
}
/**
* 初始化播放器
*
* @param url
* @param title
*/
private void initMediaPlayer(String url, String title) {
try {
// mediaPlayer.setDataSource("http://class.ynsdfx.com/uploads/20200410/4958b3dc56895cedffbe20ca86869c4c.wav");//指定音频文件的路径
mediaPlayer.setDataSource(url);//指定音频文件的路径
mediaPlayer.prepare();//让mediaplayer进入准备状态
mediaPlayer.setLooping(true);
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
seekBar.setMax(mediaPlayer.getDuration());
musicLength.setText(format.format(mediaPlayer.getDuration()) + "");
musicCur.setText("00:00");
musicName.setText(title);
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
public void destroy() {
isSeekBarChanging = true;
if (mediaPlayer != null) {
mediaPlayer.stop();
mediaPlayer.release();
mediaPlayer = null;
}
if (timer != null) {
timer.cancel();
timer = null;
}
}
/*进度条处理*/
public class MySeekBar implements SeekBar.OnSeekBarChangeListener {
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
}
/*滚动时,应当暂停后台定时器*/
public void onStartTrackingTouch(SeekBar seekBar) {
isSeekBarChanging = true;
}
/*滑动结束后,重新设置值*/
public void onStopTrackingTouch(SeekBar seekBar) {
isSeekBarChanging = false;
mediaPlayer.seekTo(seekBar.getProgress());
}
}
}
... ...
... ... @@ -15,25 +15,6 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_300"
android:visibility="gone"
android:layout_alignParentBottom="true"
android:orientation="vertical">
<SeekBar
android:id="@+id/seekBar1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_bofang"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="播放" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_44"
android:gravity="center"
android:orientation="horizontal">
... ...
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_margin="20dp"
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/id_pop_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:background="#50000000"
android:orientation="vertical">
<LinearLayout
android:orientation="vertical"
android:layout_marginTop="20dp"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/music_name"
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<RelativeLayout
<View
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="0dp"
android:layout_weight="1" />
<SeekBar
android:id="@+id/seekBar"
android:layout_marginTop="80dp"
android:layout_width="match_parent"
android:progressDrawable="@drawable/seekbar_style"
android:thumb="@drawable/seekbar_thumb"
android:layout_height="wrap_content"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/shape_solid_10_10_fff"
android:orientation="vertical"
android:padding="@dimen/dp_20">
<LinearLayout
android:layout_below="@id/seekBar"
android:layout_alignEnd="@id/seekBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/music_cur"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:id="@+id/music_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="/"/>
android:layout_gravity="center_horizontal"
android:layout_weight="1"/>
<TextView
android:id="@+id/music_length"
android:id="@+id/tv_downloud"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
android:layout_height="wrap_content"
android:text="下载到手机"
android:textColor="#FFAB13" />
</LinearLayout>
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
</LinearLayout>
<SeekBar
android:id="@+id/seekBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:progressDrawable="@drawable/seekbar_style"
android:thumb="@drawable/seekbar_thumb" />
<LinearLayout
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/seekBar"
android:layout_alignEnd="@id/seekBar"
android:layout_marginTop="@dimen/dp_5">
<ImageButton
android:id="@+id/play"
android:src="@mipmap/ic_music_play2x"
android:background="@null"
android:layout_width="25dp"
android:layout_height="25dp"/>
<TextView
android:id="@+id/music_cur"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ddde" />
<ImageButton
android:id="@+id/pause"
android:src="@mipmap/ic_sound_recording"
android:background="@null"
android:layout_marginLeft="20dp"
android:layout_width="25dp"
android:layout_height="25dp"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
<ImageButton
android:id="@+id/stop"
android:src="@mipmap/ic_sound_recording"
android:background="@null"
android:layout_marginLeft="20dp"
android:layout_width="25dp"
android:layout_height="25dp"/>
<TextView
android:id="@+id/music_length"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ddd" />
</LinearLayout>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<ImageView
android:id="@+id/play"
android:layout_width="@dimen/dp_72"
android:layout_height="@dimen/dp_72"
android:background="@null"
android:src="@mipmap/ic_music_play2x" />
<ImageButton
android:id="@+id/pause"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_marginLeft="20dp"
android:visibility="gone"
android:background="@null"
android:src="@mipmap/ic_sound_recording" />
<ImageButton
android:id="@+id/stop"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_marginLeft="20dp"
android:visibility="gone"
android:background="@null"
android:src="@mipmap/ic_sound_recording" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:gravity="bottom|right"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:gravity="bottom|right"
android:orientation="vertical">
<ImageButton
android:id="@+id/volume_plus"
android:src="@android:drawable/ic_input_add"
android:background="@null"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
android:layout_height="wrap_content"
android:background="@null"
android:src="@android:drawable/ic_input_add" />
<ImageButton
android:id="@+id/volume_decrease"
android:src="@android:drawable/arrow_down_float"
android:background="@null"
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:background="@null"
android:src="@android:drawable/arrow_down_float" />
</LinearLayout>
</RelativeLayout>
\ No newline at end of file
</LinearLayout>
\ No newline at end of file
... ...
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#50000000"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<View android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/shape_solid_10_10_fff"
android:orientation="vertical">
<TextView
android:id="@+id/tv_download"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_50"
android:gravity="center"
android:text="下载到手机"
android:textColor="#06121E"
android:textSize="@dimen/dp_15"></TextView>
<View
android:layout_width="wrap_content"
android:layout_height="1dp"
android:layout_marginLeft="@dimen/dp_28"
android:layout_marginRight="@dimen/dp_28"
android:background="#EBEBEB"></View>
<TextView
android:id="@+id/tv_zhuanfa"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_50"
android:gravity="center"
android:text="播放音频"
android:textColor="#06121E"
android:textSize="@dimen/dp_15"></TextView>
<View
android:layout_width="wrap_content"
android:layout_height="3dp"
android:background="#EBEBEB"></View>
<TextView
android:id="@+id/tv_cancal"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_50"
android:gravity="center"
android:text="取消"
android:textColor="#8C9198"
android:textSize="@dimen/dp_15"></TextView>
</LinearLayout>
</LinearLayout>
</LinearLayout>
\ No newline at end of file
... ...