用Fragment做蒙版来进行一个初始教学提示的效果

在android 软件第一次使用的时候,一般会在当前的界面上做一个灰色的蒙版,上面有显示的一些提醒性质的教学文字或者图案。

我想的是当前界面上蒙上一个 Fragment 把提示信息也放在Fragment上。

这是效果图。后面附上demo源码。

具体就是在activity成功启动之后。画出activity的view之后。这个不能在生命周期进行判断。我尝试的是用Handler去不断postDelay查看view是否被画出。即view的width > 0.

然后用代码动态的把这个蒙版Fragment加入到当前的Activity之中。

@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		rootView = findViewById(R.id.root);
		final Handler mHandler = new Handler();

		//不断延时 看view是否被加载出来。
		mHandler.postDelayed(new Runnable()
		{
			@Override
			public void run()
			{
				if(rootView.getWidth() > 0){
					//把蒙版加载到当前的页面上
					detailsAssertFragment = new MyJobDetailsAssertFragment();
					getFragmentManager().beginTransaction()
						.add(R.id.root, detailsAssertFragment)
						.commit();
				}else {
					mHandler.postDelayed(this, 100);
				}
			}
		},300);
	}

注意的是R.id.root不是 detailAssertFragment的Id。这个函数的意思是把蒙版detailAssertFragment 加入到id是R.id.root的ViewGroup中。

我发现如果id为R.id.root的view 如果不是FrameLayout就无法添加蒙版成功。

看看蒙版Fragment的代码

	public class MyJobDetailsAssertFragment extends Fragment{

		public void MyJobDetailsAssertFragment(){

		}

		@Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState)
        {
			View view = inflater.inflate(R.layout.my_jobs_details_assert, null);
			//根据需求设定蒙版遮盖的位置。(这没有遮盖Actionbar,根据要求自行调整)
			LayoutParams params= new LayoutParams(rootView.getWidth(),rootView.getHeight());
			view.setLayoutParams(params);
			view.setOnClickListener(new OnClickListener()
			{

				@Override
				public void onClick(View v)
				{
					//蒙版点击一下之后消失的处理
					 getFragmentManager().beginTransaction()
				    	.remove(detailsAssertFragment)
				    	.commit();

				    showAssert = false;
				}
			});
			showAssert = true;
			return view;
        }
	}

实现的蒙版就已经是半透明的。不用再去设置他的透明度。蒙版的样式就在DetailAssertFragment加载的XML自己设置摆放图案。

Demo源码:http://download.csdn.net/detail/u012565107/7271675

时间: 2024-10-10 02:04:50

用Fragment做蒙版来进行一个初始教学提示的效果的相关文章

Android学习路线(二十一)运用Fragment构建动态UI——创建一个Fragment

你可以把fragment看成是activity的模块化部分,它拥有自己的生命周期,接受它自己的输入事件,你可以在activity运行时添加或者删除它(有点像是一个"子activity",你可以在不同的activity中重用它).本课将向你展示如何使用Support Libaray继承 Fragment 类来让你的应用能够兼容正在运行Android 1.6的设备. 提示: 如果你决定你的应用需求的最低API级别是11或者更高,那么你不需要使用Support Library,你可以直接使用

VS2013 C# 调用 cognex 的QuickBuild做程序时发生一个错误

今天在用 VS2013 C# 调用 cognex 的QuickBuild做程序时发生一个错误,如下所示 混合模式程序集是针对"v2.0.50727"版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集 网上搜索得到解决办法: 在app.config中添加一个配置节:startup <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime

Android学习路线(二十二)运用Fragment构建动态UI——构建一个灵活的UI

先占个位置,下次翻译 :p When designing your application to support a wide range of screen sizes, you can reuse your fragments in different layout configurations to optimize the user experience based on the available screen space. For example, on a handset devi

Nodejs做web服务器的一个简单逻辑和实现

本文写了自己对"Nodejs做web服务器的一个简单逻辑和实现",如果不太合理,或者了解这部分的大神,欢迎拍死.哈哈,新手. 昨天开始学习Nodejs,w3cschool看了一遍.感觉其上的内容,一上来就开始介绍Nodejs的模块.看来后来,连如何"从零创建一个nodejs版的web服务器"都没能明白.可能是自己太过肤浅,或者,陷到了WAMP的思维里,不能自拔吧.后来在nodejs中文社区发了个帖子.感觉自己算是明白了点儿.写出来,希望和大家一起学习,同时也希望得到

用IOS做一个界面切换的效果(登录界面和注册界面和找回密码界面的切换)(用封装好的lable和textf创建界面)

创建一个类封装uitextfield和UIlabel (源代码.m文件) #import "TLView.h" @interface TLView () { UILabel *_desLabel;    //左边的lable UITextField *_textField;//右边的 } @end @implementation TLView //改写父类的初始化方法,处理相同的性能 - (id)initWithFrame:(CGRect)frame { self = [super i

js网站轮播图怎么做如何做?鸡哥教你简单制作效果炫酷

日了狗啦,刚刚鸡哥辛苦码了那么多字全丢了又要重新写,这是第二遍写了...今天鸡哥给小白写个不需要写js原生代码,只需要几个插件和一段通俗易懂得jquery代码就能搞定的轮播图,当然js原生代码写着也不算很繁琐,但是有些浪费时间,更何况很多人并不会用js直接写包括鸡哥,当年在学校还是研究过一段时间js的,当时还独自写了一个轮播图俘获了多少同班妹子的芳心,不过现在是基本废了,这东西要常写,不然忘的很快. 唉,本来还有妹子等着鸡哥呢,我这一大意文章丢了,重新写的话估计来不及了,先打个电话让妹子回家吧~

如何制作一个有网络营销效果的企业网站呢

如何制作一个有网络营销效果的企业网站呢? 这是一个普遍企业建站所要达到的最终目的,以前企业网站建设所仅仅要传递和表达的是企业形象,于是片面注重网页的美观而忽视了网站它本来的价值,比如首页设置为一个大大的FLASH动画,镶入多多优美的图片等等.当然,这并不是说首页用动画或图片来展示有什么错或者它就没了营销效果,只不过可以肯定的一点就是它没有比同样一个无动画少图片的网页所带来的效果那么大,注意,我指的仅仅是我们这些普通企业网站,大企业例外啊,呵呵,为何?慢慢想想…… 经过我们多年的研究,一个结构合理

分享一个购物车的demo(效果高仿饿了么软件的购物效果)

这次分享的是一个很常见的效果,凡是涉及到购物的app或者旅游类以及订餐类的app都有看到过这种效果,两个list view联动显示,添加购物车时的一个抛物线动画实现,以及图标或者item右上角的数字显示.下面是我空闲时候写的一个demo,界面比较陋,但是基本效果都实现了. 不多说,看效果图: 只对添加按钮做了监听,删除没去写(没什么必要). 讲一些主要的代码,想下载源码的可以去这里下载(https://github.com/bobge/LinkedListView.git): 左边的listvi

(转)Cocos2d-js中使用Shader方法--以一个简单的波纹效果为例:

以一个简单的波纹效果为例: 一.引入shader脚本文件. 1.vertex shader attribute vec4 a_position; attribute vec2 a_texCoord; attribute vec4 a_color; varying vec4 v_fragmentColor; varying vec2 v_texCoord; void main() { gl_Position = CC_PMatrix * a_position; v_fragmentColor =