首页 > 代码库 > 仿网易新闻广告启动页的实现
仿网易新闻广告启动页的实现
由于项目的需要,需要实现类似网易新闻广告启动页类似的效果就自己动手写了一个,主要功能如下:
第一:在启动应用的时候,首先显示第一张图片;
第二:接着淡入第二张图片(采用动画实现);
第三:动画结束之后,可以点击图片,直接进入广告详情页;
第四:若是不点击广告,则三秒后,自动进入首页面;
源代码如下:
public class MainActivity extends Activity implements OnClickListener { private ImageView firstImage = null; private ImageView secondImage = null; private int runCount = 0;// 线程执行的次数 private Animation inAnimation;// 显示图片的动画 final Handler handler = new Handler(); private Boolean flag = false;// 是否点击广告 private Timer mTimer = null; private TimerTask mTimerTask = null; private long delay = 4000; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); firstImage = (ImageView) findViewById(R.id.first_img);// 显示的第一张图 secondImage = (ImageView) findViewById(R.id.second_img);// 渐入的第二张图 firstImage.setOnClickListener(this); secondImage.setOnClickListener(this); inAnimation = AnimationUtils.loadAnimation(this, R.anim.fade);// 定义一个渐入的动画 adCanClick();//这样设置是为了在动画播放完毕之后可以点击广告图片,否则可能会出现异常 runCount = 0;// 全局变量,用于判断是否是第一次执行 Runnable runnable = new Runnable() { @Override public void run() { // TODO Auto-generated method stub if (runCount == 1) {// 第一次执行则关闭定时执行操作 // 在此处添加执行的代码 secondImage.setVisibility(View.VISIBLE); secondImage.startAnimation(inAnimation); startTimer(); handler.removeCallbacks(this);// 停止计时器:删除指定的Runnable对象,使线程对象停止运行 } if (runCount == 0) {// 只让该线程执行一次 handler.postDelayed(this, 100);// 而Runnable中的150毫秒表示每隔150毫秒秒执行一次你的功能模块; } runCount++; } }; handler.postDelayed(runnable, 1000);// 打开定时器,执行操作:postDelay中的1秒表示程序运行到此处延迟一秒开启这个handler } @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.first_img: flag = true;// 说明在广告展示的三秒之内点击了查看广告 stopTimer();// 先关闭 startTimer();// 再打开 break; case R.id.second_img: flag = true;// 说明在广告展示的三秒之内点击了查看广告 stopTimer(); startTimer(); break; default: break; } } /** * 打开timer */ private void startTimer() { if (mTimer == null) { mTimer = new Timer(); } if (mTimerTask == null) { mTimerTask = new TimerTask() { @Override public void run() { if (flag) { Intent intent = new Intent(MainActivity.this, AdActivity.class); startActivity(intent); stopTimer(); } else { Intent intent = new Intent(MainActivity.this, MainPageActivity.class); startActivity(intent); stopTimer(); } } }; } if(flag){//如果点击按钮了,则重设delay的时间,从而使立即执行该操作 delay = 100; } if (mTimer != null && mTimerTask != null) mTimer.schedule(mTimerTask, delay); } /** * 关闭timer */ private void stopTimer() { if (mTimer != null) { mTimer.cancel(); mTimer = null; } if (mTimerTask != null) { mTimerTask.cancel(); mTimerTask = null; } } /** * 广告可以点击 */ private void adCanClick(){ firstImage.setClickable(false); secondImage.setClickable(false); new Timer().schedule(new TimerTask() { @Override public void run() { // TODO Auto-generated method stub firstImage.setClickable(true); secondImage.setClickable(true); } }, 2100);//2100这个时间是启动到动画播放完毕的时间 } }
仿网易新闻广告启动页的实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。