//之定楼梯布局效果
public class MyView extends RelativeLayout{ private Button titleBarLeft; private TextView titleBarTitle; private Button titleBarRight; private int num = 0; private TypedArray attributes; 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); } public void setupView(Context context,AttributeSet attrs) { attributes = context.obtainStyledAttributes(attrs, R.styleable.CustomTitleBar); if (attributes !=null){ //设置左边按钮的文字 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); } 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); } }
组合式加减控件
public class ShowView extends ViewGroup { //记录是添加还是删除状态 private Paint text; //屏幕宽度 private int maxWidth; //显示控件宽度 //当前已添加所有控件总宽度 private int num; private int firstX = 0; private int firstY = 0; //空间本身的宽 private int a = 200; //空间本身的高 private int b = 100; private String showMes; private Paint rectangle; //判断是否重置循环 private boolean isReset; private int shu; 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); text = new Paint(); rectangle = 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.skyblue); text.setTextSize(40); text.setColor(Color.WHITE); rectangle.setColor(color); for (int i = 1;i<=num;i++){ if (a>maxWidth){ firstX = a-400; firstY = b-100; a = a-200; for (int q = 1;q<shu;q++){ if (firstX>=0){ showMes = "第" + i + "条数据"; canvas.drawRect(firstX,firstY,a,b, rectangle); canvas.drawText(showMes,firstX,firstY+50,text); firstX = a-400; firstY = b; a-=200; b+=100; i++; } } isReset = true; } if (firstX<0&&firstY!=0&&isReset){ firstX = 0; firstY = b-100; a = firstX+200; showMes = "第" + i + "条数据"; canvas.drawRect(firstX,firstY,a,b, rectangle); canvas.drawText(showMes,firstX,firstY+50,text); firstX = a; firstY = b; a+=200; b+=100; isReset = false; }else { showMes = "第" + i + "条数据"; canvas.drawRect(firstX,firstY,a,b, rectangle); canvas.drawText(showMes,firstX,firstY+50,text); firstX = a; firstY = b; a+=200; b+=100; } shu = num - i; } firstX = 0; firstY = 0; a = 200; b = 100; } public void changeShow(int num){ this.num = num; postInvalidate(); } }
MAinActivity调用方法
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); } }); } }