WindowManager 用法 添加View,然后移除View
WindowManager wm=(WindowManager)ChangeStatus.this.getSystemService(Context.WINDOW_SERVICE);
LayoutInflater inflater=LayoutInflater.from(ChangeStatus.this);
final View view=inflater.inflate(R.layout.infor_text, null);
WindowManager.LayoutParams mParams = new WindowManager.LayoutParams();
wm.addView(view,mParams); //添加
view.findViewById(R.id.btn_infor).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
wm.removeView(view); //移除
}
});
当RelativeLayout 的addStatesFromChildren属性设置为true时,点击RelativeLayout 上的任意控件,RelativeLayout 都呈现被点击的效果显示
例如:
<RelativeLayout android:gravity="center_vertical" android:id="@+id/phoinix_settings_notification"
android:layout_alignParentTop="true" android:layout_width="fill_parent" android:addStatesFromChildren="true"
android:layout_height="wrap_content" android:background="@xml/phoinix_settings_click_bottom_style">
<TextView android:id="@+id/phoinix_settings_notificationLabel"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="@string/phoinix_settings_notificationLabel" style="@style/Label" />
<ImageButton android:id="@+id/phoinix_settings_notificationImage"
android:layout_centerVertical="true"
android:layout_alignParentRight="true" android:layout_marginRight="2dp"
android:background="@xml/phoinix_profile_mainmenu_style" android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
Android XML 各种类型文件写法:
Arrays.xml 定义数组
<resources>
<string-array name="proxy_types">
<item>HTTP</item>
<item>SOCKS4</item>
<item>SOCKS5</item>
</string-array>
</resources>
Colors.xml
<resources>
<color name="blue_sky">#A0C8FF</color>
<color name="vert_manu">#CCFF00</color>
<color name="black">#000000</color>
<color name="white">#FFFFFF</color>
<color name="red">#FF0000</color>
<color name="link_color">#FF0066CC</color>
<color name="simiple_button_color">#FFF</color>
<color name="blue">#0000FF</color>
<color name="grey">#FFCBD2D8</color>
</resources>
在res / values目录内的任何xml档,使用<dimen>做为大小尺寸标签.
Dimens.xml 定义尺寸值
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="bottom_tab_font_size">12dp</dimen>
<dimen name="bottom_tab_padding_up">5dp</dimen>
<dimen name="bottom_tab_padding_drawable">8dp</dimen>
</resources>
Drawables.xml
<resources>
<item type="drawable" name="shader1">#7f7f7f7f</item>
<item type="drawable" name="highlight">#cf7f7f7f</item>
<item type="drawable" name="barbg">#ef0a4267</item>
<item type="drawable" name="trans">#00000000</item>
<item type="drawable" name="chatdivider">#ffd6dadc</item>
</resources>
Strings.xml
<resources>
<!-- Generic terms -->
<string name="app_name">Beem</string>
<string name="OkButton">Ok</string>
<string name="ClearButton">Clear</string>
<string name="CancelButton">Cancel</string>
<string name="AcceptButton">Authorize</string>
<string name="RefuseButton">Deny</string>
</resources>
Styles.xml
<resources>
<style name="Label">
<item name="android:textSize">18sp</item>
<item name="android:textStyle">bold</item>
<item name="android:typeface">sans</item>
<!-- <item name="android:capitalize">characters</item> -->
<item name="android:textColor">#000000</item> <!-- #FFFFFF -->
<item name="android:focusable">false</item>
<item name="android:padding">12dip</item>
</style>
</resources>
phoinix_popumenu_style.xml selector选择
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:state_pressed="true"
android:drawable="@drawable/phoinix_pushmail_btn_selected" />
<item android:state_focused="false" android:state_pressed="true"
android:drawable="@drawable/phoinix_pushmail_btn_selected" />
<item android:state_focused="true"
android:drawable="@drawable/phoinix_small_selected"/>
</selector>
Menu
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group>
<item android:id="@+id/chat_menu_contacts_list" android:visible="true"
android:title="@string/chat_menu_contacts_list" android:icon="@drawable/ic_menu_friendslist" />
<item android:id="@+id/chat_menu_change_chat" android:visible="true"
android:title="@string/chat_menu_change_chat" android:icon="@drawable/ic_menu_chat_dashboard" />
</group>
<item android:id="@+id/chat_menu_close_chat" android:visible="true"
android:title="@string/chat_menu_close_chat" android:icon="@drawable/ic_menu_end_conversation" />
</menu>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/contact_list_context_menu_chat_item"
android:title="@string/CDChat">
<menu>
</menu>
</item>
<item android:id="@+id/contact_list_context_menu_call_item"
android:title="@string/CDCall" android:visible="false" />
<item android:id="@+id/contact_list_context_menu_user_info"
android:title="@string/CDInfos">
<menu>
<item android:id="@+id/contact_list_context_menu_userinfo_alias"
android:title="@string/userinfo_label_alias" />
<item android:id="@+id/contact_list_context_menu_userinfo_group"
android:title="@string/userinfo_label_chg_group" />
<item android:id="@+id/contact_list_context_menu_userinfo_subscription"
android:title="@string/userinfo_label_re_subscription" />
<item android:id="@+id/contact_list_context_menu_userinfo_block"
android:title="@string/userinfo_label_block" android:visible="false" />
<item android:id="@+id/contact_list_context_menu_userinfo_delete"
android:title="@string/userinfo_label_delete" />
</menu>
</item>
</menu>
Drawable white_background.xml 白色圆角矩形做背景
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="#FFFFFF" />
<corners android:topLeftRadius="5px"
android:topRightRadius="5px" android:bottomLeftRadius="5px"
android:bottomRightRadius="5px"/>
<!-- <padding android:left="10dp" android:top="10dp" android:right="10dp"
android:bottom="10dp" />
<stroke
android:dashWidth="2dp"
android:dashGap="2dp"
android:width="2dp"
android:color="#FF00ff00"></stroke> -->
<!-- -->
</shape>
Anim 旋转动画
· <set xmlns:android="http://schemas.android.com/apk/res/android">
·
· <rotate
· android:interpolator="@android:anim/accelerate_decelerate_interpolator"
· android:fromDegrees="0"
· android:toDegrees="+360"
· android:duration="3000" />
·
· <!-- rotate 旋转动画效果
· 属性:interpolator 指定一个动画的插入器,用来控制动画的速度变化
· fromDegrees 属性为动画起始时物件的角度
· toDegrees 属性为动画结束时物件旋转的角度,+代表顺时针
· duration 属性为动画持续时间,以毫秒为单位
· -->
· </set>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<rotate android:fromDegrees="0" android:toDegrees="360"
android:pivotX="50%" android:pivotY="50%"
android:duration="5000"
android:repeatMode="restart"
android:repeatCount="infinite" />
</set>
XML中
alpha
渐变透明度动画效果
scale
渐变尺寸伸缩动画效果
translate
画面转换位置移动动画效果
rotate
画面转移旋转动画效果
<set xmlns:android="http://schemas.android.com/apk/res/android">
<!--
Tween Animation:通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效
Alpha:渐变透明度动画效果
Scale:渐变尺寸伸缩动画效果
Translate:画面转换位置移动动画效果
Rotate:画面旋转动画效果
Tween Animation 通用属性[类型] 功能
Duration[long] 属性为动画持续时间 时间以毫秒为单位
fillAfter [boolean] 当设置为true ,该动画转化在动画结束后被应用
fillBefore[boolean] 当设置为true ,该动画转化在动画开始前被应用
interpolator 指定一个动画的插入器 有一些常见的插入器
accelerate_decelerate_interpolator
加速-减速 动画插入器
accelerate_interpolator
加速-动画插入器
decelerate_interpolator
减速- 动画插入器
其他的属于特定的动画效果
repeatCount[int] 动画的重复次数
RepeatMode[int] 定义重复的行为 1:重新开始 2:plays backward
startOffset[long] 动画之间的时间间隔,从上次动画停多少时间开始执行下个动画
zAdjustment[int] 定义动画的Z Order的改变 0:保持Z Order不变
1:保持在最上层
-1:保持在最下层
-->
<!--
透明控制动画
-->
<alpha
android:fromAlpha="0.1"
android:toAlpha="1.0"
android:duration="3000"
/>
<!-- 尺寸伸缩动画效果 scale
属性:interpolator 指定一个动画的插入器
有三种动画插入器:
accelerate_decelerate_interpolator 加速-减速 动画插入器
accelerate_interpolator 加速-动画插入器
decelerate_interpolator 减速- 动画插入器
其他的属于特定的动画效果
fromXScale 属性为动画起始时 X坐标上的伸缩尺寸
toXScale 属性为动画结束时 X坐标上的伸缩尺寸
fromYScale 属性为动画起始时Y坐标上的伸缩尺寸
toYScale 属性为动画结束时Y坐标上的伸缩尺寸
说明:
以上四种属性值
0.0表示收缩到没有
1.0表示正常无伸缩
值小于1.0表示收缩
值大于1.0表示放大
pivotX 属性为动画相对于物件的X坐标的开始位置
pivotY 属性为动画相对于物件的Y坐标的开始位置
说明:
以上两个属性值 从0%-100%中取值
50%为物件的X或Y方向坐标上的中点位置
长整型值:
duration 属性为动画持续时间
说明: 时间以毫秒为单位
布尔型值:
fillAfter 属性 当设置为true ,该动画转化在动画结束后被应用
-->
<scale
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:repeatCount="1"
android:fromXScale="0.5"
android:fromYScale="0.5"
android:toXScale="1.4"
android:toYScale="1.4"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="false"
android:duration="3000"
/>
<!--
画面转换位置移动动画效果 translate
fromXDelta toXDelta 为动画、结束起始时 X坐标上的位置
fromYDelta toYDelta 为动画、结束起始时 Y坐标上的位置
-->
<translate
android:repeatCount="2"
android:fromXDelta="-30"
android:fromYDelta="-30"
android:toXDelta="-80"
android:toYDelta="200"
android:duration="3000"
/>
<!--
画面转移旋转动画效果 rotate
fromDegrees 为动画起始时物件的角度 说明
当角度为负数——表示逆时针旋转
当角度为正数——表示顺时针旋转
(负数from——to正数:顺时针旋转)
(负数from——to负数:逆时针旋转)
(正数from——to正数:顺时针旋转)
(正数from——to负数:逆时针旋转)
toDegrees 属性为动画结束时物件旋转的角度 可以大于360度
pivotX
pivotY 为动画相对于物件的X、Y坐标的开始位 说明:以上两个属性值 从0%-100%中取值
50%为物件的X或Y方向坐标上的中点位置
-->
<rotate
android:interpolator="@android:anim/accelerate_interpolator"
android:repeatCount="2"
android:fromDegrees="0"
android:toDegrees="+270"
android:pivotX="50%"
android:pivotY="50%"
android:duration="3000"
/>
</set>
加入动画
Animation mAnimation ;
mAnimation = AnimationUtils.loadAnimation(this, R.anim.anim);
TextView text = (TextView)findViewById(R.id.textview00);
text.setAnimation(mAnimation);
WindowManager wm=(WindowManager)ChangeStatus.this.getSystemService(Context.WINDOW_SERVICE);
LayoutInflater inflater=LayoutInflater.from(ChangeStatus.this);
final View view=inflater.inflate(R.layout.infor_text, null);
WindowManager.LayoutParams mParams = new WindowManager.LayoutParams();
wm.addView(view,mParams); //添加
view.findViewById(R.id.btn_infor).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
wm.removeView(view); //移除
}
});
当RelativeLayout 的addStatesFromChildren属性设置为true时,点击RelativeLayout 上的任意控件,RelativeLayout 都呈现被点击的效果显示
例如:
<RelativeLayout android:gravity="center_vertical" android:id="@+id/phoinix_settings_notification"
android:layout_alignParentTop="true" android:layout_width="fill_parent" android:addStatesFromChildren="true"
android:layout_height="wrap_content" android:background="@xml/phoinix_settings_click_bottom_style">
<TextView android:id="@+id/phoinix_settings_notificationLabel"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="@string/phoinix_settings_notificationLabel" style="@style/Label" />
<ImageButton android:id="@+id/phoinix_settings_notificationImage"
android:layout_centerVertical="true"
android:layout_alignParentRight="true" android:layout_marginRight="2dp"
android:background="@xml/phoinix_profile_mainmenu_style" android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
Android XML 各种类型文件写法:
Arrays.xml 定义数组
<resources>
<string-array name="proxy_types">
<item>HTTP</item>
<item>SOCKS4</item>
<item>SOCKS5</item>
</string-array>
</resources>
Colors.xml
<resources>
<color name="blue_sky">#A0C8FF</color>
<color name="vert_manu">#CCFF00</color>
<color name="black">#000000</color>
<color name="white">#FFFFFF</color>
<color name="red">#FF0000</color>
<color name="link_color">#FF0066CC</color>
<color name="simiple_button_color">#FFF</color>
<color name="blue">#0000FF</color>
<color name="grey">#FFCBD2D8</color>
</resources>
在res / values目录内的任何xml档,使用<dimen>做为大小尺寸标签.
Dimens.xml 定义尺寸值
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="bottom_tab_font_size">12dp</dimen>
<dimen name="bottom_tab_padding_up">5dp</dimen>
<dimen name="bottom_tab_padding_drawable">8dp</dimen>
</resources>
Drawables.xml
<resources>
<item type="drawable" name="shader1">#7f7f7f7f</item>
<item type="drawable" name="highlight">#cf7f7f7f</item>
<item type="drawable" name="barbg">#ef0a4267</item>
<item type="drawable" name="trans">#00000000</item>
<item type="drawable" name="chatdivider">#ffd6dadc</item>
</resources>
Strings.xml
<resources>
<!-- Generic terms -->
<string name="app_name">Beem</string>
<string name="OkButton">Ok</string>
<string name="ClearButton">Clear</string>
<string name="CancelButton">Cancel</string>
<string name="AcceptButton">Authorize</string>
<string name="RefuseButton">Deny</string>
</resources>
Styles.xml
<resources>
<style name="Label">
<item name="android:textSize">18sp</item>
<item name="android:textStyle">bold</item>
<item name="android:typeface">sans</item>
<!-- <item name="android:capitalize">characters</item> -->
<item name="android:textColor">#000000</item> <!-- #FFFFFF -->
<item name="android:focusable">false</item>
<item name="android:padding">12dip</item>
</style>
</resources>
phoinix_popumenu_style.xml selector选择
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:state_pressed="true"
android:drawable="@drawable/phoinix_pushmail_btn_selected" />
<item android:state_focused="false" android:state_pressed="true"
android:drawable="@drawable/phoinix_pushmail_btn_selected" />
<item android:state_focused="true"
android:drawable="@drawable/phoinix_small_selected"/>
</selector>
Menu
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group>
<item android:id="@+id/chat_menu_contacts_list" android:visible="true"
android:title="@string/chat_menu_contacts_list" android:icon="@drawable/ic_menu_friendslist" />
<item android:id="@+id/chat_menu_change_chat" android:visible="true"
android:title="@string/chat_menu_change_chat" android:icon="@drawable/ic_menu_chat_dashboard" />
</group>
<item android:id="@+id/chat_menu_close_chat" android:visible="true"
android:title="@string/chat_menu_close_chat" android:icon="@drawable/ic_menu_end_conversation" />
</menu>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/contact_list_context_menu_chat_item"
android:title="@string/CDChat">
<menu>
</menu>
</item>
<item android:id="@+id/contact_list_context_menu_call_item"
android:title="@string/CDCall" android:visible="false" />
<item android:id="@+id/contact_list_context_menu_user_info"
android:title="@string/CDInfos">
<menu>
<item android:id="@+id/contact_list_context_menu_userinfo_alias"
android:title="@string/userinfo_label_alias" />
<item android:id="@+id/contact_list_context_menu_userinfo_group"
android:title="@string/userinfo_label_chg_group" />
<item android:id="@+id/contact_list_context_menu_userinfo_subscription"
android:title="@string/userinfo_label_re_subscription" />
<item android:id="@+id/contact_list_context_menu_userinfo_block"
android:title="@string/userinfo_label_block" android:visible="false" />
<item android:id="@+id/contact_list_context_menu_userinfo_delete"
android:title="@string/userinfo_label_delete" />
</menu>
</item>
</menu>
Drawable white_background.xml 白色圆角矩形做背景
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="#FFFFFF" />
<corners android:topLeftRadius="5px"
android:topRightRadius="5px" android:bottomLeftRadius="5px"
android:bottomRightRadius="5px"/>
<!-- <padding android:left="10dp" android:top="10dp" android:right="10dp"
android:bottom="10dp" />
<stroke
android:dashWidth="2dp"
android:dashGap="2dp"
android:width="2dp"
android:color="#FF00ff00"></stroke> -->
<!-- -->
</shape>
Anim 旋转动画
· <set xmlns:android="http://schemas.android.com/apk/res/android">
·
· <rotate
· android:interpolator="@android:anim/accelerate_decelerate_interpolator"
· android:fromDegrees="0"
· android:toDegrees="+360"
· android:duration="3000" />
·
· <!-- rotate 旋转动画效果
· 属性:interpolator 指定一个动画的插入器,用来控制动画的速度变化
· fromDegrees 属性为动画起始时物件的角度
· toDegrees 属性为动画结束时物件旋转的角度,+代表顺时针
· duration 属性为动画持续时间,以毫秒为单位
· -->
· </set>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<rotate android:fromDegrees="0" android:toDegrees="360"
android:pivotX="50%" android:pivotY="50%"
android:duration="5000"
android:repeatMode="restart"
android:repeatCount="infinite" />
</set>
XML中
alpha
渐变透明度动画效果
scale
渐变尺寸伸缩动画效果
translate
画面转换位置移动动画效果
rotate
画面转移旋转动画效果
<set xmlns:android="http://schemas.android.com/apk/res/android">
<!--
Tween Animation:通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效
Alpha:渐变透明度动画效果
Scale:渐变尺寸伸缩动画效果
Translate:画面转换位置移动动画效果
Rotate:画面旋转动画效果
Tween Animation 通用属性[类型] 功能
Duration[long] 属性为动画持续时间 时间以毫秒为单位
fillAfter [boolean] 当设置为true ,该动画转化在动画结束后被应用
fillBefore[boolean] 当设置为true ,该动画转化在动画开始前被应用
interpolator 指定一个动画的插入器 有一些常见的插入器
accelerate_decelerate_interpolator
加速-减速 动画插入器
accelerate_interpolator
加速-动画插入器
decelerate_interpolator
减速- 动画插入器
其他的属于特定的动画效果
repeatCount[int] 动画的重复次数
RepeatMode[int] 定义重复的行为 1:重新开始 2:plays backward
startOffset[long] 动画之间的时间间隔,从上次动画停多少时间开始执行下个动画
zAdjustment[int] 定义动画的Z Order的改变 0:保持Z Order不变
1:保持在最上层
-1:保持在最下层
-->
<!--
透明控制动画
-->
<alpha
android:fromAlpha="0.1"
android:toAlpha="1.0"
android:duration="3000"
/>
<!-- 尺寸伸缩动画效果 scale
属性:interpolator 指定一个动画的插入器
有三种动画插入器:
accelerate_decelerate_interpolator 加速-减速 动画插入器
accelerate_interpolator 加速-动画插入器
decelerate_interpolator 减速- 动画插入器
其他的属于特定的动画效果
fromXScale 属性为动画起始时 X坐标上的伸缩尺寸
toXScale 属性为动画结束时 X坐标上的伸缩尺寸
fromYScale 属性为动画起始时Y坐标上的伸缩尺寸
toYScale 属性为动画结束时Y坐标上的伸缩尺寸
说明:
以上四种属性值
0.0表示收缩到没有
1.0表示正常无伸缩
值小于1.0表示收缩
值大于1.0表示放大
pivotX 属性为动画相对于物件的X坐标的开始位置
pivotY 属性为动画相对于物件的Y坐标的开始位置
说明:
以上两个属性值 从0%-100%中取值
50%为物件的X或Y方向坐标上的中点位置
长整型值:
duration 属性为动画持续时间
说明: 时间以毫秒为单位
布尔型值:
fillAfter 属性 当设置为true ,该动画转化在动画结束后被应用
-->
<scale
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:repeatCount="1"
android:fromXScale="0.5"
android:fromYScale="0.5"
android:toXScale="1.4"
android:toYScale="1.4"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="false"
android:duration="3000"
/>
<!--
画面转换位置移动动画效果 translate
fromXDelta toXDelta 为动画、结束起始时 X坐标上的位置
fromYDelta toYDelta 为动画、结束起始时 Y坐标上的位置
-->
<translate
android:repeatCount="2"
android:fromXDelta="-30"
android:fromYDelta="-30"
android:toXDelta="-80"
android:toYDelta="200"
android:duration="3000"
/>
<!--
画面转移旋转动画效果 rotate
fromDegrees 为动画起始时物件的角度 说明
当角度为负数——表示逆时针旋转
当角度为正数——表示顺时针旋转
(负数from——to正数:顺时针旋转)
(负数from——to负数:逆时针旋转)
(正数from——to正数:顺时针旋转)
(正数from——to负数:逆时针旋转)
toDegrees 属性为动画结束时物件旋转的角度 可以大于360度
pivotX
pivotY 为动画相对于物件的X、Y坐标的开始位 说明:以上两个属性值 从0%-100%中取值
50%为物件的X或Y方向坐标上的中点位置
-->
<rotate
android:interpolator="@android:anim/accelerate_interpolator"
android:repeatCount="2"
android:fromDegrees="0"
android:toDegrees="+270"
android:pivotX="50%"
android:pivotY="50%"
android:duration="3000"
/>
</set>
加入动画
Animation mAnimation ;
mAnimation = AnimationUtils.loadAnimation(this, R.anim.anim);
TextView text = (TextView)findViewById(R.id.textview00);
text.setAnimation(mAnimation);