• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > 贝塞尔曲线实现的购物车添加商品动画效果,贝塞尔购物车

贝塞尔曲线实现的购物车添加商品动画效果,贝塞尔购物车

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了贝塞尔曲线,贝塞尔曲线怎么用,cdr贝塞尔曲线教程,贝塞尔曲线算法,c4d贝塞尔曲线等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

贝塞尔曲线实现的购物车添加商品动画效果,贝塞尔购物车


效果图如下:

blob.png

1.activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/rly_bezier_curve_shopping_cart"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin">

    <FrameLayout
        android:id="@+id/fly_bezier_curve_shopping_cart"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:paddingRight="30dp"
        android:layout_alignParentStart="true">
        <ImageView
            android:id="@+id/iv_bezier_curve_shopping_cart"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_gravity="right"
            android:src="@drawable/menu_shop_car_selected" />
        <TextView
            android:id="@+id/tv_bezier_curve_shopping_cart_count"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@color/white"
            android:background="@drawable/corner_view"
            android:text="0"
            android:layout_gravity="right"/>
    </FrameLayout>

    <ListView
        android:id="@+id/lv_bezier_curve_shopping_cart"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/fly_bezier_curve_shopping_cart"/>
</RelativeLayout>

menu_shop_car_selected.png

corner_view.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@color/red" />
    <corners android:radius="10dp" />
    <padding android:left="5dp" android:top="1dp"
        android:right="5dp" android:bottom="1dp" />
</shape>

  

2.adapter_shopping_cart_item.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_marginBottom="1dp"
    android:layout_height="wrap_content"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin">
    <ImageView
        android:id="@+id/iv_shopping_cart_item"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_centerVertical="true"
        android:src="@mipmap/ic_launcher"/>
    <TextView
        android:id="@+id/tv_shopping_cart_item"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="购 买"
        android:textSize="16sp"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"/>
</RelativeLayout>

3.MainActivity

public class MainActivity extends AppCompatActivity {
    // 购物车父布局
    private RelativeLayout mShoppingCartRly;
    // 购物车列表显示
    private ListView mShoppingCartLv;
    // 购物数目显示
    private TextView mShoppingCartCountTv;
    // 购物车图片显示
    private ImageView mShoppingCartIv;
    // 购物车适配器
    private GoodsAdapter mGoodsAdapter;
    // 数据源(购物车商品图片)
    private ArrayList<GoodsModel> mData;
    // 贝塞尔曲线中间过程点坐标
    private float[] mCurrentPosition = new float[2];
    // 路径测量
    private PathMeasure mPathMeasure;
    // 购物车商品数目
    private int goodsCount = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // findView
        mShoppingCartLv = (ListView) findViewById(R.id.lv_bezier_curve_shopping_cart);
        mShoppingCartCountTv = (TextView) findViewById(R.id.tv_bezier_curve_shopping_cart_count);
        mShoppingCartRly = (RelativeLayout) findViewById(R.id.rly_bezier_curve_shopping_cart);
        mShoppingCartIv = (ImageView) findViewById(R.id.iv_bezier_curve_shopping_cart);
        // 是否显示购物车商品数目
        isShowCartGoodsCount();
        // 添加数据源
        addData();
        // 设置适配器
        setAdapter();
    }

    private void setAdapter() {
        // 初始化适配器
        mGoodsAdapter = new GoodsAdapter(this, mData);
        // 设置适配器监听
        mGoodsAdapter.setCallBackListener(new GoodsAdapter.CallBackListener() {
            @Override
            public void callBackImg(ImageView goodsImg) {
                // 添加商品到购物车
                addGoodsToCart(goodsImg);
            }
        });
        // 设置适配器
        mShoppingCartLv.setAdapter(mGoodsAdapter);
    }

    private void addGoodsToCart(ImageView goodsImg) {
        // 创造出执行动画的主题goodsImg(这个图片就是执行动画的图片,从开始位置出发,经过一个抛物线(贝塞尔曲线),移动到购物车里)
        final ImageView goods = new ImageView(this);
        goods.setImageDrawable(goodsImg.getDrawable());
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(100, 100);
        mShoppingCartRly.addView(goods, params);

        // 得到父布局的起始点坐标(用于辅助计算动画开始/结束时的点的坐标)
        int[] parentLocation = new int[2];
        mShoppingCartRly.getLocationInWindow(parentLocation);

        // 得到商品图片的坐标(用于计算动画开始的坐标)
        int startLoc[] = new int[2];
        goodsImg.getLocationInWindow(startLoc);

        // 得到购物车图片的坐标(用于计算动画结束后的坐标)
        int endLoc[] = new int[2



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 贝塞尔曲线实现的购物车添加商品动画效果,贝塞尔购物车
  • Android 贝塞尔曲线实现QQ拖拽清除效果
  • Android 自定义View高级特效,神奇的贝塞尔曲线

相关文章

  • 2017-05-26Android环境的搭建,Android环境搭建
  • 2017-05-26谈谈Android中的Divider,AndroidDivider
  • 2017-05-26【原创】Android ExpandableListView使用,expandablelistview
  • 2017-05-26GridView嵌套在ScrollView里只有一行的问题,gridviewscrollview
  • 2017-05-26Android消息机制之Handler,androidhandler
  • 2017-05-222.6.3 ViewPager的简单使用
  • 2017-05-26[android] 手机卫士读取联系人,android卫士
  • 2017-05-225.2.4 Fragment实例精讲——底部导航栏+ViewPager滑动切换页面
  • 2017-05-26Android开发笔记(9)——初步设置Menu,androidmenu
  • 2017-05-26android设备使用usb串口传输数据,android设备usb串口

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android IPC 之 AIDL(一)
    • 在Android studio中进行单元测试和ui测试的分析
    • Android的bitmap和优化,androidbitmap
    • Android Studio 2.0 beta 7 发布
    • 追踪表满导致keepalived vip 不通!
    • Android 对程序异常崩溃的捕捉,android崩溃捕捉
    • 高仿360手机卫士应用源码,高仿360卫士源码
    • 安卓自定义组合控件--toolbar,安卓控件--toolbar
    • android 项目 分享图片到微信
    • Android仿联系人列表分组悬浮列表实现,自定义PinnedHeaderListView实现

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有