Android安卓最简单的弹幕实现
2017-01-21 18:09
357 查看
Android安卓最简单的弹幕实现
其实所谓的弹幕实现,无疑就是动画的一种实现方式。这里我用的是
补间动画,补间动画里有一个 子类:
TranslaAnimation:位移变化的动画
明白用什么方式了,那接下来就是看代码了:
可以使者换下这几个属性。对比一下
接下来是Activity
其实所谓的弹幕实现,无疑就是动画的一种实现方式。这里我用的是
补间动画,补间动画里有一个 子类:
TranslaAnimation:位移变化的动画
明白用什么方式了,那接下来就是看代码了:
可以使者换下这几个属性。对比一下
/* TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta) float fromXDelta 动画开始的点离当前View X坐标上的差值 float toXDelta 动画结束的点离当前View X坐标上的差值 float fromYDelta 动画开始的点离当前View Y坐标上的差值 float toYDelta 动画结束的点离当前View Y坐标上的差值*/ //动画类 public class SendDanmu { private TranslateAnimation translateAnimation; //我用的是TextView.这个看自己喜好。这里的boolean量是我用来实现两种弹幕特效 public SendDanmu(TextView textView, RelativeLayout relativeLayout,boolean isIn){ int length=relativeLayout.getBottom()-relativeLayout.getTop(); //获取relativelayout的长度 int y=relativeLayout.getTop()+(int)(Math.random()*length); //设置弹幕随机产生的y坐标 if(isIn==false){ //天女散花型 translateAnimation=new TranslateAnimation(relativeLayout.getLeft(),relativeLayout.getRight(), relativeLayout.getRight(),y); }else{ //水平弹幕 translateAnimation=new TranslateAnimation(relativeLayout.getLeft(),relativeLayout.getRight(), y-400,y-400); } translateAnimation.setDuration(3000); textView.setAnimation(translateAnimation); translateAnimation.setInterpolator(new AccelerateDecelerateInterpolator()); translateAnimation.start(); } }
接下来是Activity
public class DanMuActivity extends Activity implements View.OnClickListener { private Button add, type, send; private RelativeLayout root; private Timer timer; private EditText etadd; boolean isIn = false, isStart = false; int i = 0; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.danmu_main); new SetTitle(this,2); view(); } public void view() { root = (RelativeLayout) findViewById(R.id.danmu_root); add = (Button) findViewById(R.id.danmu_add); type = (Button) findViewById(R.id.danmu_type); etadd = (EditText) findViewById(R.id.danmu_text); send = (Button) findViewById(R.id.danmu_send); send.setOnClickListener(this); type.setOnClickListener(this); add.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.danmu_add: if (isStart == false) { isrun(); isStart = true; add.setText(R.string.danmu_pasue); } else { timer.cancel(); isStart = false; add.setText(R.string.danmu_add); root.removeAllViews(); } break; case R.id.danmu_type: if (isIn == false) { type.setText(R.string.danmu_x); isIn = true; } else { type.setText(R.string.danmu_v); isIn = false; } break; case R.id.danmu_send: if(!etadd.getText().toString().equals("")){ adddamu(true); etadd.setText(""); } break; } } public void adddamu(boolean text) { String[] str = {"你好啊,我可是多彩的弹幕", "hello boy,this is your word", "再见啦您嘞!!!", "我的傻弟弟啊,你犯什么傻呢!", "这EDG咋了,不过依然很支持他们!", "666666,这操作我给满分", "我觉得这个比赛认真点会赢得"}; int[] color = {R.color.red, R.color.blue, R.color.white,R.color.yellow}; TextView tv = new TextView(this); tv.setTextSize(20); //是为了区别随机产生的和自己发送的弹幕 if (text == false) { tv.setBackgroundResource(color[(int) (Math.random() * color.length)]); tv.setText(str[(int) (Math.random() * str.length)]); } else { tv.setText(etadd.getText().toString()); tv.setBackgroundResource(R.drawable.button_bk); } root.addView(tv); new SendDanmu(tv, root, isIn); } //使用计时器+handle持续产生弹幕。并清除界面产生的控件 public void isrun() { timer = new Timer(); TimerTask task = new TimerTask() { @Override public void run() { i++; Message message = handler.obtainMessage(); handler.sendMessage(message); } }; timer.schedule(task, new Date(), 200); } private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { if (i == 2) { //清除产生的控件 root.removeAllViews(); i = 0; } adddamu(false); super.handleMessage(msg); } }; }
相关文章推荐
- Android安卓Fragment简单实现
- Android下 一个自定义VIEW实现简单的弹幕效果
- android(日历+价格)思路简单,实现方便,一看就懂.我是1年安卓新人.
- Android(安卓)一个简单的聊天界面的实现(eclipse实现)
- Android安卓用Dialog对话框简单并且完美实现popupWindow底部弹出效果,有动画效果
- Android下的弹幕的简单实现
- 安卓漫漫路之实现简单的弹幕.
- 安卓Android开发:listView+checkbox的简单实现
- 【android】sqlite+content provider+cursor adapter的最简单实现示例
- android listview 的弹性滑动 简单demo 实现
- 【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能!
- Android 手机重力感应实现简单介绍
- Android中用AsyncTask简单实现多线程
- 16—【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能
- Android:一个简单查询界面的实现
- android 之手机拨号器,以及短信发送器的简单实现
- 简单实现Android顶部工具栏和底部工具栏
- android 3D 游戏实现之简单碰撞检测
- 实现简单的Android的播放视频功能
- 【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能!