在一个安卓直播APP中,除了华丽的礼物视频外,还需要先弹出礼物,而且每个礼物都有不同的类型。 例如保时捷一台只送一台,而樱花这样的礼物可以连续送。 为了实现这个功能,首先看看下面的例子。
一、直播APP礼物弹匣的实现
在实现礼物弹匣的过程中,曾试图通过查看页面框架实现。 因为Fragment认为在更改布局时很有用,但在Popupwindow中容易报告找不到ViewPager的错误。 使用ActivityDialog,还会面临想要更新接口的情况。 在ViewPager中更新Fragment很困难。 这个想法是顺序思想。 以下内容排除了ViewPager的使用方法,而是使用自定义GridView作为每页的“礼物”界面来实现。 如果用其他方法实现的话就可以和我交流。
1、首先要有礼物的实体类。 假设定义为GiftEntity,其中包含属性id、name、type、price、pic等。
2、模拟礼物数据,假设有10种礼物,封装在List收藏中,代入变量giftList。
3、点击按钮弹出Popupwindow礼物弹匣。
4、目标是将每页的礼物定制为CustomGrideView,在内部进行点击活动等操作。 可以体现想法的代码如下。
显示礼物的Popupwindow弹匣代码:
私有语音窗口{
if(popwindow==null ) {
initgiftpopwindow (gift列表;
if (礼品清单!=null giftList.size ()!=0}{
for(intI=0; I(giftlist.size ) (- 1 )/8 ) 1; I ) {
initgrideview(I;
}
giftpageadaptergiftpageadapter=newgiftpageadapter (;
vgift container.set adapter (giftpageadapter );
cpigiftindicator.setviewpager (vpgiftcontainer;
}
}
popwindow.showatlocation (btngift,Gravity.BOTTOM,0,0 );
resetstate(mgiftid、mGiftName );
}
自定义每页礼物GridView的包代码:
私有字符串mgiftid、mGiftType、mGiftName;
私有istimageviewlist=new ArrayList (;
privatelistgridelist=new ArrayList (;
私有语音服务(inti ) {
customgrideviewmgifgrideview=newcustomgrideview (this,giftList,I );
gridelist.add(mgifgrideview;
mgifgrideview.setongiftselectcallback (newcustomgrideview.effectgiftcallback ({
@Override
publicvoideffectgiftid (stringgiftid,String giftType,String giftName,int type ) {
mGiftId=giftId;
mGiftType=giftType;
mGiftName=giftName;
for (customgrideviewmgride : gri delist ({
if(mgride!=null mGride.getType ()!=类型
mGride.clearAdapter (;
}
}
resetstate(giftid,giftName );
mc.onFinish (;
}
);
imageview list.add (mgifgrideview.getviews () );
}
从以上图2可以看出,采用回调技术和GridView的自适应方法,通过继承PagerAdapter实现翻页功能,imageViewList集合是代表所有页面的礼物集合,具体核心代码稍后将在
二、直播APP礼物连发视频实现
1、送礼物的动画功能主要是计数下行时间计时器的使用方法,点击dddqq,不断计时改变状态。
通过计数下行计时器实现送礼物的功能:
//*
*计时器控制持续发送礼物的状态
*/
隐私点击时间=2;
私密性booleaniscontintefinish=假;
classmycountdowntimerextendscountdowntimer {
publicmycountdowntimer (longmillisinfuture,long countDownInterval ) {
超级(millisinfuture,countDownInterval;
}
@Override
公共语音在线(
点击时间=2;
if(Iscontintefinish ) {
isContinteFinish=false;
if(btncontinueclick!=空btngiftsend!=空) {
bncontinueclick.set visibility (view.gone );
btngiftsend.set visibility (view.visible;
}
}
}
@Override
公共语音(长时间) {
isContinteFinish=true;
if(btncontinueclick!=空) {
btnContinueClick.setText ('连送' 'n' millisUntilFinished/100 );
}
}
}
2、点击发送礼物按钮时,根据礼物本身的类型属性,判断是否可以连接到dddqq,如果可以连接的话,重复次数,决定送多小的礼物。
相关源代码:
此源代码用于ViewPagerIndicator库,可以在github上找到。
如果导入ViewPagerIndicator后找不到类,则必须检查项目中使用的V4包版本与ViewPagerIndicator库的V4包版本是否匹配ViewPagerIndicator库还包含V4软件包,因此您可以从项目中删除V4软件包并将其更新为最新版本。
安卓直播APP礼品弹匣及礼品视频演示源地址:
三、安卓直播APP其他功能的实现请关注后续直播……