登录 立即注册
安币:
查看: 60|回复: 4
打印 上一主题 下一主题

重庆时时彩倍投技巧| Android仿硬币转动微信红包动画效果,android抢红包

[复制链接]

387

主题

531

帖子

1828

安币

手工艺人

跳转到指定楼层
楼主
发表于 前天 10:57 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本文来源:http://www.oneupabq.com/a/www.jsslgc.gov.cn/

重庆时时彩独胆倍投 www.oneupabq.com,父党、母党得同曰兄弟者,兄弟是相亲之辞,因推而广之,异姓亦得言之,故《释亲》云‘父之党为宗族,母与妻之党为兄弟’,是母党为兄弟之文也。这完全是谬论。


            

        项目需要研究了一下微信红包动画,即硬币转动的效果,原理其实就是三张不同角度的图片利用animationdrawable帧动画进行播放,在参考了案例之后,给自己记录一下完成的过程。

        1,在xml文件中定义动画:

        步骤如下:

        ①新建 android 项目

        ②在drawable目录中新建一个anim.xml(注意文件名小写)

[Java] 查看源文件 复制代码
<

        根标签为animation-list,其中oneshot代表着是否只展示一遍,设置为false会不停的循环播放动画根标签下,通过item标签对动画中的每一个图片进行声明 ,android:duration 表示展示所用的该图片的时间长度 ,可通过该参数来设置图片旋转的速度,其他属性可以自行查找资料~

        2,设置布局文件,效果以及代码如下

        

[Java] 查看源文件 复制代码
<

        3,实现红包弹窗的效果,效果及代码如下:

        步骤如下:

        ①自定义红包弹窗diaog类:红色代码部分为启动动画部分

        

[Java] 查看源文件 复制代码
package com.example.xuboyu.luckeymoney; 
import android.app.dialog; 
import android.content.context; 
import android.content.dialoginterface; 
import android.graphics.drawable.animationdrawable; 
import android.view.display; 
import android.view.gravity; 
import android.view.layoutinflater; 
import android.view.view; 
import android.view.viewgroup; 
import android.view.windowmanager; 
import android.widget.button; 
import android.widget.textview; 
/** 
 * 自定义红包弹窗 
 * created by xuboyu on 2017/2/20. 
 */ 
public class luckeydialog extends dialog { 
 public luckeydialog(context context) { 
  super(context); 
 } 
 public luckeydialog(context context, int theme) { 
  super(context, theme); 
 } 
 public static class builder { 
  private context context; 
  private string name;//发红包者的名称 
  private button red_page; 
  //拆红包按钮 
  private string openbuttontext; 
  private onclicklistener openbuttonclicklistener; 
  //关闭按钮 
  private string closebuttontext; 
  private onclicklistener closebuttonclicklistener; 
  public builder(context context, int dialog) { 
   this.context = context; 
  } 
  /** 
   * set the dialog title from resource 
   * 
   * @param name 
   * @return 
   */ 
  public builder setname(int name) { 
   this.name = (string) context.gettext(name); 
   return this; 
  } 
  /** 
   * set the dialog title from string 
   * 
   * @param name 
   * @return 
   */ 
  public builder setname(string name) { 
   this.name = name; 
   return this; 
  } 
  /** 
   * set the positive button resource and it's listener 
   * 
   * @param closebuttontext 
   * @return 
   */ 
  public builder setclosebutton(int closebuttontext, 
           onclicklistener listener) { 
   this.closebuttontext = (string) context 
     .gettext(closebuttontext); 
   this.closebuttonclicklistener = listener; 
   return this; 
  } 
  public builder setclosebutton(string closebuttontext, 
          onclicklistener listener) { 
   this.closebuttontext = closebuttontext; 
   this.closebuttonclicklistener = listener; 
   return this; 
  } 
  /** 
   * set the positive button resource and it's listener 
   * 
   * @param openbuttontext 
   * @return 
   */ 
  public builder setopenbutton(int openbuttontext, 
           onclicklistener listener) { 
   this.openbuttontext = (string) context 
     .gettext(openbuttontext); 
   this.openbuttonclicklistener = listener; 
   return this; 
  } 
  public builder setopenbutton(string openbuttontext, 
           onclicklistener listener) { 
   this.openbuttontext = openbuttontext; 
   this.openbuttonclicklistener = listener; 
   return this; 
  } 
  public luckeydialog create() { 
   layoutinflater inflater = (layoutinflater) context 
     .getsystemservice(context.layout_inflater_service); 
   //加载布局 
   final luckeydialog dialog = new luckeydialog(context,r.style.dialog); 
   view layout = inflater.inflate(r.layout.open, null); 
   red_page = (button) layout.findviewbyid(r.id.open_btn); 
   <span style="color:#ff0000;">//red指的是需要播放动画的imageview控件 
   animationdrawable animationdrawable = (animationdrawable)red_page.getbackground(); 
   animationdrawable.start();//启动动画</span> 
   dialog.addcontentview(layout, new viewgroup.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(new view.onclicklistener() { 
        public void onclick(view v) { 
         openbuttonclicklistener.onclick(dialog, 
           dialoginterface.button_positive); 
        } 
       }); 
    } 
   } else { 
    // if no confirm button just set the visibility to gone 
    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(new view.onclicklistener() { 
        public void onclick(view v) { 
         closebuttonclicklistener.onclick(dialog, 
           dialoginterface.button_positive); 
        } 
       }); 
    } 
   } else { 
    // if no confirm button just set the visibility to gone 
    layout.findviewbyid(r.id.close).setvisibility( 
      view.gone); 
   } 
   dialog.setcontentview(layout); 
   return dialog; 
  } 
 } 
} 

        ②在系统style文件中新增一个diaog

[Java] 查看源文件 复制代码
<style name="dialog" parent="android:style/theme.dialog"> 
  <!-- <item name="android:background">#00000000</item> --> 
  <item name="android:windowbackground">@drawable/red_bg</item> 
  <item name="android:windowframe">@null</item> 
  <item name="android:windownotitle">true</item> 
  <item name="android:windowisfloating">true</item><!-- 是否漂现在activity上 --> 
  <item name="android:windowcloseontouchoutside">false</item 
</style> 

        ③在mainactivity中调用自定义的diaog类并实例化,并且设置弹出的红包占屏幕的比例,不然弹出的红包会占满整个屏幕,红色代码为设置大小代码。

[Java] 查看源文件 复制代码
red1.setonclicklistener(new view.onclicklistener() { 
   @override 
   public void onclick(view view) { 
    luckeydialog.builder builder = new luckeydialog.builder(mcontext,r.style.dialog);//调用style中的diaog 
    builder.setname("系统"); 
    builder.setopenbutton("", new dialoginterface.onclicklistener() { 
     public void onclick(dialoginterface dialog, int which) { 
     intent intent = new intent(mcontext,open.class); 
     startactivity(intent); 
     dialog.dismiss(); 
     } 
    }); 
    builder.setclosebutton("", new dialoginterface.onclicklistener() { 
     @override 
     public void onclick(dialoginterface dialog, int i) { 
      dialog.dismiss(); 
     } 
    }); 
    <span style="color:#ff0000;">dialog dialog = builder.create(); 
    window dialogwindow = dialog.getwindow(); 
    windowmanager m = getwindowmanager(); 
    display d = m.getdefaultdisplay(); // 获取屏幕宽、高用 
    windowmanager.layoutparams p = 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(); 
   } 
  }); 

        4,完成点击后的两种结果,即抢到和未抢到的两种结果,通过intent跳转领取成功类或者跳出失败弹窗的简单逻辑即可。

        ①抢到的效果图,这里界面比较简单就不贴代码了。

        

        ②失败弹窗的效果图,这里的自定义弹窗代码与红包弹窗的代码基本相似,区别就在于少了个拆红包按钮而已,布局也相对简单,就不贴出来了,主要在这里面需要使用比例来规划几个部件的位置(参考上面的红包代码),否则无法适配多种屏幕,会出现压缩拉伸变形的情况。

        

        到这里粗略的红包动画效果就基本完成了!当然实际应用中需要用到网络请求之类的,就再按照业务要求加入。



        
分享到:  QQ好友和群 QQ空间 微信
收藏收藏 支持支持 反对反对

413

主题

565

帖子

5677

安币

手工艺人

沙发
发表于 前天 12:35 | 只看该作者
安卓巴士是个不错的网站,我来顶个贴~

0

主题

1万

帖子

2498

安币

Android大神

Rank: 6Rank: 6

板凳
发表于 前天 21:06 | 只看该作者
楼主是好人,回个帖会有安币吗?

256

主题

402

帖子

590

安币

手工艺人

地板
发表于 昨天 04:48 | 只看该作者
楼主是好人,回个帖会有安币吗?

383

主题

552

帖子

1843

安币

手工艺人

5#
发表于 昨天 16:24 | 只看该作者
感谢分享,楼主V5~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站长推荐

通过邮件订阅最新安卓weekly信息
上一条 /4 下一条

下载安卓巴士客户端

全国最大的安卓开发者社区
联系我们
关闭
合作电话:
13802416937
Email:
435399051@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

重庆时时彩独胆倍投广告投放| 下载客户端|申请友链|手机版|站点统计|重庆时时彩独胆倍投 ( 粤ICP备15117877号 )

快速回复 返回顶部 返回列表
小说 小说 小说 小说 小说 小说
小说 小说 小说 小说 小说 小说
小说 小说 小说 小说 小说 小说
幸运飞艇开奖直播彩票控 北京赛车pk10官方网站 北京pk10定律 北京pk10 幸运农场
幸运飞艇pk10开奖视频 幸运农场中奖图片 重庆幸运农场开奖 北京赛车官网开奖记录 幸运飞艇群