/music-player-lib/src/main/java/com/music/player/lib/view/MusicCommentTitleView.java

https://github.com/Yuye584312311/iMusic · Java · 136 lines · 114 code · 13 blank · 9 comment · 17 complexity · 414bb97eb92fb5c7edb86e97478e9346 MD5 · raw file

  1. package com.music.player.lib.view;
  2. import android.annotation.SuppressLint;
  3. import android.content.Context;
  4. import android.content.res.TypedArray;
  5. import android.graphics.Color;
  6. import android.graphics.drawable.Drawable;
  7. import android.os.SystemClock;
  8. import android.support.annotation.Nullable;
  9. import android.text.TextUtils;
  10. import android.util.AttributeSet;
  11. import android.util.TypedValue;
  12. import android.view.View;
  13. import android.widget.ImageView;
  14. import android.widget.LinearLayout;
  15. import android.widget.TextView;
  16. import com.music.player.lib.R;
  17. import com.music.player.lib.util.MusicUtils;
  18. /**
  19. * TinyHung@Outlook.com
  20. * 2018/5/29
  21. * 通用的标题栏
  22. */
  23. public class MusicCommentTitleView extends LinearLayout implements View.OnClickListener {
  24. private TextView mTitleView,mSubTitle;
  25. private long[] clickCount = new long[2];
  26. public MusicCommentTitleView(Context context) {
  27. super(context);
  28. init(context,null);
  29. }
  30. public MusicCommentTitleView(Context context, @Nullable AttributeSet attrs) {
  31. super(context, attrs);
  32. init(context,attrs);
  33. }
  34. @SuppressLint("WrongViewCast")
  35. private void init(Context context, AttributeSet attrs) {
  36. View.inflate(context, R.layout.music_comment_title_layout,this);
  37. ImageView btnback = (ImageView) findViewById(R.id.view_btn_back);
  38. ImageView btnMenu = (ImageView) findViewById(R.id.view_btn_menu);
  39. mTitleView = (TextView) findViewById(R.id.view_title);
  40. mSubTitle = (TextView) findViewById(R.id.view_sub_title);
  41. if(null!=attrs){
  42. TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.MusicCommentTitleView);
  43. Drawable backDrawable = typedArray.getDrawable(R.styleable.MusicCommentTitleView_musicCommentBackRes);
  44. Drawable menuDrawable = typedArray.getDrawable(R.styleable.MusicCommentTitleView_musicCommentMenuRes);
  45. if(null!=backDrawable){
  46. btnback.setImageDrawable(backDrawable);
  47. }
  48. if(null!=menuDrawable){
  49. btnMenu.setImageDrawable(menuDrawable);
  50. }
  51. //标题
  52. String titleText = typedArray.getString(R.styleable.MusicCommentTitleView_musicCommentTitle);
  53. int titleColor = typedArray.getColor(R.styleable.MusicCommentTitleView_musicCommentTitleColor,
  54. Color.parseColor("#FFFFFF"));
  55. float titleSize = typedArray.getDimensionPixelSize(R.styleable.MusicCommentTitleView_musicCommentTitleSize, 18);
  56. //副标题
  57. String subTitleText = typedArray.getString(R.styleable.MusicCommentTitleView_musicCommentSubTitle);
  58. int subTitleColor = typedArray.getColor(R.styleable.MusicCommentTitleView_musicCommentSubTitleColor,
  59. Color.parseColor("#EFEFEF"));
  60. float subTitleSize = typedArray.getDimensionPixelSize(R.styleable.MusicCommentTitleView_musicCommentSubTitleSize, 14);
  61. //标题
  62. mTitleView.setText(titleText);
  63. mTitleView.setTextColor(titleColor);
  64. mTitleView.setTextSize(TypedValue.COMPLEX_UNIT_DIP,titleSize);
  65. if(!TextUtils.isEmpty(subTitleText)){
  66. btnMenu.setVisibility(GONE);
  67. //副标题
  68. mSubTitle.setText(subTitleText);
  69. mSubTitle.setTextColor(subTitleColor);
  70. mSubTitle.setTextSize(TypedValue.COMPLEX_UNIT_DIP,subTitleSize);
  71. }
  72. typedArray.recycle();
  73. }
  74. btnback.setOnClickListener(this);
  75. mTitleView.setOnClickListener(this);
  76. mSubTitle.setOnClickListener(this);
  77. btnMenu.setOnClickListener(this);
  78. findViewById(R.id.statusbar_view).getLayoutParams().height= MusicUtils.getInstance().getStatusBarHeight(getContext());
  79. }
  80. @Override
  81. public void onClick(View v) {
  82. int id = v.getId();
  83. if(id==R.id.view_btn_back){
  84. if(null!=mOnTitleClickListener) mOnTitleClickListener.onBack(v);
  85. }else if(id==R.id.view_sub_title){
  86. if(null!=mOnTitleClickListener) mOnTitleClickListener.onSubTitleClick(v);
  87. }else if(id==R.id.view_btn_menu){
  88. if(null!=mOnTitleClickListener) mOnTitleClickListener.onMenuClick(v);
  89. }else if(id==R.id.view_title){
  90. if(null!=clickCount&&null!=mOnTitleClickListener){
  91. System.arraycopy(clickCount,1,clickCount,0,clickCount.length - 1);
  92. clickCount[clickCount.length - 1] = SystemClock.uptimeMillis();
  93. if (clickCount[0] >= (clickCount[clickCount.length - 1] - 1000)) {
  94. if(null!=mOnTitleClickListener) mOnTitleClickListener.onTitleClick(v,true);
  95. return;
  96. }
  97. if(null!=mOnTitleClickListener) mOnTitleClickListener.onTitleClick(v,false);
  98. }
  99. }
  100. }
  101. public void setTitle(String title){
  102. if(null!=mTitleView){
  103. mTitleView.setText(title);
  104. }
  105. }
  106. public void setSubTitle(String subTitle) {
  107. if(null!=mSubTitle){
  108. mSubTitle.setVisibility(VISIBLE);
  109. findViewById(R.id.view_btn_menu).setVisibility(GONE);
  110. mSubTitle.setText(subTitle);
  111. }
  112. }
  113. public abstract static class OnTitleClickListener{
  114. public void onBack(View view){}
  115. public void onTitleClick(View view,boolean doubleClick){}
  116. public void onSubTitleClick(View v){}
  117. public void onMenuClick(View v){}
  118. }
  119. private OnTitleClickListener mOnTitleClickListener;
  120. public void setOnTitleClickListener(OnTitleClickListener onTitleClickListener) {
  121. mOnTitleClickListener = onTitleClickListener;
  122. }
  123. }