1. 程式人生 > >Android中自定義Activity和Dialog的位置大小背景和透明度等

Android中自定義Activity和Dialog的位置大小背景和透明度等

1.自定義Activity顯示樣式

先在res/values下建colors.xml檔案,寫入:

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3.     <!-- 設定透明度為56%(9/16)左右 -->
  4.     <colorname="transparent">#9000</color>
  5. </resources>
 

這個值設定了整個介面的透明度,為了看得見效果,現在設為透明度為56%(9/16)左右。

再在res/values/下建styles.xml,設定程式的風格

  1. <?
    xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3.     <mce:stylename="Transparent"><!-- 
  4.  設定背景 -->
  5.         <itemname="android:windowBackground">@color/transparent</item>
  6.         <!-- 設定底層可見 -->
  7.         <itemname="android:windowIsTranslucent">true</item>
  8.         <!-- 設定跳轉效果 -->
  9.         <itemname="android:windowAnimationStyle">@+android:style/Animation.Translucent</item>
  10. --></mce:style><stylename="Transparent"mce_bogus="1"> 設定背景 -->
  11.         <itemname="android:windowBackground">@color/transparent</item>
  12.         <!-- 設定底層可見 -->
  13.         <
    itemname="android:windowIsTranslucent">true</item>
  14.         <!-- 設定跳轉效果 -->
  15.         <itemname="android:windowAnimationStyle">@+android:style/Animation.Translucent</item>
  16.     </style>
  17. </resources>
 

注:mce部分為發帖是自動生成的,實際不需要。

最後一步,把這個styles.xml用在相應的Activity上。即在AndroidManifest.xml中的任意<activity>標籤中新增 
android:theme = "@style/transparent" 
如果想設定所有的activity都使用這個風格,可以把這句標籤語句新增在<application>中。 
最後執行程式,哈哈,是不是發現整個介面都被蒙上一層半透明瞭。最後可以把背景色#9000換成#0000,執行程式後,就全透明瞭,看得見背景下的所有東西可以卻都操作無效。呵呵.... 

2.將Activity以Dialog的形式顯示並自定義樣式

先在res/drawable下建bgconfig.xml檔案,寫入:

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <shapexmlns:android="http://schemas.android.com/apk/res/android">
  3.     <solidandroid:color="#ffffff"/>
  4.     <strokeandroid:width="3dp"color="#000000"/>
  5.     <cornersandroid:radius="3dp"/>
  6.     <paddingandroid:left="3dp"android:top="3dp"android:right="3dp"
  7.         android:bottom="3dp"/>
  8. </shape>
 

再在res/values/下建styles.xml,設定程式的風格

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3.         <!-- 設定樣式 -->
  4.     <mce:stylename="Theme.MyActivity"parent="android:style/Theme.Dialog"mce_bogus="1"mce_bogus="1"><!-- 
  5.         <item name="android:windowBackground">@drawable/bgconfig</item> 
  6. --></mce:style><stylename="Theme.MyActivity"parent="android:style/Theme.Dialog"mce_bogus="1"mce_bogus="1"mce_bogus="1"><itemname="android:windowBackground">@drawable/bgconfig</item>
  7.     </style>
  8. </resources>

注:mce部分為發帖是自動生成的,實際不需要。

最後一步,把這個styles.xml用在相應的Activity上。即在AndroidManifest.xml中的任意<activity>標籤中新增 
android:theme = "@style/transparent" 
如果想設定所有的activity都使用這個風格,可以把這句標籤語句新增在<application>中。

3.設定視窗大小和位置

  1. WindowManager m = getWindowManager();    
  2.        Display d = m.getDefaultDisplay();  //為獲取螢幕寬、高  
  3.        LayoutParams p = getWindow().getAttributes();  //獲取對話方塊當前的引數值  
  4.        p.height = (int) (d.getHeight() * 1.0);   //高度設定為螢幕的1.0 
  5.        p.width = (int) (d.getWidth() * 0.7);    //寬度設定為螢幕的0.8 
  6.        p.alpha = 1.0f;      //設定本身透明度
  7.        p.dimAmount = 0.0f;      //設定黑暗度
  8.        getWindow().setAttributes(p);     //設定生效
  9.        getWindow().setGravity(Gravity.RIGHT);       //設定靠右對齊