android 遮罩层效果

看到一本电子杂志上有遮罩层的效果,感觉很漂亮,以为很麻烦,搜索了很多关于android遮罩层的,也没有得出一点思路,原来就是一个透明的效果,然后上面弹出的控件是透明或者半透明之类的,可以选择颜色,还是#ARBG,其中A就是传说中的透明色的值(可以根据需要设置透明的效果),废话不多说了,发一个简单的Demo吧,是我山寨的那本杂志的效果:(由于杂志内容主要是图片,弹出层才是给出的文字信息,所以我猜测是用Gallery显示的杂志内容)

 

xml布局文件:

[c-sharp] view plain copy print ?
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:id="@+id/layout"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     >  
  7.     <Gallery  
  8.         android:id="@+id/showGallery"  
  9.         android:layout_width="fill_parent"  
  10.         android:layout_height="fill_parent"  
  11.         android:spacing="0dip"  
  12.         />  
  13.     <RelativeLayout  
  14.             android:orientation="horizontal"  
  15.             android:layout_width="fill_parent"  
  16.             android:layout_height="wrap_content"  
  17.             android:layout_gravity="bottom"  
  18.             android:background="#86222222"  
  19.             >  
  20.             <TextView  
  21.                 android:id="@+id/titleTextView"  
  22.                 android:layout_width="wrap_content"  
  23.                 android:layout_height="wrap_content"  
  24.                 android:layout_toRightOf="@id/secondKillButton"  
  25.                 android:textColor="#ff0000"  
  26.                 />  
  27.             <Button  
  28.                 android:id="@+id/unfoldButton"  
  29.                 android:layout_width="wrap_content"  
  30.                 android:layout_height="wrap_content"  
  31.                 android:layout_alignParentRight="true"  
  32.                 android:text="展开"  
  33.                 />  
  34.     </RelativeLayout>  
  35. </FrameL<textarea name="code" class="xhtml" cols="50" rows="15"><?xml version="1.0" encoding="utf-8"?>  
  36. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  37.     android:id="@+id/layout"  
  38.     android:layout_width="fill_parent"  
  39.     android:layout_height="fill_parent"  
  40.     >  
  41.     <Gallery  
  42.         android:id="@+id/showGallery"  
  43.         android:layout_width="fill_parent"  
  44.         android:layout_height="fill_parent"  
  45.         android:spacing="0dip"  
  46.         />  
  47.     <RelativeLayout  
  48.             android:orientation="horizontal"  
  49.             android:layout_width="fill_parent"  
  50.             android:layout_height="wrap_content"  
  51.             android:layout_gravity="bottom"  
  52.             android:background="#86222222"  
  53.             >  
  54.             <TextView  
  55.                 android:id="@+id/titleTextView"  
  56.                 android:layout_width="wrap_content"  
  57.                 android:layout_height="wrap_content"  
  58.                 android:layout_toRightOf="@id/secondKillButton"  
  59.                 android:textColor="#ff0000"  
  60.                 />  
  61.             <Button  
  62.                 android:id="@+id/unfoldButton"  
  63.                 android:layout_width="wrap_content"  
  64.                 android:layout_height="wrap_content"  
  65.                 android:layout_alignParentRight="true"  
  66.                 android:text="展开"  
  67.                 />  
  68.     </RelativeLayout>  
  69. </FrameLayout>   

 

主要的代码也很简单,还有一个简单的Adapter,有不理解的朋友可以看我之前的blog

 

  1. package oneRain.UpMagazine;  
  2. import java.io.File;  
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5. import android.app.Activity;  
  6. import android.graphics.Bitmap;  
  7. import android.graphics.BitmapFactory;  
  8. import android.graphics.Color;  
  9. import android.os.Bundle;  
  10. import android.view.Gravity;  
  11. import android.view.View;  
  12. import android.view.View.OnClickListener;  
  13. import android.view.ViewGroup;  
  14. import android.view.Window;  
  15. import android.widget.AdapterView;  
  16. import android.widget.AdapterView.OnItemSelectedListener;  
  17. import android.widget.BaseAdapter;  
  18. import android.widget.Button;  
  19. import android.widget.FrameLayout;  
  20. import android.widget.Gallery;  
  21. import android.widget.ImageView;  
  22. import android.widget.TextView;  
  23. public class ShowActivity extends Activity  
  24. {  
  25.     private int i = 1;  
  26.     private int pos = 0;  
  27.     private List<String> contents = null;  
  28.     private static final String DIR = "/mnt/sdcard/UpMagazine/2010/content/";  
  29.       
  30.     //设置是否展开  
  31.     private boolean isFolded = true;  
  32.       
  33.     //设置控件  
  34.     private FrameLayout layout = null;  
  35.     private Gallery showGallery = null;  
  36.     private Button unfoldButton = null;  
  37.     private TextView textView = null;  
  38.     private TextView titleTextView = null;  
  39.       
  40.     public void onCreate(Bundle savedInstanceState)  
  41.     {  
  42.         super.onCreate(savedInstanceState);  
  43.         requestWindowFeature(Window.FEATURE_NO_TITLE);  
  44.         setContentView(R.layout.show);  
  45.           
  46.         initView();  
  47.     }  
  48.       
  49.     @Override  
  50.     protected void onResume()   
  51.     {  
  52.         // TODO Auto-generated method stu  
  53.         super.onResume();  
  54.           
  55.         isFolded = true;  
  56.     }  
  57.     //初始化  
  58.     private void initView()  
  59.     {     
  60.           
  61.         contents = new ArrayList<String>();  
  62.           
  63.         File dir = new File(DIR);  
  64.         File[] files = dir.listFiles();  
  65.           
  66.         for(int i=0; i<files.length; i++)  
  67.         {  
  68.             contents.add(DIR + files[i].getName());  
  69.         }  
  70.           
  71.         layout = (FrameLayout)findViewById(R.id.layout);  
  72.           
  73.         unfoldButton = (Button)findViewById(R.id.unfoldButton);  
  74.         unfoldButton.setOnClickListener(new UnfoldClickListener());  
  75.           
  76.         showGallery = (Gallery)findViewById(R.id.showGallery);  
  77.         showGallery.setOnItemSelectedListener(new GalleryOnItemSelectedListener());  
  78.         showGallery.setAdapter(new ShowAdapter());  
  79.           
  80.         titleTextView = (TextView)findViewById(R.id.titleTextView);  
  81.     }  
  82.       
  83.     //滑动监听  
  84.     private class GalleryOnItemSelectedListener implements OnItemSelectedListener  
  85.     {  
  86.         public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,  
  87.                 long arg3)   
  88.         {  
  89.             // TODO Auto-generated method stub  
  90.             pos = arg2 + 1;  
  91.               
  92.             titleTextView.setText("第" + pos +"个主题");  
  93.         }  
  94.         public void onNothingSelected(AdapterView<?> arg0)  
  95.         {  
  96.             // TODO Auto-generated method stub  
  97.               
  98.         }  
  99.           
  100.     }  
  101.       
  102.     //按钮监听,展开一个透明的显示文本的遮挡层  
  103.     private class UnfoldClickListener implements OnClickListener  
  104.     {  
  105.         public void onClick(View v)   
  106.         {         
  107.             if(isFolded)  
  108.             {  
  109.                 textView = new TextView(ShowActivity.this);  
  110.                   
  111.                 textView.setTextColor(Color.BLUE);  
  112.                 textView.setTextSize(20);  
  113.                 textView.setText("滚滚长江东逝水,浪花淘尽英雄。/n" +  
  114.                         "是非成败转头空,/n" +  
  115.                         "青山依旧在,几度夕阳红。/n" +  
  116.                         "白发渔樵江渚上,惯看秋月春风。 /n" +  
  117.                         "一壶浊酒喜相逢,/n" +  
  118.                         "古今多少事,都付笑谈中。");  
  119.                 textView.setGravity(Gravity.CENTER);  
  120.                 textView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,   
  121.                         ViewGroup.LayoutParams.FILL_PARENT));  
  122.                 textView.setBackgroundColor(Color.parseColor("#86222222"));  
  123.                   
  124.                 unfoldButton.setText("收回");  
  125.                   
  126.                 isFolded = false;  
  127.                   
  128.                 layout.addView(textView);  
  129.             }  
  130.             else  
  131.             {  
  132.                 unfoldButton.setText("展开");  
  133.                   
  134.                 isFolded = true;  
  135.                   
  136.                 layout.removeView(textView);  
  137.             }  
  138.         }  
  139.     }  
  140.       
  141.     private class ShowAdapter extends BaseAdapter  
  142.     {  
  143.           
  144.         public int getCount()   
  145.         {  
  146.             // TODO Auto-generated method stub  
  147.             return contents.size();  
  148.         }  
  149.         public Object getItem(int position)   
  150.         {  
  151.             // TODO Auto-generated method stub  
  152.             return position;  
  153.         }  
  154.         public long getItemId(int position)   
  155.         {  
  156.             // TODO Auto-generated method stub  
  157.             return 0;  
  158.         }  
  159.         public View getView(int position, View convertView, ViewGroup parent)   
  160.         {  
  161.             // TODO Auto-generated method stub  
  162.             ImageView i = new ImageView(ShowActivity.this);  
  163.               
  164.             Bitmap bm = BitmapFactory.decodeFile(contents.get(position));  
  165. //          i.setLayoutParams(new Gallery.LayoutParams(Gallery.LayoutParams.FILL_PARENT,  
  166. //                  Gallery.LayoutParams.FILL_PARENT));  
  167.             i.setScaleType(ImageView.ScaleType.FIT_XY);  
  168.             i.setImageBitmap(bm);  
  169.               
  170.             return i;  
  171.         }  
  172.     }  
  173. }  

效果如下:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值