安卓自定义组合式View 加减
2017-10-20 09:10
162 查看
public class AddSubView extends LinearLayout implements View.OnClickListener { private ImageView iv_sub; private ImageView iv_add; private TextView tv_value; private int mValue; //再代码中New对象时使用 public AddSubView(Context context) { this(context, null); } //2.在xml中使用是回调 public AddSubView(Context context, AttributeSet attrs) { this(context, attrs, 0); } //3.在XML中使用,切使用Style风格中 public AddSubView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initView(context); } private void initView(Context context) { //把一个布局文件实例化,并且加载到AddSubView类中 View view = View.inflate(context, R.layout.add_sub_view, this); //初始化控件 iv_sub = (ImageView) view.findViewById(R.id.iv_sub); iv_add = (ImageView) view.findViewById(R.id.iv_add); tv_value = (TextView) view.findViewById(R.id.tv_value); iv_sub.setOnClickListener(this); iv_add.setOnClickListener(this); //获取value值 getValue(); } //imageview按钮的点击事件 @Override public void onClick(View view) { switch (view.getId()) { case R.id.iv_add: addNumber(); break; case R.id.iv_sub: subNumber(); break; default: break; } } //当前数量值,默认为1,设置对此值获取 private int value = 1; private int MinNumber = 1; private int MaxNumber = 5; public int getMinNumber() { return MinNumber; } public void setMinNumber(int minNumber) { MinNumber = minNumber; } public int getMaxNumber() { return MaxNumber; } public void setMaxNumber(int maxNumber) { MaxNumber = maxNumber; } //获取到的values是从ui拿到的 public int getValue() { String trim = tv_value.getText().toString().trim(); if (!TextUtils.isEmpty(trim)) { //因为是字符串,所以要转化成int类型的 value = Integer.valueOf(trim); } return value; } public void setValue(int value) { mValue = value; tv_value.setText(value + ""); } private void subNumber() { if (value > MinNumber) { value--; } setValue(value); if (onNumberChangerListener != null) { onNumberChangerListener.OnNumberChanger(value); } } private void addNumber() { if (value < MaxNumber) { value++; } setValue(value); if (onNumberChangerListener != null) { onNumberChangerListener.OnNumberChanger(value); } } /*定义接口,及所要调用的接口方法,当商品数量发生变化时,回调给接口 * */ public interface OnNumberChangerListener { void OnNumberChanger(int value); } //定义接口 private OnNumberChangerListener onNumberChangerListener; //设置方法接收外界传来的接口对象方法 public void setOnNumberChangerListener(OnNumberChangerListener onNumberChangerListener1) { onNumberChangerListener = onNumberChangerListener1; } } xml
<?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:orientation="horizontal"> <ImageView android:id="@+id/iv_sub" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/jian"/> <TextView android:id="@+id/tv_value" android:layout_width="50dp" android:layout_height="50dp" android:gravity="center" android:text="1" android:textColor="@android:color/black" android:textSize="20sp"/> <ImageView android:id="@+id/iv_add" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/jia"/> </LinearLayout>
AddSubView addSubView = (AddSubView) findViewById(R.id.addsubview); addSubView.setMaxNumber(5); addSubView.setOnNumberChangerListener(new AddSubView.OnNumberChangerListener() { @Override public void OnNumberChanger(int value) { Toast.makeText(MainActivity.this, "变化的数量值" + value, Toast.LENGTH_SHORT).show(); } });
相关文章推荐
- gif格式图片在安卓中的显示(自定义GifView)
- 安卓自定义View基础-颜色
- 安卓自定义 View 基础:坐标系
- 安卓开发(5):自定义RecyclerView.Adapter、RecyclerView和自定义RecyclerView.ViewHolder的使用
- 安卓自定义view之打造滚动的通知栏
- 安卓自定义view之Canvas和Paint方法
- 安卓使用WebView 自定义错误界面
- 安卓自定义view的步骤
- 安卓自定义View进阶-PathMeasure
- 安卓 自定义View来开发自己的游戏或应用
- 安卓自定义View之进步曲线
- 安卓自定义View进阶-事件分发机制详解
- 安卓双向范围取值选择器,双向选择进度条,单向选择进度条自定义视图View实现
- 安卓轮播图的实现(自定义view)
- 安卓自定义view动画案例
- 安卓自定义View——网易颜色渐变效果指示器
- 安卓自定义View——(一:RaiseNumberAnimTextView 带数字增长动画的TextView)
- 安卓自定义 View 基础:角度弧度
- 安卓二级列表的适配器 带优化的 解决二级列表里添加了自定义view以后不能点击展开的问题
- 安卓自定义view,实现页面切换的位置指示动画