Android实现购物车及其他功能的角标
作者:瞳瞳色丶轻烟 发布时间:2021-12-24 10:54:54
标签:角标
1.先来张效果图
2.自定义一个角标工具类BottomBarView 。
**
* Created by Administrator on 2016/12/27.
* 角标工具类
*/
public class BottomBarView extends RelativeLayout {
private Context context;
private TextView bar_num;
private int count = 0;
public BottomBarView(Context context) {
this(context, null);
}
public BottomBarView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public BottomBarView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
this.context = context;
RelativeLayout rl = (RelativeLayout) LayoutInflater.from(context).inflate(R.layout.bottom_bar_view, this, true);
bar_num = (TextView) rl.findViewById(R.id.bar_num);
bar_num.setVisibility(GONE);
}
public void add() {
bar_num.setVisibility(VISIBLE);
count++;
if (count < 100) {
bar_num.setText(count + "");
} else {
bar_num.setText("99+");
}
}
public void add(int n) throws Exception {
if(n<0){
throw new Exception(BottomBarView.class.getSimpleName()+" add(int n).The param must be a positive num");
}
bar_num.setVisibility(VISIBLE);
count += n;
if (count < 100) {
bar_num.setText(count + "");
} else {
bar_num.setText("99+");
}
}
public void delete() {
if (count == 0) {
bar_num.setVisibility(GONE);
} else {
count--;
if (count == 0) {
bar_num.setVisibility(GONE);
} else if (count > 0 && count < 100) {
bar_num.setVisibility(VISIBLE);
bar_num.setText(count + "");
} else {
bar_num.setVisibility(VISIBLE);
bar_num.setText("99+");
}
}
}
public void deleteAll() {
count = 0;
bar_num.setVisibility(GONE);
}
}
3.工具类的一个xml布局。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<ImageView
android:id="@+id/imggwc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toLeftOf="@+id/imggenduo"
android:src="@drawable/chaoshi_shopping_nav_icon" />
<TextView
android:id="@+id/bar_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="-12dp"
android:layout_toRightOf="@+id/imggwc"
android:background="@drawable/red_dot_bg"
android:text="1"
android:gravity="center"
android:textColor="#FFFFFF"
android:textSize="10dp" />
</RelativeLayout>
4.Activity的实现
public static BottomBarView fragment_bottom_bar;
fragment_bottom_bar = (BottomBarView) findViewById(R.id.fragment_bottom_bar);
//购物车数量角标数据
public static final void gwcsl() {
Map<String, String> map = new HashMap<String, String>();
map.put(ConstantUtil.TOKEN, SpUtil.get(ConstantUtil.TOKEN, ""));
NormalPostRequest npr = new NormalPostRequest(MyUrlUtils.getFullURL(BaseServerConfig.CSGWCSL),
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
String code = response.getString("code");
if (BaseServerConfig.CODE_SUCCESS.equals(code)) {
//角标数
int jiaobiao = Integer.parseInt(response.getString("resultCode"));
try {
fragment_bottom_bar.deleteAll();
if (jiaobiao > 0) {
fragment_bottom_bar.add(jiaobiao);
} else {
fragment_bottom_bar.deleteAll();
}
} catch (Exception e) {
e.printStackTrace();
}
} else {
}
} catch (JSONException e) {
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}, map);
BZApplication.getRequestQueue().add(npr);
}
5.activity的xml布局
<RelativeLayout
android:id="@+id/csgwcdj"
android:layout_width="45dp"
android:layout_height="match_parent"
android:layout_toLeftOf="@+id/relative">
<com.zjtd.bzcommunity.view.BottomBarView
android:id="@+id/fragment_bottom_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true" />
</RelativeLayout>
其实这个小功能很简单,只是你们想得太复杂。。。。。。。
来源:http://blog.csdn.net/Android_Cll/article/details/54426579


猜你喜欢
- 前言安卓的Material库提供了许多样式更精美的控件,其中就有悬浮控件,它表现出一种悬浮在页面的效果,也就是有立体效果的,让人产生这种控件
- public String[] split(String regex) 默认limit为0public String[] split(Str
- 我先说说这两种的方式的不同之处吧 第一种: 在调动成功之后 不会让你指纹解锁 而是调转到当初你设置指纹解锁时的 手势解锁页面 第二种: 在调
- 本文实例为大家分享了C#遍历文件夹获取指定后缀名文件的具体代码,供大家参考,具体内容如下问题描述:项目需要,要进行某文件夹下所有shp数据的
- 一、项目中配置多语言多语言的实现是通过AndroidUtilCode实现的,表示感谢!项目里面有4种语言:中文,英文,德文,俄文。文件夹如下
- 软件需求VS2019社区版、win10操作系统、opencv4.1.0VS2019社区版(免费) 下载地址OpenCV4.1.0 下载地址配
- mybatis 映射文件中,if标签判断字符串相等,两种方式:因为mybatis映射文件,是使用的ognl表达式,所以在判断字符串sex变量
- 本文实例讲述了Android实现将应用崩溃信息发送给开发者并重启应用的方法。分享给大家供大家参考,具体如下:在开发过程中,虽然经过测试,但在
- 使用Aspose.Cells创建和读取Excel文件,供大家参考,具体内容如下1. 创建ExcelAspose.Cells.License
- Android 实现单线程轮循机制批量下载图片listview 在为item 添加从网上下载下来的图片时, 如果每次都整合一个item时都需
- 1.@GrpcServise的作用和优势在没有使用@GrpcServise注解编写服务端时,我们通常需要自定义Server以及端口,包括st
- 一、简介  本文今天主要是讲Redis中对过期key的监听,可能很多小伙伴不会,或者使用会出现一些不可思
- 一、理解slf4j(Simple Logging Facade for Java),表示为java提供的简单日志门面,更底层一点说就是接口。
- 本文实例讲述了Java代理模式。分享给大家供大家参考,具体如下:即Proxy Pattern,23种java常用设计模式之一。代理模式的定义
- 目录 * 仓库的配置1、 下载sonatype Nexus来搭建 * 2 安装nexus服务3、创建 * 仓库4、配置 * 信息中央仓库的配置三个仓
- 1 引言伴随着信息技术的快速发展,近年来,人们的生活已经离不开计算机。生活娱乐几乎都是在计算机上进行的。其中的扫雷游戏就是之一。扫雷游戏是微
- ListView,就如其名,是用来显示列表的一种View,而RecycleView,是其的加强版,今天带来的是这两个几乎具有相同的功能的对比
- XML对开发者来说十分的方便,不仅使用起来简单,而且能够及时调试,修改界面之后马上能看到效果。Java设置布局不具有这个优势。但是java却
- 1.Fork/Join框架简介Fork/Join 它可以将一个大的任务拆分成多个子任务进行并行处理,最后将子任务结果合并成最后的计算结果,并
- 做侧滑删除网上有很多方案,比如重写Listview实现滑动的监听,今天说下一个SwipeListView,这个是之前一个朋友在网上开源的一个