├── AddShopCartAnimProject ├── bin │ ├── classes.dex │ ├── resources.ap_ │ ├── AddShowAnimProject.apk │ ├── AddShopCartAnimProject.apk │ ├── jarlist.cache │ ├── res │ │ └── crunch │ │ │ ├── drawable-hdpi │ │ │ └── ic_launcher.png │ │ │ ├── drawable-mdpi │ │ │ └── ic_launcher.png │ │ │ ├── drawable-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── shopping_cart.png │ │ │ └── drawable-xxhdpi │ │ │ └── ic_launcher.png │ ├── classes │ │ └── com │ │ │ └── example │ │ │ └── addshowanimproject │ │ │ ├── R.class │ │ │ ├── R$id.class │ │ │ ├── R$attr.class │ │ │ ├── R$dimen.class │ │ │ ├── R$menu.class │ │ │ ├── R$style.class │ │ │ ├── R$drawable.class │ │ │ ├── R$layout.class │ │ │ ├── R$string.class │ │ │ ├── BuildConfig.class │ │ │ ├── MainActivity.class │ │ │ ├── MainActivity$1.class │ │ │ ├── MainActivity$1$1.class │ │ │ ├── animutil │ │ │ ├── AnimUtils$1.class │ │ │ └── AnimUtils.class │ │ │ └── inter │ │ │ └── IAddShopListener.class │ ├── dexedLibs │ │ ├── android-support-v4-b22344f81b97e9941ecbc8facc8bab3a.jar │ │ └── android-support-v4-daee465f944e634e23c05e55a24c329a.jar │ └── AndroidManifest.xml ├── ic_launcher-web.png ├── libs │ └── android-support-v4.jar ├── res │ ├── drawable-hdpi │ │ └── ic_launcher.png │ ├── drawable-mdpi │ │ └── ic_launcher.png │ ├── drawable-xhdpi │ │ ├── biancheng.jpg │ │ ├── ic_launcher.png │ │ └── shopping_cart.png │ ├── drawable-xxhdpi │ │ └── ic_launcher.png │ ├── values │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml │ ├── values-v11 │ │ └── styles.xml │ ├── menu │ │ └── main.xml │ ├── values-w820dp │ │ └── dimens.xml │ ├── values-v14 │ │ └── styles.xml │ └── layout │ │ └── activity_main.xml ├── .settings │ ├── org.eclipse.core.resources.prefs │ └── org.eclipse.jdt.core.prefs ├── gen │ └── com │ │ └── example │ │ └── addshowanimproject │ │ ├── BuildConfig.java │ │ └── R.java ├── src │ └── com │ │ └── example │ │ └── addshowanimproject │ │ ├── inter │ │ └── IAddShopListener.java │ │ ├── MainActivity.java │ │ └── animutil │ │ └── AnimUtils.java ├── .classpath ├── project.properties ├── proguard-project.txt ├── .project └── AndroidManifest.xml └── README.md /AddShopCartAnimProject/bin/classes.dex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/bin/classes.dex -------------------------------------------------------------------------------- /AddShopCartAnimProject/bin/resources.ap_: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/bin/resources.ap_ -------------------------------------------------------------------------------- /AddShopCartAnimProject/ic_launcher-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/ic_launcher-web.png -------------------------------------------------------------------------------- /AddShopCartAnimProject/bin/AddShowAnimProject.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/bin/AddShowAnimProject.apk -------------------------------------------------------------------------------- /AddShopCartAnimProject/libs/android-support-v4.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/libs/android-support-v4.jar -------------------------------------------------------------------------------- /AddShopCartAnimProject/bin/AddShopCartAnimProject.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/bin/AddShopCartAnimProject.apk -------------------------------------------------------------------------------- /AddShopCartAnimProject/bin/jarlist.cache: -------------------------------------------------------------------------------- 1 | # cache for current jar dependency. DO NOT EDIT. 2 | # format is 3 | # Encoding is UTF-8 4 | -------------------------------------------------------------------------------- /AddShopCartAnimProject/res/drawable-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/res/drawable-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /AddShopCartAnimProject/res/drawable-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/res/drawable-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /AddShopCartAnimProject/res/drawable-xhdpi/biancheng.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/res/drawable-xhdpi/biancheng.jpg -------------------------------------------------------------------------------- /AddShopCartAnimProject/res/drawable-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/res/drawable-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /AddShopCartAnimProject/.settings/org.eclipse.core.resources.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | encoding//src/com/example/addshowanimproject=UTF-8 3 | encoding/=UTF-8 4 | -------------------------------------------------------------------------------- /AddShopCartAnimProject/res/drawable-xhdpi/shopping_cart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/res/drawable-xhdpi/shopping_cart.png -------------------------------------------------------------------------------- /AddShopCartAnimProject/res/drawable-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/res/drawable-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /AddShopCartAnimProject/bin/res/crunch/drawable-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/bin/res/crunch/drawable-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /AddShopCartAnimProject/bin/res/crunch/drawable-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/bin/res/crunch/drawable-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /AddShopCartAnimProject/bin/res/crunch/drawable-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/bin/res/crunch/drawable-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /AddShopCartAnimProject/bin/res/crunch/drawable-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/bin/res/crunch/drawable-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /AddShopCartAnimProject/bin/res/crunch/drawable-xhdpi/shopping_cart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/bin/res/crunch/drawable-xhdpi/shopping_cart.png -------------------------------------------------------------------------------- /AddShopCartAnimProject/bin/classes/com/example/addshowanimproject/R.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/bin/classes/com/example/addshowanimproject/R.class -------------------------------------------------------------------------------- /AddShopCartAnimProject/bin/classes/com/example/addshowanimproject/R$id.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/bin/classes/com/example/addshowanimproject/R$id.class -------------------------------------------------------------------------------- /AddShopCartAnimProject/bin/classes/com/example/addshowanimproject/R$attr.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/bin/classes/com/example/addshowanimproject/R$attr.class -------------------------------------------------------------------------------- /AddShopCartAnimProject/bin/classes/com/example/addshowanimproject/R$dimen.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/bin/classes/com/example/addshowanimproject/R$dimen.class -------------------------------------------------------------------------------- /AddShopCartAnimProject/bin/classes/com/example/addshowanimproject/R$menu.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/bin/classes/com/example/addshowanimproject/R$menu.class -------------------------------------------------------------------------------- /AddShopCartAnimProject/bin/classes/com/example/addshowanimproject/R$style.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/bin/classes/com/example/addshowanimproject/R$style.class -------------------------------------------------------------------------------- /AddShopCartAnimProject/bin/classes/com/example/addshowanimproject/R$drawable.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/bin/classes/com/example/addshowanimproject/R$drawable.class -------------------------------------------------------------------------------- /AddShopCartAnimProject/bin/classes/com/example/addshowanimproject/R$layout.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/bin/classes/com/example/addshowanimproject/R$layout.class -------------------------------------------------------------------------------- /AddShopCartAnimProject/bin/classes/com/example/addshowanimproject/R$string.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/bin/classes/com/example/addshowanimproject/R$string.class -------------------------------------------------------------------------------- /AddShopCartAnimProject/bin/classes/com/example/addshowanimproject/BuildConfig.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/bin/classes/com/example/addshowanimproject/BuildConfig.class -------------------------------------------------------------------------------- /AddShopCartAnimProject/bin/classes/com/example/addshowanimproject/MainActivity.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/bin/classes/com/example/addshowanimproject/MainActivity.class -------------------------------------------------------------------------------- /AddShopCartAnimProject/bin/classes/com/example/addshowanimproject/MainActivity$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/bin/classes/com/example/addshowanimproject/MainActivity$1.class -------------------------------------------------------------------------------- /AddShopCartAnimProject/bin/classes/com/example/addshowanimproject/MainActivity$1$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/bin/classes/com/example/addshowanimproject/MainActivity$1$1.class -------------------------------------------------------------------------------- /AddShopCartAnimProject/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 3 | org.eclipse.jdt.core.compiler.compliance=1.6 4 | org.eclipse.jdt.core.compiler.source=1.6 5 | -------------------------------------------------------------------------------- /AddShopCartAnimProject/bin/classes/com/example/addshowanimproject/animutil/AnimUtils$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/bin/classes/com/example/addshowanimproject/animutil/AnimUtils$1.class -------------------------------------------------------------------------------- /AddShopCartAnimProject/bin/classes/com/example/addshowanimproject/animutil/AnimUtils.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/bin/classes/com/example/addshowanimproject/animutil/AnimUtils.class -------------------------------------------------------------------------------- /AddShopCartAnimProject/bin/dexedLibs/android-support-v4-b22344f81b97e9941ecbc8facc8bab3a.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/bin/dexedLibs/android-support-v4-b22344f81b97e9941ecbc8facc8bab3a.jar -------------------------------------------------------------------------------- /AddShopCartAnimProject/bin/dexedLibs/android-support-v4-daee465f944e634e23c05e55a24c329a.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/bin/dexedLibs/android-support-v4-daee465f944e634e23c05e55a24c329a.jar -------------------------------------------------------------------------------- /AddShopCartAnimProject/bin/classes/com/example/addshowanimproject/inter/IAddShopListener.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LinhaiGu/shopcartAnimProject/HEAD/AddShopCartAnimProject/bin/classes/com/example/addshowanimproject/inter/IAddShopListener.class -------------------------------------------------------------------------------- /AddShopCartAnimProject/gen/com/example/addshowanimproject/BuildConfig.java: -------------------------------------------------------------------------------- 1 | /** Automatically generated file. DO NOT MODIFY */ 2 | package com.example.addshowanimproject; 3 | 4 | public final class BuildConfig { 5 | public final static boolean DEBUG = true; 6 | } -------------------------------------------------------------------------------- /AddShopCartAnimProject/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16dp 5 | 16dp 6 | 7 | 8 | -------------------------------------------------------------------------------- /AddShopCartAnimProject/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | AddShowAnimProject 5 | Hello world! 6 | Settings 7 | 8 | 9 | -------------------------------------------------------------------------------- /AddShopCartAnimProject/src/com/example/addshowanimproject/inter/IAddShopListener.java: -------------------------------------------------------------------------------- 1 | package com.example.addshowanimproject.inter; 2 | 3 | /** 4 | * 添加购物的动作监听 5 | * @author 顾林海 6 | * 7 | */ 8 | public interface IAddShopListener { 9 | 10 | /** 11 | * 添加完毕 12 | */ 13 | public void addSucess(); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /AddShopCartAnimProject/res/values-v11/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /AddShopCartAnimProject/res/menu/main.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /AddShopCartAnimProject/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 64dp 9 | 10 | 11 | -------------------------------------------------------------------------------- /AddShopCartAnimProject/res/values-v14/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /AddShopCartAnimProject/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /AddShopCartAnimProject/project.properties: -------------------------------------------------------------------------------- 1 | # This file is automatically generated by Android Tools. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file must be checked in Version Control Systems. 5 | # 6 | # To customize properties used by the Ant build system edit 7 | # "ant.properties", and override values to adapt the script to your 8 | # project structure. 9 | # 10 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): 11 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 12 | 13 | # Project target. 14 | target=android-17 15 | -------------------------------------------------------------------------------- /AddShopCartAnimProject/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 14 | 15 | 16 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /AddShopCartAnimProject/proguard-project.txt: -------------------------------------------------------------------------------- 1 | # To enable ProGuard in your project, edit project.properties 2 | # to define the proguard.config property as described in that file. 3 | # 4 | # Add project specific ProGuard rules here. 5 | # By default, the flags in this file are appended to flags specified 6 | # in ${sdk.dir}/tools/proguard/proguard-android.txt 7 | # You can edit the include path and order by changing the ProGuard 8 | # include property in project.properties. 9 | # 10 | # For more details, see 11 | # http://developer.android.com/guide/developing/tools/proguard.html 12 | 13 | # Add any project specific keep options here: 14 | 15 | # If your project uses WebView with JS, uncomment the following 16 | # and specify the fully qualified class name to the JavaScript interface 17 | # class: 18 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 19 | # public *; 20 | #} 21 | -------------------------------------------------------------------------------- /AddShopCartAnimProject/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | AddShopCartAnimProject 4 | 5 | 6 | 7 | 8 | 9 | com.android.ide.eclipse.adt.ResourceManagerBuilder 10 | 11 | 12 | 13 | 14 | com.android.ide.eclipse.adt.PreCompilerBuilder 15 | 16 | 17 | 18 | 19 | org.eclipse.jdt.core.javabuilder 20 | 21 | 22 | 23 | 24 | com.android.ide.eclipse.adt.ApkBuilder 25 | 26 | 27 | 28 | 29 | 30 | com.android.ide.eclipse.adt.AndroidNature 31 | org.eclipse.jdt.core.javanature 32 | 33 | 34 | -------------------------------------------------------------------------------- /AddShopCartAnimProject/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 10 | 11 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /AddShopCartAnimProject/bin/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 10 | 11 | 16 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /AddShopCartAnimProject/src/com/example/addshowanimproject/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.addshowanimproject; 2 | 3 | import com.example.addshowanimproject.animutil.AnimUtils; 4 | import com.example.addshowanimproject.inter.IAddShopListener; 5 | 6 | import android.app.Activity; 7 | import android.os.Bundle; 8 | import android.util.Log; 9 | import android.view.View; 10 | import android.view.View.OnClickListener; 11 | import android.view.ViewGroup.LayoutParams; 12 | import android.widget.ImageView; 13 | import android.widget.LinearLayout; 14 | import android.widget.Toast; 15 | 16 | public class MainActivity extends Activity { 17 | 18 | /** 19 | * 购物车小图标 20 | */ 21 | private ImageView iv_shop; 22 | 23 | /** 24 | * 添加到购物车按钮 25 | */ 26 | private LinearLayout ll_btn_add; 27 | 28 | private AnimUtils mAnimUtils; 29 | 30 | @Override 31 | protected void onCreate(Bundle savedInstanceState) { 32 | super.onCreate(savedInstanceState); 33 | setContentView(R.layout.activity_main); 34 | initViews(); 35 | initEvent(); 36 | } 37 | 38 | /** 39 | * View的初始化 40 | */ 41 | private void initViews(){ 42 | iv_shop=(ImageView) findViewById(R.id.iv_shop); 43 | ll_btn_add=(LinearLayout) findViewById(R.id.ll_btn_add); 44 | } 45 | 46 | /** 47 | * 注册事件 48 | */ 49 | private void initEvent(){ 50 | final ImageView imageView=new ImageView(this); 51 | imageView.setLayoutParams(new LayoutParams(30, 60)); 52 | imageView.setImageResource(R.drawable.biancheng); 53 | ll_btn_add.setOnClickListener(new OnClickListener() { 54 | 55 | @Override 56 | public void onClick(View v) { 57 | Log.i("TAG","onClick"); 58 | if(mAnimUtils==null){ 59 | mAnimUtils=new AnimUtils(MainActivity.this, ll_btn_add, iv_shop, imageView); 60 | } 61 | mAnimUtils.addShopCart(new IAddShopListener() { 62 | 63 | @Override 64 | public void addSucess() { 65 | Toast.makeText(MainActivity.this, "添加了一个商品", Toast.LENGTH_SHORT).show(); 66 | } 67 | }); 68 | 69 | } 70 | }); 71 | } 72 | 73 | 74 | 75 | } 76 | -------------------------------------------------------------------------------- /AddShopCartAnimProject/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 13 | 14 | 21 | 22 | 27 | 28 | 34 | 35 | 36 | 43 | 44 | 45 | 52 | 53 | 54 | 63 | 64 | 70 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /AddShopCartAnimProject/gen/com/example/addshowanimproject/R.java: -------------------------------------------------------------------------------- 1 | /* AUTO-GENERATED FILE. DO NOT MODIFY. 2 | * 3 | * This class was automatically generated by the 4 | * aapt tool from the resource data it found. It 5 | * should not be modified by hand. 6 | */ 7 | 8 | package com.example.addshowanimproject; 9 | 10 | public final class R { 11 | public static final class attr { 12 | } 13 | public static final class dimen { 14 | /** Default screen margins, per the Android Design guidelines. 15 | 16 | Example customization of dimensions originally defined in res/values/dimens.xml 17 | (such as screen margins) for screens with more than 820dp of available width. This 18 | would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). 19 | 20 | */ 21 | public static final int activity_horizontal_margin=0x7f040000; 22 | public static final int activity_vertical_margin=0x7f040001; 23 | } 24 | public static final class drawable { 25 | public static final int biancheng=0x7f020000; 26 | public static final int ic_launcher=0x7f020001; 27 | public static final int shopping_cart=0x7f020002; 28 | } 29 | public static final class id { 30 | public static final int action_settings=0x7f080002; 31 | public static final int iv_shop=0x7f080000; 32 | public static final int ll_btn_add=0x7f080001; 33 | } 34 | public static final class layout { 35 | public static final int activity_main=0x7f030000; 36 | } 37 | public static final class menu { 38 | public static final int main=0x7f070000; 39 | } 40 | public static final class string { 41 | public static final int action_settings=0x7f050002; 42 | public static final int app_name=0x7f050000; 43 | public static final int hello_world=0x7f050001; 44 | } 45 | public static final class style { 46 | /** 47 | Base application theme, dependent on API level. This theme is replaced 48 | by AppBaseTheme from res/values-vXX/styles.xml on newer devices. 49 | 50 | 51 | Theme customizations available in newer API levels can go in 52 | res/values-vXX/styles.xml, while customizations related to 53 | backward-compatibility can go here. 54 | 55 | 56 | Base application theme for API 11+. This theme completely replaces 57 | AppBaseTheme from res/values/styles.xml on API 11+ devices. 58 | 59 | API 11 theme customizations can go here. 60 | 61 | Base application theme for API 14+. This theme completely replaces 62 | AppBaseTheme from BOTH res/values/styles.xml and 63 | res/values-v11/styles.xml on API 14+ devices. 64 | 65 | API 14 theme customizations can go here. 66 | */ 67 | public static final int AppBaseTheme=0x7f060000; 68 | /** Application theme. 69 | All customizations that are NOT specific to a particular API-level can go here. 70 | */ 71 | public static final int AppTheme=0x7f060001; 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /AddShopCartAnimProject/src/com/example/addshowanimproject/animutil/AnimUtils.java: -------------------------------------------------------------------------------- 1 | package com.example.addshowanimproject.animutil; 2 | 3 | import android.animation.Animator; 4 | import android.animation.Animator.AnimatorListener; 5 | import android.animation.Keyframe; 6 | import android.animation.ObjectAnimator; 7 | import android.animation.PropertyValuesHolder; 8 | import android.app.Activity; 9 | import android.content.Context; 10 | import android.view.View; 11 | import android.view.ViewGroup; 12 | import android.view.animation.AccelerateInterpolator; 13 | import android.widget.LinearLayout; 14 | 15 | import com.example.addshowanimproject.inter.IAddShopListener; 16 | 17 | /** 18 | * View 的工具类 19 | * 20 | * @author 顾林海 21 | * 22 | */ 23 | public class AnimUtils { 24 | 25 | private Context mContext; 26 | 27 | /** 28 | * 添加物品按钮 29 | */ 30 | private View mButtonView; 31 | 32 | /** 33 | * 购物车小图标 34 | */ 35 | private View mShopCartView; 36 | 37 | /** 38 | * 所购买商品的图标 39 | */ 40 | private View mShopView; 41 | 42 | private LinearLayout animLayout; 43 | 44 | float a = -1f / 75f; 45 | 46 | private ObjectAnimator mObjectAnimator; 47 | 48 | /** 49 | * 50 | * @param context 51 | * @param btnView 52 | * 添加物品按钮 53 | * @param shopCartView 54 | * 购物车小图标(你要添加的购物车容器) 55 | * @param result 56 | * 你购买商品的图标 57 | */ 58 | public AnimUtils(Context context, View btnView, View shopCartView, 59 | View result) { 60 | this.mContext = context; 61 | this.mButtonView = btnView; 62 | this.mShopCartView = shopCartView; 63 | this.mShopView = result; 64 | init(); 65 | } 66 | 67 | /** 68 | * 初始化 69 | */ 70 | private void init() { 71 | ViewGroup rootView = (ViewGroup) ((Activity) mContext).getWindow() 72 | .getDecorView(); 73 | animLayout = new LinearLayout(mContext); 74 | LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( 75 | LinearLayout.LayoutParams.MATCH_PARENT, 76 | LinearLayout.LayoutParams.MATCH_PARENT); 77 | animLayout.setLayoutParams(lp); 78 | animLayout.setId(Integer.MAX_VALUE); 79 | animLayout.setBackgroundResource(android.R.color.transparent); 80 | rootView.addView(animLayout); 81 | animLayout.addView(mShopView); 82 | } 83 | 84 | /** 85 | * 这里是根据三个坐标点{(0,0),(300,0),(150,300)}计算出来的抛物线方程 86 | * 87 | * @param x 88 | * @return 89 | */ 90 | private float getY(float x) { 91 | return a * x * x + 4 * x; 92 | } 93 | 94 | public void addShopCart(final IAddShopListener listener) { 95 | int[] start_location = new int[2]; 96 | mButtonView.getLocationInWindow(start_location); 97 | 98 | addViewToAnimLayout(animLayout, mShopView, start_location); 99 | 100 | int[] end_location = new int[2]; 101 | mShopCartView.getLocationInWindow(end_location); 102 | 103 | float count = 300; 104 | Keyframe[] keyframes = new Keyframe[(int) count]; 105 | final float keyStep = 1f / (float) count; 106 | float f = (float) (start_location[0] - end_location[0]) / count; 107 | float key = keyStep; 108 | for (int i = 0; i < count; ++i) { 109 | keyframes[i] = Keyframe.ofFloat(key, -i * f); 110 | key += keyStep; 111 | } 112 | 113 | PropertyValuesHolder pvhX = PropertyValuesHolder.ofKeyframe( 114 | "translationX", keyframes); 115 | key = keyStep; 116 | 117 | for (int i = 0; i < count; ++i) { 118 | keyframes[i] = Keyframe.ofFloat(key, -getY(i + 1)); 119 | key += keyStep; 120 | } 121 | 122 | PropertyValuesHolder pvhY = PropertyValuesHolder.ofKeyframe( 123 | "translationY", keyframes); 124 | PropertyValuesHolder scaleX = PropertyValuesHolder.ofFloat("scaleX", 125 | 1f, 0.5f); 126 | PropertyValuesHolder scaleY = PropertyValuesHolder.ofFloat("scaleY", 127 | 1f, 0.5f); 128 | 129 | if (mObjectAnimator == null) { 130 | 131 | mObjectAnimator = ObjectAnimator.ofPropertyValuesHolder(mShopView, 132 | pvhX, pvhY, scaleX, scaleY).setDuration(1500); 133 | mObjectAnimator.setInterpolator(new AccelerateInterpolator()); 134 | mObjectAnimator.addListener(new AnimatorListener() { 135 | 136 | @Override 137 | public void onAnimationStart(Animator animation) { 138 | // TODO Auto-generated method stub 139 | mShopView.setVisibility(View.VISIBLE); 140 | } 141 | 142 | @Override 143 | public void onAnimationRepeat(Animator animation) { 144 | // TODO Auto-generated method stub 145 | 146 | } 147 | 148 | @Override 149 | public void onAnimationEnd(Animator animation) { 150 | // TODO Auto-generated method stub 151 | mShopView.setVisibility(View.GONE); 152 | listener.addSucess(); 153 | } 154 | 155 | @Override 156 | public void onAnimationCancel(Animator animation) { 157 | // TODO Auto-generated method stub 158 | 159 | } 160 | }); 161 | 162 | } 163 | if (!mObjectAnimator.isStarted()) { 164 | 165 | mObjectAnimator.start(); 166 | } 167 | } 168 | 169 | private View addViewToAnimLayout(final ViewGroup vg, final View view, 170 | int[] location) { 171 | int x = location[0]; 172 | int y = location[1]; 173 | LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( 174 | LinearLayout.LayoutParams.WRAP_CONTENT, 175 | LinearLayout.LayoutParams.WRAP_CONTENT); 176 | lp.leftMargin = x; 177 | lp.topMargin = y; 178 | view.setLayoutParams(lp); 179 | return view; 180 | } 181 | 182 | } 183 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # shopcartAnimProject 2 | 仿京东底部添加到购物车效果 3 | 前言 4 | 5 | 美好的双休日快要结束了,昨天玩了一天,今天在家看了一整天的书,大体看了网络框架搭建的一个流程,自己也试了下,有些小问题,还在研究中。用过京东APP的都知道在商品详情页底部有个添加到购物车的按钮,一点击就会将商品以抛物线的形式放入购物车中,今天给大家带来的就是类似购物车的效果。 6 | 7 | 购物车 http://img.blog.csdn.net/20160327163248081 8 | 9 | 原理讲解 10 | 11 | 将上面效果拆分成两部分的话,就是抛物线+图片缩放,抛物线关键点就是获取Y坐标,这里直接套用网上的公式: 12 | 13 | /** 14 | * 这里是根据三个坐标点计算出来的抛物线方程 15 | * 16 | * @param x 17 | * @return 18 | */ 19 | private float getY(float x) { 20 | return a * x * x + 4 * x; 21 | } 22 | 23 | 整体的抛物线和缩放动画使用PropertyValuesHolder,达到同步播放的效果。 24 | 25 | 通过PropertyValuesHolder.ofKeyframe(“translationY”, keyframes);实现商品的向左平移的效果,这里面的keyframes是一个Keyframe对象的数组,看如下的整体取值: 26 | 27 | Keyframe[] keyframes = new Keyframe[(int) count]; 28 | final float keyStep = 1f / (float) count; 29 | float f = (float) (start_location[0] - end_location[0]) / count; 30 | float key = keyStep; 31 | for (int i = 0; i < count; ++i) { 32 | keyframes[i] = Keyframe.ofFloat(key, -i * f); 33 | key += keyStep; 34 | } 35 | 36 | count是动画在执行过程中的步数,这里面拆分成300份,view在屏幕上向左平移时值为负数,因此Keyframe.ofFloat(key, -i * f),这里面的f公式: 37 | 38 | float f = (float) (start_location[0] - end_location[0]) / count; 39 | 40 | sart_location[0]是获取的添加购物车按钮的X坐标,end_location[0]是购物车小图标的X坐标,相减得到按钮到购物车的距离,将距离进行平分,分成count份,因此通过for循环-i * f,进行向左的移动。 41 | 42 | Y轴的平移,会发现先是向上平移(负数),平移到一半后,向下平移(正数),这样构成一个平滑的抛物线,通过上面的Y坐标的公式得出: 43 | 44 | key = keyStep; 45 | for (int i = 0; i < count; ++i) { 46 | keyframes[i] = Keyframe.ofFloat(key, -getY(i + 1)); 47 | key += keyStep; 48 | } 49 | PropertyValuesHolder pvhY = PropertyValuesHolder.ofKeyframe("translationY", keyframes); 50 | 51 | 这时得到View进行抛物线移动时的X和Y坐标,接着会看到View的缩放,缩放代码如下: 52 | 53 | PropertyValuesHolder scaleX = PropertyValuesHolder.ofFloat("scaleX", 54 | 1f, 0.5f); 55 | PropertyValuesHolder scaleY = PropertyValuesHolder.ofFloat("scaleY", 56 | 1f, 0.5f); 57 | 58 | 最后通过: 59 | 60 | mObjectAnimator = ObjectAnimator.ofPropertyValuesHolder(mShopView, 61 | pvhX, pvhY, scaleX, scaleY).setDuration(1500); 62 | 63 | 获取ObjectAnimator对象,进行start()就可动画的播放。 64 | 65 | 如何应用到项目中 66 | 67 | 这里我创建了一个AnimUtils类,使用如下: 68 | 69 | package com.example.addshowanimproject; 70 | 71 | import com.example.addshowanimproject.animutil.AnimUtils; 72 | import com.example.addshowanimproject.inter.IAddShopListener; 73 | 74 | import android.app.Activity; 75 | import android.os.Bundle; 76 | import android.util.Log; 77 | import android.view.View; 78 | import android.view.View.OnClickListener; 79 | import android.view.ViewGroup.LayoutParams; 80 | import android.widget.ImageView; 81 | import android.widget.LinearLayout; 82 | import android.widget.Toast; 83 | 84 | public class MainActivity extends Activity { 85 | 86 | /** 87 | * 购物车小图标 88 | */ 89 | private ImageView iv_shop; 90 | 91 | /** 92 | * 添加到购物车按钮 93 | */ 94 | private LinearLayout ll_btn_add; 95 | 96 | private AnimUtils mAnimUtils; 97 | 98 | @Override 99 | protected void onCreate(Bundle savedInstanceState) { 100 | super.onCreate(savedInstanceState); 101 | setContentView(R.layout.activity_main); 102 | initViews(); 103 | initEvent(); 104 | } 105 | 106 | /** 107 | * View的初始化 108 | */ 109 | private void initViews(){ 110 | iv_shop=(ImageView) findViewById(R.id.iv_shop); 111 | ll_btn_add=(LinearLayout) findViewById(R.id.ll_btn_add); 112 | } 113 | 114 | /** 115 | * 注册事件 116 | */ 117 | private void initEvent(){ 118 | final ImageView imageView=new ImageView(this); 119 | imageView.setLayoutParams(new LayoutParams(30, 60)); 120 | imageView.setImageResource(R.drawable.biancheng); 121 | ll_btn_add.setOnClickListener(new OnClickListener() { 122 | 123 | @Override 124 | public void onClick(View v) { 125 | Log.i("TAG","onClick"); 126 | if(mAnimUtils==null){ 127 | mAnimUtils=new AnimUtils(MainActivity.this, ll_btn_add, iv_shop, imageView); 128 | } 129 | mAnimUtils.addShopCart(new IAddShopListener() { 130 | 131 | @Override 132 | public void addSucess() { 133 | Toast.makeText(MainActivity.this, "添加了一个商品", Toast.LENGTH_SHORT).show(); 134 | } 135 | }); 136 | 137 | } 138 | }); 139 | } 140 | 141 | 142 | 143 | } 144 | 145 | 代码很简单,AnimUtils的初始化,接着调用AnimUtils的addShopCart方法进行动画播放完毕的监听。 146 | 147 | 以下是xml的布局: 148 | 149 | 154 | 155 | 161 | 162 | 169 | 170 | 171 | 172 | 173 | 180 | 181 | 182 | 189 | 194 | 195 | 201 | 202 | 203 | 212 | 213 | 219 | 220 | 221 | 222 | 223 | 224 | 当然有些人会说,你这购物车图片在按钮旁边,那我如果在底部最左边呢?放心,一样可以支持,我们将xml改为如下: 225 | 226 | 231 | 232 | 238 | 239 | 246 | 247 | 252 | 253 | 259 | 260 | 261 | 268 | 269 | 270 | 277 | 278 | 279 | 288 | 289 | 295 | 296 | 297 | 298 | 299 | 300 | 运行程序如下: 301 | 302 | http://img.blog.csdn.net/20160327165756770 303 | 304 | 购物车 305 | 306 | 怎么样,是不是很方便。 307 | --------------------------------------------------------------------------------