acticity>main中
<?xml version="1.0="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <com.example.houxiangyunzhoukao1.MyView
android:id="@+id/titleView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:title_background_color="@color/aa" >
</com.example.houxiangyunzhoukao1.MyView>
<com.example.houxiangyunzhoukao1.ShowView
android:id="@+id/showView" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#fff" android:layout_below="@id/titleView">
</com.example.houxiangyunzhoukao1.ShowView></RelativeLayout>
mainActivity:
package com.example.houxiangyunzhoukao1; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private MyView titleView; private int num = 0; private ShowView showView; private boolean isAddState; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); titleView = findViewById(R.id.titleView); showView = findViewById(R.id.showView); Button titleBarLeftBtn = titleView.getTitleBarLeftBtn(); titleBarLeftBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(num>0){ num--; titleView.setTitleText(num); isAddState = true; showView.changeShow(num); }else { } } }); Button titleBarRightBtn = titleView.getTitleBarRightBtn(); titleBarRightBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { num++; titleView.setTitleText(num); isAddState = true; showView.changeShow(num); } }); } }
<merge xmlns:android="http://schemas.android.com/apk/res/android"> <Button android:id="@+id/title_bar_left" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:layout_marginLeft="5dp" android:background="@null" android:minHeight="45dp" android:minWidth="45dp" android:textSize="25sp" /> <TextView android:id="@+id/title_bar_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:singleLine="true" android:textSize="17sp" /> <Button android:id="@+id/title_bar_right" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="5dp" android:background="@null" android:minHeight="45dp" android:minWidth="45dp" android:textSize="25sp" /> </merge>
package com.example.houxiangyunzhoukao1; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Color; import android.text.TextUtils; import android.util.AttributeSet; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.RelativeLayout; import android.widget.TextView; public class MyView extends RelativeLayout { private Button titleBarLeft; private TextView titleBarTitle; private Button titleBarRight; private int num = 0; private TypedArray attributes; private TextView show; public MyView(Context context) { this(context,null); } public MyView(Context context, AttributeSet attrs) { this(context, attrs,0); } public MyView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initView(context); setupView(context,attrs); } private void initView(Context context) { LayoutInflater.from(context).inflate(R.layout.custom_title_bar,this,true); titleBarLeft = (Button) findViewById(R.id.title_bar_left); titleBarTitle = (TextView) findViewById(R.id.title_bar_title); titleBarRight = (Button) findViewById(R.id.title_bar_right); //show = findViewById(R.id.mes); } public void setupView(Context context,AttributeSet attrs) { attributes = context.obtainStyledAttributes(attrs, R.styleable.CustomTitleBar); if (attributes !=null){ //设置体title背景色 int titleBarBackground = attributes.getResourceId(R.styleable.CustomTitleBar_title_background_color, Color.GREEN); setBackgroundResource(titleBarBackground); //左边按钮 //设置左边按钮的文字 String leftButtonText = "-"; if (!TextUtils.isEmpty(leftButtonText)) { titleBarLeft.setText(leftButtonText); //设置左边按钮文字颜色 int leftButtonTextColor = attributes.getColor(R.styleable.CustomTitleBar_left_button_text_color, Color.WHITE); titleBarLeft.setTextColor(leftButtonTextColor); } //右边按钮 //设置右边按钮的文字 String rightButtonText = "+"; if (!TextUtils.isEmpty(rightButtonText)) { titleBarRight.setText(rightButtonText); //设置左边按钮文字颜色 int leftButtonTextColor = attributes.getColor(R.styleable.CustomTitleBar_right_button_text_color, Color.WHITE); titleBarRight.setTextColor(leftButtonTextColor); } //标题文字 //设置标题文字 String titleText = num+"条数据"; if (!TextUtils.isEmpty(titleText)) { titleBarTitle.setText(titleText); //设置title文字颜色 int titleTextColor = attributes.getColor(R.styleable.CustomTitleBar_title_text_color, Color.WHITE); titleBarTitle.setTextColor(titleTextColor); } //show.setText(titleText); attributes.recycle(); } } public void setTitleClickListener(OnClickListener onClickListener) { if (onClickListener != null) { titleBarLeft.setOnClickListener(onClickListener); titleBarRight.setOnClickListener(onClickListener); } } public Button getTitleBarLeftBtn() { return titleBarLeft; } public Button getTitleBarRightBtn() { return titleBarRight; } public TextView getTitleBarTitle() { return titleBarTitle; } public void setTitleText(int titleText) { num = titleText; Log.i("---",num+""); String titleTextNow = num+"条数据"; titleBarTitle.setText(titleTextNow); } }
package com.example.houxiangyunzhoukao1; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.util.Log; import android.view.View; import android.view.ViewGroup; public class ShowView extends ViewGroup { //记录是添加还是删除状态 private boolean isAdd; private Paint paint1; //屏幕宽度 private int maxWidth; //显示控件宽度 private int showWidth; //当前已添加所有控件总宽度 private int countWidth; private int num; private int firstX = 0; private int firstY = 0; private int lastX = 200; private int lastY = 100; private String showMes; private Paint paint2; //判断是否重置循环 private boolean isReset; private int z; public ShowView(Context context) { this(context,null); } public ShowView(Context context, AttributeSet attrs) { this(context, attrs,0); } public ShowView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); paint1 = new Paint(); paint2 = new Paint(); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { maxWidth = 1080; int maxHeight = heightMeasureSpec; //设置宽高 setMeasuredDimension(maxWidth, maxHeight); //super.onMeasure(widthMeasureSpec,heightMeasureSpec); //Log.i("---------","宽 : "+maxWidth+" 高 : "+maxHeight); } @Override protected void onLayout(boolean b, int i, int i1, int i2, int i3) { } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); int color = getResources().getColor(R.color.aa); paint1.setTextSize(40); paint1.setColor(Color.WHITE); paint2.setColor(color); //Log.i("--------","isAdd : "+isAdd); for (int i = 1;i<=num;i++){ if (lastX>maxWidth){ firstX = lastX-400; firstY = lastY-100; lastX = lastX-200; for (int q = 1;q<z;q++){ if (firstX>=0){ //Log.i("------","二次循环--"+"左上X : "+firstX+"左上Y : "+firstY+"右下X : "+lastX+"右下Y : "+lastY); showMes = "第" + i + "条数据"; canvas.drawRect(firstX,firstY,lastX,lastY,paint2); canvas.drawText(showMes,firstX,firstY+50,paint1); firstX = lastX-400; firstY = lastY; lastX-=200; lastY+=100; i++; } } isReset = true; } // showMes = "第" + i + "条数据"; // canvas.drawRect(firstX,firstY,lastX,lastY,paint2); // canvas.drawText(showMes,firstX,firstY+50,paint1); if (firstX<0&&firstY!=0&&isReset){ firstX = 0; firstY = lastY-100; lastX = firstX+200; showMes = "第" + i + "条数据"; Log.i("------","左上X : "+firstX+"左上Y : "+firstY+"右下X : "+lastX+"右下Y : "+lastY); canvas.drawRect(firstX,firstY,lastX,lastY,paint2); canvas.drawText(showMes,firstX,firstY+50,paint1); firstX = lastX; firstY = lastY; lastX+=200; lastY+=100; isReset = false; }else { showMes = "第" + i + "条数据"; canvas.drawRect(firstX,firstY,lastX,lastY,paint2); canvas.drawText(showMes,firstX,firstY+50,paint1); firstX = lastX; firstY = lastY; lastX+=200; lastY+=100; } //Log.i("------","左上X : "+firstX+"左上Y : "+firstY+"右下X : "+lastX+"右下Y : "+lastY); z = num - i; } firstX = 0; firstY = 0; lastX = 200; lastY = 100; } public void changeShow(int num){ this.num = num; postInvalidate(); } }
在values下创建colors.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="colorPrimary">#3F51B5</color> <color name="colorPrimaryDark">#303F9F</color> <color name="colorAccent">#FF4081</color> <color name="aa">#1b1b1d</color> </resources>