您的位置:首页 > 移动开发 > Android开发

Android自定义购物车加减按钮

2017-11-21 14:23 417 查看

前言

一个简单的小控件的使用,代码简单,使用方便

效果图



代码示例

layout/number_adder.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center">

<ImageView
android:id="@+id/btn_reduce"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@mipmap/reduce"
android:textSize="20sp" />

<TextView
android:id="@+id/tv_count"
android:layout_width="50dp"
android:layout_height="40dp"
android:gravity="center"
android:text="1"
android:textColor="#000"
android:textSize="20sp" />

<ImageView
android:id="@+id/btn_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@mipmap/add"
android:textSize="20sp" />
</LinearLayout>


自定义view代码

package adpickerview.zbxxjl.com.addersubtractor;

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import butterknife.OnClick;

/**
* Created by Administrator on 2017/11/20.
*/

public class adderView extends LinearLayout implements View.OnClickListener {

private int value = 1;
private int minValue = 1;
private int maxValue = 10;
private final TextView tvCount;

public adderView(Context context, AttributeSet attrs) {
super(context, attrs);
View view = View.inflate(context, R.layout.number_adder, this);
ImageView btn_reduce = (ImageView) view.findViewById(R.id.btn_reduce);
tvCount = (TextView) view.findViewById(R.id.tv_count);
ImageView btn_add = (ImageView) view.findViewById(R.id.btn_add);
btn_reduce.setOnClickListener(this);
btn_add.setOnClickListener(this);
//设置默认值
int value = getValue();
setValue(value);
}

@OnClick({R.id.btn_reduce, R.id.btn_add})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.btn_reduce://减
reduce();
break;
case R.id.btn_add://加
add();
break;
}
}

/**
* 如果当前值大于最小值   减
*/
private void reduce() {
if (value > minValue) {
value--;
}
setValue(value);
if (onValueChangeListene != null) {
onValueChangeListene.onValueChange(value);
}
}

/**
* 如果当前值小于最小值  加
*/
private void add() {
if (value < maxValue) {
value++;
}
setValue(value);
if (onValueChangeListene != null) {
onValueChangeListene.onValueChange(value);
}
}

//获取具体值
public int getValue() {
String countStr = tvCount.getText().toString().trim();
if (countStr != null) {
value = Integer.valueOf(countStr);
}
return value;
}

public void setValue(int value) {
this.value = value;
tvCount.setText(value + "");
}

public int getMinValue() {
return minValue;
}

public void setMinValue(int minValue) {
this.minValue = minValue;
}

public int getMaxValue() {
return maxValue;
}

public void setMaxValue(int maxValue) {
this.maxValue = maxValue;
}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_reduce://减
reduce();
break;
case R.id.btn_add://加
add();
break;
}
}

//监听回调
public interface OnValueChangeListener {
public void onValueChange(int value);
}

private OnValueChangeListener onValueChangeListene;

public void setOnValueChangeListene(OnValueChangeListener onValueChangeListene) {
this.onValueChangeListene = onValueChangeListene;
}
}


Activity代码

package adpickerview.zbxxjl.com.addersubtractor;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

import butterknife.Bind;
import butterknife.ButterKnife;

public class MainActivity extends AppCompatActivity {

@Bind(R.id.adderview)
adderView adderview;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
//监听
adderview.setOnValueChangeListene(new adderView.OnValueChangeListener() {
@Override
public void onValueChange(int value) {
ToastUtils.show(MainActivity.this, value + "");
}
});
}
}


最后github地址:https://github.com/787060894/adderSubtractor
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: