第一步: Activity弹出窗口的布局
<?xml version="1.0" encoding="UTF-8"?> //布局文件main_top_right_dialog <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginTop="46dp" > <LinearLayout android:id="@+id/main_dialog_layout" android:layout_width="wrap_contenta" android:layout_height="wrap_content" android:layout_alignParentRight="true" // 右边 android:layout_alignParentTop="true" // top android:background="@drawable/title_function_bg" //黑背景图片9 android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginLeft="8dp" android:src="@drawable/mm_title_btn_compose_normal" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="8dp" android:text="发起聊天" android:textColor="#fff" android:textSize="18sp" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <ImageView android:id="@+id/imageView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginLeft="8dp" android:src="@drawable/mm_title_btn_receiver_normal" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="8dp" android:text="听筒模式" android:textColor="#fff" android:textSize="18sp" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <ImageView android:id="@+id/imageView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginLeft="8dp" android:src="@drawable/mm_title_btn_keyboard_normal" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="8dp" android:text="登录网页版" android:textColor="#fff" android:textSize="18sp" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <ImageView android:id="@+id/imageView4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginLeft="8dp" android:src="@drawable/mm_title_btn_qrcode_normal" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="8dp" android:text="扫一扫" android:textColor="#fff" android:textSize="18sp" /> </LinearLayout> </LinearLayout> </RelativeLayout> </RelativeLayout>
效果图
第二步 .进入到这个弹出的 activity
public class MainTopRightDialog extends Activity { //弹出的activity //private MyDialog dialog; private LinearLayout layout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_top_right_dialog); //dialog=new MyDialog(this); layout=(LinearLayout)findViewById(R.id.main_dialog_layout); layout.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Toast.makeText(getApplicationContext(), "提示:点击窗口外部关闭窗口!", Toast.LENGTH_SHORT).show(); } }); } @Override public boolean onTouchEvent(MotionEvent event){ //点击其他的地方关闭 finish(); return true; } }
这MainTopRightDialog 在 AndroidManifest.xml的配置
<activity android:name="MainTopRightDialog" android:theme="@style/MyDialogStyleTop" />
styles.xml 的配置
<style name="MyDialogStyleTop" parent="android:Theme.Dialog" > <item name="android:windowAnimationStyle">@style/AnimTop2</item> <!--动画调用其他的样式--> <item name="android:windowFrame">@null</item> <!--边框--> <item name="android:windowIsFloating">true</item><!--是否浮现在activity之上--> <item name="android:windowIsTranslucent">true</item><!--半透明--> <item name="android:windowNoTitle">true</item> <!--无标题--> <item name="android:windowBackground">@android:color/transparent</item><!--背景透明--> <item name="android:backgroundDimEnabled">false</item><!--模糊--> </style>
styles.xml 的配置(name = AnimTop2)
<style name="AnimTop2" parent="@android:style/Animation"> <item name="android:windowEnterAnimation">@anim/push_top_in2</item> <item name="android:windowExitAnimation">@anim/push_top_out2</item> </style>
res 的anim 文件夹下 push_top_in2.xml
<?xml version="1.0" encoding="utf-8"?> <!-- 上下滑入式 scale缩放--> <scale xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_decelerate_interpolator" android:fromXScale="1.0" <!-- 开始时X方向 缩放比例(1.0代表不缩放)--> android:toXScale="1.0" <!-- 结尾时X方向 缩放比例(1.0代表不缩放)--> android:fromYScale="0" <!-- 结尾时Y方向 缩放比例(0代表,最小开始缩放)--> android:toYScale="1.0" <!-- 结尾时y方向 缩放比例(1.0代表缩放原始比例)--> android:pivotX="0" <!-- 属性代表缩放的中轴点X坐标--> android:pivotY="10%" <!-- 代表缩放的中轴点Y坐标--> android:duration="200" /> <!-- 代表动画持续的时间,单位为毫秒-->
res 的anim 文件夹下push_top_out2.xml
<?xml version="1.0" encoding="utf-8"?> <scale xmlns:android="http://schemas.android.com/apk/res/android" //scale代表缩放 android:interpolator="@android:anim/accelerate_decelerate_interpolator" android:fromXScale="1.0" <!-- 开始时X方向 缩放比例(1.0代表不缩放)--> android:toXScale="1.0" <!-- 结尾时X方向 缩放比例(1.0代表不缩放)--> android:fromYScale="1.0" <!-- 结尾时y方向 缩放比例(1.0代表缩放原始比例)--> android:toYScale="0" <!-- 结尾时Y方向 缩放比例(0代表,最小开始缩放)--> android:pivotX="0" <!-- 属性代表缩放的中轴点X坐标--> android:pivotY="10%" <!-- 代表缩放的中轴点Y坐标--> android:duration="200" /> <!-- 代表动画持续的时间,单位为毫秒-->
时间: 2024-10-16 04:35:04