自定义组件
来源:互联网 发布:360秒收录网站源码 编辑:程序博客网 时间:2024/05/29 21:18
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <com.example.zidy1101.AddDeleteView android:id="@+id/ad" android:layout_width="match_parent" android:layout_height="wrap_content" app:left_txt="加" app:right_txt="减" app:middle_txt="3" /> <com.example.zidy1101.Huatu android:background="#00ff00" android:layout_width="match_parent" android:layout_height="wrap_content" /></LinearLayout>
//Maincitiy
package com.example.zidy1101;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.TextView;//组合控件使用public class MainActivity extends AppCompatActivity{ AddDeleteView adv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); adv = (AddDeleteView) findViewById(R.id.ad); //减号控件 //TextView txtDelete=(TextView) adv.findViewById(R.id.txt_delete); adv.setOnAddDelClickListener(new AddDeleteView.OnAddDelClickListener() { @Override public void onAddClick(View v) { int origin=adv.getNumber(); origin++; adv.setNumber(origin); } @Override public void onDelClick(View v) { int origin=adv.getNumber(); origin--; adv.setNumber(origin); } }); }}
//组合
package com.example.zidy1101;import android.content.Context;import android.content.res.TypedArray;import android.util.AttributeSet;import android.view.View;import android.view.ViewGroup;import android.widget.EditText;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.TextView;public class AddDeleteView extends LinearLayout{ private OnAddDelClickListener Listener; private EditText etNumber; //对外提供一个点击的回调接口 interface OnAddDelClickListener{ void onAddClick(View v); void onDelClick(View v); } //对象 public void setOnAddDelClickListener(OnAddDelClickListener Listener){ if (Listener!=null){ this.Listener=Listener; } } public AddDeleteView(Context context) { this(context,null); } public AddDeleteView(Context context, AttributeSet attrs) { this(context, attrs,0); } public AddDeleteView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initView(context, attrs, defStyleAttr);//方法 } //方法 private void initView(Context context, AttributeSet attrs, int defStyleAttr) { View v = View.inflate(context, R.layout.delete, this); TextView txtDelete = (TextView) findViewById(R.id.txt_delete); TextView txtAdd = (TextView) findViewById(R.id.txt_add); etNumber=(EditText) findViewById(R.id.et_number); //自定义View TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.AddDeleteViewStyle); String left = typedArray.getString(R.styleable.AddDeleteViewStyle_left_txt); String right = typedArray.getString(R.styleable.AddDeleteViewStyle_right_txt); String middle = typedArray.getString(R.styleable.AddDeleteViewStyle_middle_txt); txtDelete.setText(left); txtAdd.setText(right); etNumber.setText(middle); //释放 typedArray.recycle(); //接口中实现的两个方法 txtDelete.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Listener.onDelClick(v); } }); txtAdd.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Listener.onAddClick(v); } }); } //对外提供设置EditText值得方法 public void setNumber(int number){ if (number>0){ etNumber.setText(number+""); } } public int getNumber(){ int number=0; try { String trim = etNumber.getText().toString().trim(); number = Integer.valueOf(trim); }catch (Exception e){ number=0; } return number; } //第四个有个错误 是版本错误 是21几以上的不会报错}
//画图
package com.example.zidy1101;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.support.annotation.Nullable;import android.util.AttributeSet;import android.view.View;public class Huatu extends View{ public Huatu(Context context) { super(context); } public Huatu(Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public Huatu(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } //重要方法 @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);//画出来的线是连续的 paint.setColor(Color.RED);//颜色 paint.setFakeBoldText(true);//粗细 //需要范围 画圆 canvas.drawCircle(50,50,50,paint); } //Measure测量 @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); int widthMode=MeasureSpec.getMode(widthMeasureSpec); int widthSize=MeasureSpec.getSize(widthMeasureSpec); int heightMode=MeasureSpec.getMode(heightMeasureSpec); int heightSize=MeasureSpec.getSize(heightMeasureSpec); }}
阅读全文
0 0
- 自定义组件
- 自定义组件
- 自定义组件
- 自定义组件
- 自定义组件
- 自定义组件
- 自定义组件
- 自定义组件
- 自定义组件
- 自定义组件
- 自定义组件
- 自定义组件
- 自定义组件
- view 自定义组件 --- 水滴组件
- 动态改变自定义组件!
- 创建JSF自定义组件
- 创建JSF自定义组件
- WEB自定义数据组件
- Retrofit
- Java基础部分设计模式
- 一批文学电子书-手机上看
- python学习笔记-实例方法、类方法、静态方法
- Android二维码的扫描和制作
- 自定义组件
- HDU-2013(蟠桃记)
- 奇异值分解 VS 特征值分解
- 【R】R-Shinny的一些笔记
- go语言获取exe文件执行路径
- http协议详解及操作
- 20171105考试总结
- 求2个正整数之和
- PAT乙级题1023.组个最小数