仿网易新闻广告启动页的实现

由于项目的需要,需要实现类似网易新闻广告启动页类似的效果就自己动手写了一个,主要功能如下:

第一:在启动应用的时候,首先显示第一张图片;

第二:接着淡入第二张图片(采用动画实现);

第三:动画结束之后,可以点击图片,直接进入广告详情页;

第四:若是不点击广告,则三秒后,自动进入首页面;

源代码如下:

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这个时间是启动到动画播放完毕的时间
	}

}
时间: 2024-08-05 11:45:02

仿网易新闻广告启动页的实现的相关文章

关于仿网易新闻中详细页图文混排功能的实现

最近在了解关于新闻内容的图文混排的效果,网上有人开源一个仿网易新闻的代码,本文就是简单记录学习其详细页面显示的效果实现: 下载地址:https://github.com/dsxNiubility/SXNews 效果图: 其原理:通过网络请求获得相关的信息,再通过手机端进行拼HTML,然后在WebView进行展示,此处还对文章中的图片增加点击效果,可以保存到相册中:文章的样式已经存在项目中,直接去调用: 1:首先了解两个相关的实体对象,一个是新闻的主体内容,另外一个就是图片的相关信息实体: 1:主

iOS界面-仿网易新闻左侧抽屉式交互 续(添加新闻内容页和评论页手势)

本文转载至  http://blog.csdn.net/totogo2010/article/details/8637430 1.介绍 有的博友看了上篇博文iOS界面-仿网易新闻左侧抽屉式交互 ,在微博里问,网易新闻里的内容和评论的拖拽如何实现, 上面的UINavigation如何嵌进去.可能不少人有这样的需求,现在花了些时间把这两个效果做一下, 和大家分享交流.思路和上篇基本差不多,但是没有用到UINavigation,其实在我看来上面的返回. 评论按钮都是可以通过addsubview添加的.

Android 仿网易新闻v3.5:上下滑动的引导页

版权声明:本文为博主原创文章,未经博主允许不得转载. 最近看了下网易新闻月初发布的3.5版,发现两个比较明显的改动: 1.引导页的修改,变为上下滑动. 2.增加了聚合阅读,里面的动画效果也是蛮有创意的.于是又禁不住模仿一下 这次先看这个上下滑动的引导页效果图: 这种效果具体怎么做呢? 首先直接上github,直接看有没有相关的开源项目,果不其然,被我找到了: https://github.com/JakeWharton/Android-DirectionalViewPager JakeWhart

iOS界面-仿网易新闻左侧抽屉式交互

1.介绍 用过网易新闻客户端的同学都会发现,网易新闻向左滑动时,左侧的导航栏会跟着拖动出来,新闻内容列表会拉到最右侧.像一个抽屉拉出来一样.很酷.除了网易新闻,现在好多应用都采用了这样的交互. 对手势识别不熟悉的请参考上篇: iOS手势识别的详细使用(拖动,缩放,旋转,点击,手势依赖,自定义手势) 这个交互效果主要用到两个手势,一个是pan拖拽,一个是tap点击.拖拽可以把抽屉拉出来,再推回去.点击可以把抽屉推回去. 效果如下:     那么这个效果如何实现呢? 2.实现思路和步骤 思路:从实现

Android应用经典主界面框架之二:仿网易新闻client、CSDN client (Fragment ViewPager)

另外一种主界面风格则是以网易新闻.凤凰新闻以及新推出的新浪博客(阅读版)为代表.使用ViewPager+Fragment,即ViewPager里适配器里放的不是一般的View.而是Fragment.所以适配器不能继承PagerAdapter,而要继承FragmentPagerAdapter,这是在android.support.v4.app.FragmentPagerAdapter包里的.有点奇葩的是,FragmentPagerAdapter仅仅在这个包里有,在android.app.*这个包以

Android 开源框架ViewPageIndicator 和 ViewPager 仿网易新闻客户端Tab标签

之前用JakeWharton的开源框架ActionBarSherlock和ViewPager实现了对网易新闻客户端Tab标签的功能,ActionBarSherlock是在3.0以下的机器支持ActionBar的功能,有兴趣的可以看看开源框架ActionBarSherlock 和 ViewPager 仿网易新闻客户端,今天用到的是JakeWharton的另一开源控件ViewPageIndicator,ViewPager想必大家都知道,Indicator指示器的意思,所以ViewPageIndica

Android 开源框架ViewPageIndicator 和 ViewPager 仿网易新闻clientTab标签

之前用JakeWharton的开源框架ActionBarSherlock和ViewPager实现了对网易新闻clientTab标签的功能,ActionBarSherlock是在3.0下面的机器支持ActionBar的功能,有兴趣的能够看看开源框架ActionBarSherlock 和 ViewPager 仿网易新闻client,今天用到的是JakeWharton的还有一开源控件ViewPageIndicator.ViewPager想必大家都知道,Indicator指示器的意思,所以ViewPag

android 仿网易新闻客户端源码都有

原文:android 仿网易新闻客户端源码都有 android 仿网易新闻服务端源码 源代码下载地址: http://www.zuidaima.com/share/1550463560944640.htm http://www.zuidaima.com/share/1550463561206784.htm android 仿网易新闻 客户端和服务端 源码都有 ,有些功能还未实现,因为文件有点大,所以分为2次上传  java源代码截图:

Android应用经典主界面框架之二:仿网易新闻客户端、CSDN 客户端 (Fragment ViewPager)

第二种主界面风格则是以网易新闻.凤凰新闻以及新推出的新浪博客(阅读版)为代表,使用ViewPager+Fragment,即ViewPager里适配器里放的不是一般的View,而是Fragment.所以适配器不能继承PagerAdapter,而要继承FragmentPagerAdapter,这是在android.support.v4.app.FragmentPagerAdapter包里的.有点奇葩的是,FragmentPagerAdapter只在这个包里有,在android.app.*这个包下面么