码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-04-30 22:35:38      阅读:333      评论:0      收藏:0      [点我收藏+]

标签:fragment   蒙版   教学提示   android   

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

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

mamicode.com,码迷

这是效果图。后面附上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


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

标签:fragment   蒙版   教学提示   android   

原文地址:http://blog.csdn.net/u012565107/article/details/24727251

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!