`

使用FrameLayout实现遮罩层

阅读更多
利用FrameLayout的特性,可以实现一个简单的遮罩层.





<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/layout"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
        <LinearLayout
		    android:orientation="vertical"
		    android:layout_width="fill_parent"
		    android:layout_height="fill_parent"
		    >
	        <Button
	           android:id="@+id/btn"
	           android:layout_width="wrap_content"
	           android:layout_height="wrap_content"
	           android:layout_alignParentRight="true"
	           android:text="show"
	           />
			<TextView  
			    android:layout_width="fill_parent" 
			    android:layout_height="wrap_content" 
			    android:text="@string/hello"
			    />
			<EditText android:layout_width="fill_parent" 
			    android:layout_height="wrap_content" 
			    android:text="Mask"
			    />
		</LinearLayout>
</FrameLayout>


package com.ql.app;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.TextView;

public class App extends Activity {

	private boolean isMask = true;

	private FrameLayout layout = null;
	private Button btn = null;
	private TextView textView = null;

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.main);

		initViews();
	}

	private void initViews() {

		layout = (FrameLayout) findViewById(R.id.layout);
		btn = (Button) findViewById(R.id.btn);
		btn.setOnClickListener(new MaskListener());

	}

	// 按钮监听,显示/隐藏遮罩
	private class MaskListener implements OnClickListener {
		public void onClick(View v) {
			if (isMask) {
				if(textView==null){
					textView = new TextView(App.this);
					textView.setTextColor(Color.BLUE);
					textView.setTextSize(20);
					textView.setText("I am a mask.");
					textView.setGravity(Gravity.CENTER);
					textView.setLayoutParams(new ViewGroup.LayoutParams(
							ViewGroup.LayoutParams.FILL_PARENT,
							ViewGroup.LayoutParams.FILL_PARENT));
					textView.setBackgroundColor(Color.parseColor("#33FFFFFF"));
				}
				btn.setText("show");
				isMask = false;
				layout.addView(textView);
			} else {
				btn.setText("hide");
				isMask = true;
				layout.removeView(textView);
			}
		}
	}
}
  • 大小: 20.2 KB
  • 大小: 34 KB
分享到:
评论
6 楼 wxw404 2012-03-12  
vistorLayout.setOnTouchListener(new OnTouchListener(){
				@Override
				public boolean onTouch(View v, MotionEvent event) {
					return true;
				}
			});

给framelayout处理下就可以实现 禁止点击了
5 楼 hanjiangit 2012-02-29  
遮住也能操作文本框 这是为什么啊
4 楼 phymal 2011-11-03  
LZ这个根本不是遮罩。因为下面那一层还是能操作。
3 楼 GaoMatrix 2011-10-07  
gundumw100 写道
somefuture 写道
你的hide和show的顺序好像反了。我想问的是,既然mask显示出来了,为什么按钮还可以按呢?不是让textView给盖住了吗?

这只是一个假象。


确实是可以点击 楼主能说一下为什么么?比较好奇 还有这个有什么用处么?
2 楼 gundumw100 2011-09-29  
somefuture 写道
你的hide和show的顺序好像反了。我想问的是,既然mask显示出来了,为什么按钮还可以按呢?不是让textView给盖住了吗?

这只是一个假象。
1 楼 somefuture 2011-09-29  
你的hide和show的顺序好像反了。我想问的是,既然mask显示出来了,为什么按钮还可以按呢?不是让textView给盖住了吗?

相关推荐

    Android应用源码之遮罩层效果.zip

    实现遮罩层效果,你需要在布局文件中创建一个新的View或者ViewGroup,如FrameLayout、LinearLayout或RelativeLayout,设置其背景为半透明或全透明的颜色。 2. **颜色透明度**: 使用`#AARRGGBB`格式的颜色值来设置...

    Android-用于头像选取的遮罩的画圆实现方式

    总的来说,实现Android头像选取的遮罩画圆主要涉及到自定义`View`的绘制、`Canvas`的使用以及图形混合模式的应用。通过理解这些基础知识,开发者可以构建出各种复杂的图形效果,满足不同应用的需求。

    04UsandoFrameLayout:使用FrameLayout

    - **重叠性**:子视图可以完全或部分重叠,这在需要创建遮罩效果或叠加层时非常有用。 - **位置控制**:尽管默认情况下所有子视图都位于左上角,但可以通过设置Gravity属性改变它们的位置。 3. **在XML中使用...

    ListPopupWindow + 透明遮罩显示隐藏

    3. **设置透明遮罩**:在Activity的根布局上添加一个全屏的`FrameLayout`或`LinearLayout`作为遮罩层。设置其背景颜色为半透明,例如`#88000000`(黑色,透明度40%)。默认隐藏此遮罩层。 ```xml &lt;FrameLayout ...

    Android app新手引导,任意View高亮提示,简单易用

    2. 添加遮罩层:在主布局上添加一个全屏的FrameLayout作为遮罩层,用于显示引导页。可以设置其背景为半透明,以便用户能看到部分底层界面。 3. 动画效果:为了增加用户体验,可以在切换引导页时添加平滑的动画,...

    GuideViewDemo布局遮罩

    通过控制FrameLayout的可见性,可以实现遮罩的显示和隐藏。 3. **使用DialogFragment**:DialogFragment可以自定义对话框样式,包括背景透明度,这样可以将对话框作为遮罩来使用。 4. **自定义ViewGroup**:创建一...

    一分钟实现Android遮罩引导视图

    本文主要介绍了在 Android 中如何快速实现遮罩引导视图,旨在帮助开发者快速上手实现该功能。下面将对该知识点进行详细的解释。 1. GuideView 介绍 GuideView 是基于 DialogFragment 实现的引导遮罩浮层视图的轻量...

    Android之淘宝商品列表长按遮罩效果的实现

    所以在列表条目布局的时候,可以使用FrameLayout布局,在长按列表条目时,用条目的根布局添加一个遮罩的布局,就达到我们想要的效果了。 2. 记录当前长按的根布局,如果点击或长按其他的列表条目

    Android例子源码ListPopupWindow透明遮罩显示隐藏.rar

    3. **动画效果**:为了提升用户体验,可以添加动画效果,如渐变显示或隐藏遮罩层,这可以通过`ObjectAnimator`或自定义动画实现。 在源码中,你可能会看到如下关键代码片段: ```java // 创建ListPopupWindow实例 ...

    Android-ForegroundViews-类似于FrameLayout的支持的前景自定义View

    总之,`ForegroundViews`是Android开发中一种增强`FrameLayout`功能的布局组件,它允许开发者在布局的前景层添加自定义视图,以实现更丰富的界面设计和交互效果。合理利用这一特性,可以为用户提供更加美观且易用的...

    android自定义弹出窗

    3. **添加遮罩层**:为了实现遮罩层效果,可以创建一个全屏的`View`,设置其背景颜色为半透明黑色,并将其添加到父布局中。通常在弹出窗显示时添加,关闭时移除。 4. **动画效果**:为了让弹出窗有更佳的用户体验,...

    ForegroundView,一组android前景视图,就像framelayout一样.zip

    `ForegroundView`是一个开源项目,它提供了一种类似于`FrameLayout`的视图管理方式,但专为实现前景视图功能而设计。`ForegroundView`允许开发者在布局的顶层放置元素,这些元素会覆盖其他子视图,从而可以用于创建...

    Android蒙层效果

    在Android中,我们可以通过设置自定义布局或者使用现成的库来实现蒙层效果。其基本原理是通过调整View的背景颜色透明度来达到不同程度的遮罩效果。 二、实现蒙层效果 1. 自定义布局:在XML布局文件中,你可以创建...

    Android透明指示层

    例如,可以创建一个`FrameLayout`或`RelativeLayout`作为容器,然后在这个容器中添加两个子视图:一个是背景视图,用于设置为半透明,模拟遮罩层效果;另一个是指示视图,用于显示具体的指导信息,如箭头、图标或...

    Android指引蒙版实现

    2. 使用图片资源:将蒙版作为PNG图片资源,通过ImageView或层叠多个ImageView来实现。这种方式简单直观,但不灵活,无法动态调整蒙版形状或透明度。 3. 层叠布局:通过在一个布局上方添加另一个半透明布局来实现...

    侧边栏效果

    4. **自定义ViewGroup**:为了实现更复杂的效果,比如半透明遮罩层、弹性拖动等,可能需要自定义一个ViewGroup,重写`onTouchEvent`方法来处理滑动逻辑,以及`onLayout`方法来布局子View。 5. **第三方库**:有很多...

    Android 新手引导蒙层效果实现代码示例

    本文将详细讲解如何通过代码实现一个带有蒙层效果的新手引导,具体步骤如下: 首先,我们需要理解蒙层效果的基本概念。蒙层就是在屏幕上的某一区域添加一个半透明的覆盖层,以此来突出显示特定的内容或控件。在这个...

    Android刮刮乐

    - 可以使用`Paint`对象的`setAlpha()`方法来控制透明度,或者通过设置遮罩层(mask layer)来实现。 - `刮刮乐实现图.png`可能包含未刮开和已刮开两种状态的示例,用于参考效果。 3. **动画效果** - `刮刮乐.gif...

    android Activity 设置背景透明

    因此,通常需要对底层内容或整个应用进行适当的处理,比如添加遮罩层或者调整其他Activity的显示状态。 在某些情况下,你可能还需要调整窗口属性以实现特定的透明效果。例如,通过在Activity的`onCreate()`方法中...

Global site tag (gtag.js) - Google Analytics