自定义dialog窗口,根据坐标可随意设置dialog显示位置,实现了窗口弹出动画
Java代码:
- package com.sunxu.org.IndividualityDialog;
- import android.app.Activity;
- import android.app.Dialog;
- import android.content.Context;
- import android.os.Bundle;
- import android.view.Gravity;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.view.Window;
- import android.view.WindowManager;
- import android.widget.Button;
- public class IndividualityDialogActivity extends Activity {
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
-
- Button btn = (Button)findViewById(R.id.button1);
-
- btn.setOnClickListener(new OnClickListener()
- {
- public void onClick(View v)
- {
- //多个Activity嵌套时用this.parent否则异常
- new myDialog(IndividualityDialogActivity.this)
- .showDialog(R.layout.dialog, 80, 50);
- }
- });
- }
-
- //自定义Dialog
- class myDialog extends Dialog{
-
- private Window window = null;
-
- public myDialog(Context context)
- {
- super(context);
- }
-
- public void showDialog(int layoutResID, int x, int y){
- setContentView(layoutResID);
-
- windowDeploy(x, y);
-
- //设置触摸对话框意外的地方取消对话框
- setCanceledOnTouchOutside(true);
- show();
- }
-
- //设置窗口显示
- public void windowDeploy(int x, int y){
- window = getWindow(); //得到对话框
- window.setWindowAnimations(R.style.dialogWindowAnim); //设置窗口弹出动画
- window.setBackgroundDrawableResource(R.color.vifrification); //设置对话框背景为透明
- WindowManager.LayoutParams wl = window.getAttributes();
- //根据x,y坐标设置窗口需要显示的位置
- wl.x = x; //x小于0左移,大于0右移
- wl.y = y; //y小于0上移,大于0下移
- // wl.alpha = 0.6f; //设置透明度
- // wl.gravity = Gravity.BOTTOM; //设置重力
- window.setAttributes(wl);
- }
- }
- }
-
复制代码设置窗口弹出,退出动画在res/values下创建style
<?xml version="1.0" encoding="utf-8"?> <!-- 设置dialog弹出,退出动画 -->
- <resources>
- <style name="dialogWindowAnim" parent="android:Animation" mce_bogus="1">
- <item name="android:windowEnterAnimation">@anim/dialog_enter_anim</item>
- <item name="android:windowExitAnimation">@anim/dialog_exit_anim</item>
- </style>
-
- </resources>
-
复制代码在res/anim下创建,设置dialog窗口弹出动画
<?xml version="1.0" encoding="utf-8"?>
<!-- 弹出时动画 -->
- <set xmlns:android="http://schemas.android.com/apk/res/android">
- <scale
- android:interpolator="@android:anim/accelerate_interpolator"
- android:fromXScale="1.0"
- android:toXScale="1.0"
- android:fromYScale="0.0"
- android:toYScale="1.0"
- android:pivotX="0%"
- android:pivotY="100%"
- android:fillAfter="false"
- android:duration="400"/>
- </set>
-
复制代码在res/anim下创建,设置dialog窗口退出动画
<?xml version="1.0" encoding="utf-8"?> <!-- 退出时动画效果 -->
- <set xmlns:android="http://schemas.android.com/apk/res/android">
- <scale
- android:interpolator="@android:anim/accelerate_interpolator"
- android:fromXScale="1.0"
- android:toXScale="1.0"
- android:fromYScale="1.0"
- android:toYScale="0.0"
- android:pivotX="0%"
- android:pivotY="100%"
- android:fillAfter="false"
- android:duration="400"/>
- </set>
-
复制代码在res/values下创建color
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <color name="vifrification">#00000000</color> <!-- 透明 -->
- </resources>
-
复制代码设置dialog窗口layout
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:gravity="center"
- android:background="@drawable/dialog_background" >
- <TextView
- android:id="@+id/textView1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textSize="50sp"
- android:text="Hello" />
- </LinearLayout>
-
复制代码main布局
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical" >
- <Button
- android:id="@+id/button1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="点击弹出myDialog" />
- </LinearLayout>
- <!--
- android:fromXscale="1.0" 表示开始时X轴缩放比例为 1.0 (原图大小 * 1.0 为原图大小)
- android:toXscale="0.0"表示结束时X轴缩放比例为0.0(原图大小 *0.0 为缩小到看不见)
- android:fromYscale="1.0" 表示开始时Y轴缩放比例为 1.0 (原图大小 * 1.0 为原图大小)
- android:toYscale="0.0"表示结束时Y轴缩放比例为0.0(原图大小 *0.0 为缩小的看不到了)
- android:pivotX="50%" X轴缩放的位置为中心点
- android:pivotY="50%" Y轴缩放的位置为中心点
- android:duration="2000" 动画播放时间 这里是2000毫秒也就是2秒
- -->
复制代码
|