如何在Android中实现一个硬币转动微信红包动画效果
本篇文章给大家分享的是有关如何在Android中实现一个硬币转动微信红包动画效果,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
1,在XML文件中定义动画:
步骤如下:
①新建 Android 项目
②在drawable目录中新建一个anim.xml(注意文件名小写)
<?xmlversion="1.0"encoding="utf-8"?> <animation-listxmlns:android="http://schemas.android.com/apk/res/android"android:oneshot="false"> <itemandroid:drawable="@drawable/bag"android:duration="400"></item> <itemandroid:drawable="@drawable/bag1"android:duration="400"></item> <itemandroid:drawable="@drawable/bag2"android:duration="400"></item> </animation-list>
根标签为animation-list,其中oneshot代表着是否只展示一遍,设置为false会不停的循环播放动画根标签下,通过item标签对动画中的每一个图片进行声明 ,android:duration 表示展示所用的该图片的时间长度 ,可通过该参数来设置图片旋转的速度,其他属性可以自行查找资料~
2,设置布局文件,效果以及代码如下
<?xmlversion="1.0"encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_vertical|center_horizontal" android:background="@drawable/background"> <!--关闭按钮框--> <LinearLayout android:id="@+id/top" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"> <Button android:id="@+id/close" android:layout_width="32dp" android:layout_height="32dp" android:background="@drawable/close" android:layout_margin="10dp"/> </LinearLayout> <!--头像以及相关文字--> <LinearLayout android:layout_below="@+id/top" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="10" android:orientation="vertical"> <RelativeLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="3"> <ImageButton android:id="@+id/head_img" android:layout_width="60dp" android:layout_height="60dp" android:background="@drawable/ic_launcher" android:layout_alignParentTop="true" android:layout_centerHorizontal="true"/> <TextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="系统用户" android:layout_marginTop="10dp" android:layout_below="@+id/head_img" android:layout_centerHorizontal="true" android:textColor="@color/yellow" android:textSize="18sp"/> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/name" android:layout_centerHorizontal="true" android:layout_marginTop="5dp" android:textSize="15sp" android:textColor="@color/yellow2" android:text="给你发了一个红包"/> <TextView android:id="@+id/textView2" android:layout_below="@+id/textView1" android:layout_centerHorizontal="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:textColor="@color/yellow" android:textSize="23sp" android:text="恭喜发财,大吉大利"/> </RelativeLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="3"> <Button android:id="@+id/open_btn" android:layout_width="100dp" android:layout_height="100dp" android:background="@drawable/anim" android:layout_marginTop="50dp" android:layout_centerHorizontal="true"/> </RelativeLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/blow" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginBottom="14dp" android:id="@+id/imageView"/> </RelativeLayout> </LinearLayout> </LinearLayout>
3,实现红包弹窗的效果,效果及代码如下:
步骤如下:
①自定义红包弹窗Diaog类:红色代码部分为启动动画部分
packagecom.example.xuboyu.luckeymoney; importandroid.app.Dialog; importandroid.content.Context; importandroid.content.DialogInterface; importandroid.graphics.drawable.AnimationDrawable; importandroid.view.Display; importandroid.view.Gravity; importandroid.view.LayoutInflater; importandroid.view.View; importandroid.view.ViewGroup; importandroid.view.WindowManager; importandroid.widget.Button; importandroid.widget.TextView; /** *自定义红包弹窗 *Createdbyxuboyuon2017/2/20. */ publicclassLuckeyDialogextendsDialog{ publicLuckeyDialog(Contextcontext){ super(context); } publicLuckeyDialog(Contextcontext,inttheme){ super(context,theme); } publicstaticclassBuilder{ privateContextcontext; privateStringname;//发红包者的名称 privateButtonred_page; //拆红包按钮 privateStringopenButtonText; privateOnClickListeneropenButtonClickListener; //关闭按钮 privateStringcloseButtonText; privateOnClickListenercloseButtonClickListener; publicBuilder(Contextcontext,intdialog){ this.context=context; } /** *SettheDialogtitlefromresource * *@paramname *@return */ publicBuildersetName(intname){ this.name=(String)context.getText(name); returnthis; } /** *SettheDialogtitlefromString * *@paramname *@return */ publicBuildersetName(Stringname){ this.name=name; returnthis; } /** *Setthepositivebuttonresourceandit'slistener * *@paramcloseButtonText *@return */ publicBuildersetCloseButton(intcloseButtonText, OnClickListenerlistener){ this.closeButtonText=(String)context .getText(closeButtonText); this.closeButtonClickListener=listener; returnthis; } publicBuildersetCloseButton(StringcloseButtonText, OnClickListenerlistener){ this.closeButtonText=closeButtonText; this.closeButtonClickListener=listener; returnthis; } /** *Setthepositivebuttonresourceandit'slistener * *@paramopenButtonText *@return */ publicBuildersetOpenButton(intopenButtonText, OnClickListenerlistener){ this.openButtonText=(String)context .getText(openButtonText); this.openButtonClickListener=listener; returnthis; } publicBuildersetOpenButton(StringopenButtonText, OnClickListenerlistener){ this.openButtonText=openButtonText; this.openButtonClickListener=listener; returnthis; } publicLuckeyDialogcreate(){ LayoutInflaterinflater=(LayoutInflater)context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); //加载布局 finalLuckeyDialogdialog=newLuckeyDialog(context,R.style.Dialog); Viewlayout=inflater.inflate(R.layout.open,null); red_page=(Button)layout.findViewById(R.id.open_btn); <span>//red指的是需要播放动画的ImageView控件 AnimationDrawableanimationDrawable=(AnimationDrawable)red_page.getBackground(); animationDrawable.start();//启动动画</span> dialog.addContentView(layout,newViewGroup.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT)); //设置发红包者姓名 ((TextView)layout.findViewById(R.id.name)).setText(name); //设置拆红包的按钮 if(openButtonText!=null){ ((Button)layout.findViewById(R.id.open_btn)) .setText(openButtonText); if(openButtonClickListener!=null){ ((Button)layout.findViewById(R.id.open_btn)) .setOnClickListener(newView.OnClickListener(){ publicvoidonClick(Viewv){ openButtonClickListener.onClick(dialog, DialogInterface.BUTTON_POSITIVE); } }); } }else{ //ifnoconfirmbuttonjustsetthevisibilitytoGONE layout.findViewById(R.id.open_btn).setVisibility( View.GONE); } //设置关闭按钮 if(closeButtonText!=null){ ((Button)layout.findViewById(R.id.close)) .setText(closeButtonText); if(closeButtonClickListener!=null){ ((Button)layout.findViewById(R.id.close)) .setOnClickListener(newView.OnClickListener(){ publicvoidonClick(Viewv){ closeButtonClickListener.onClick(dialog, DialogInterface.BUTTON_POSITIVE); } }); } }else{ //ifnoconfirmbuttonjustsetthevisibilitytoGONE layout.findViewById(R.id.close).setVisibility( View.GONE); } dialog.setContentView(layout); returndialog; } } }
②在系统style文件中新增一个Diaog
<stylename="Dialog"parent="android:style/Theme.Dialog"> <!--<itemname="android:background">#00000000</item>--> <itemname="android:windowBackground">@drawable/red_bg</item> <itemname="android:windowFrame">@null</item> <itemname="android:windowNoTitle">true</item> <itemname="android:windowIsFloating">true</item><!--是否漂现在activity上--> <itemname="android:windowCloseOnTouchOutside">false</item </style>
③在MainActivity中调用自定义的Diaog类并实例化,并且设置弹出的红包占屏幕的比例,不然弹出的红包会占满整个屏幕,红色代码为设置大小代码。
red1.setOnClickListener(newView.OnClickListener(){ @Override publicvoidonClick(Viewview){ LuckeyDialog.Builderbuilder=newLuckeyDialog.Builder(mContext,R.style.Dialog);//调用style中的Diaog builder.setName("系统"); builder.setOpenButton("",newDialogInterface.OnClickListener(){ publicvoidonClick(DialogInterfacedialog,intwhich){ Intentintent=newIntent(mContext,Open.class); startActivity(intent); dialog.dismiss(); } }); builder.setCloseButton("",newDialogInterface.OnClickListener(){ @Override publicvoidonClick(DialogInterfacedialog,inti){ dialog.dismiss(); } }); <span>Dialogdialog=builder.create(); WindowdialogWindow=dialog.getWindow(); WindowManagerm=getWindowManager(); Displayd=m.getDefaultDisplay();//获取屏幕宽、高用 WindowManager.LayoutParamsp=dialogWindow.getAttributes();//获取对话框当前的参数值 p.height=(int)(d.getHeight()*0.7);//高度设置为屏幕的0.6 p.width=(int)(d.getWidth()*0.75);//宽度设置为屏幕的0.65 dialogWindow.setAttributes(p); </span> dialog.show(); } });
以上就是如何在Android中实现一个硬币转动微信红包动画效果,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注恰卡编程网行业资讯频道。
推荐阅读
-
怎么使用Android基准配置文件Baseline Profile方案提升启动速度
-
HTML5如何实现禁止android视频另存为
-
学java好还是学php好?
-
Android如何实现多点触控功能
-
android怎么实现多点触摸应用
-
Android怎么实现手势划定区域裁剪图片
-
android怎么实现简单的矩形裁剪框
-
Android单选多选按钮怎么使用
-
Android中如何利用oncreate获取控件高度或宽度
Android中如何利用oncreate获取控件高度或宽度本篇内容...
-
Android中怎么使用onSaveInstanceState()方法
Android中怎么使用onSaveInstanceState()方法...