仿Iphone从屏幕底部弹出半透明的PopupWindow

简介: main.xml如下: styles.xml如下: @anim/in @anim/out popupwindow.

main.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <Button 
        android:id="@+id/button"
        android:text="popupWindow"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
    />
</RelativeLayout>


styles.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="popupAnimation" parent="android:Animation">
		<item name="android:windowEnterAnimation">@anim/in</item>
		<item name="android:windowExitAnimation">@anim/out</item>
	</style>
</resources>


popupwindow.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#b5555555" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="12dip"
        android:paddingLeft="10dip"
        android:paddingRight="10dip"
        android:orientation="vertical" >
        <Button
            android:id="@+id/confirmButton"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="确定"/>

        <Button
            android:id="@+id/cancleButton"
            android:layout_marginTop="12dip"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="取消" />
    </LinearLayout>

</RelativeLayout>


in.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromYDelta="5000"
        android:toYDelta="0"
        android:duration="1500"
    />
</set>


out.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromYDelta="0"
        android:toYDelta="5000"
        android:duration="1500"
    />
</set>

 

PopupWindowTestActivity.java如下:

import android.app.Activity;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.PopupWindow;
/**
 * Demo描述:
 * 仿Iphone从屏幕底部弹出半透明的PopupWindow
 */
public class PopupWindowTestActivity extends Activity {
	private Button button;
    private Button confirmButton;
    private Button cancleButton;
    private PopupWindow popupWindow;
    private View popupWindowView;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        init();
    }
    private void init(){
    	  button=(Button) findViewById(R.id.button);
    	  button.setOnClickListener(new ButtonOnClickListener());
    }

	private class ButtonOnClickListener implements OnClickListener {
		@Override
		public void onClick(View v) {
			switch (v.getId()) {
			case R.id.button:
				LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
				popupWindowView = inflater.inflate(R.layout.popupwindow, null);
				popupWindow = new PopupWindow(popupWindowView,LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT,true);
				popupWindow.setBackgroundDrawable(new BitmapDrawable());
				//设置PopupWindow的弹出和消失效果
				popupWindow.setAnimationStyle(R.style.popupAnimation);
				confirmButton = (Button) popupWindowView.findViewById(R.id.confirmButton);
				confirmButton.setOnClickListener(new ButtonOnClickListener());
				cancleButton = (Button) popupWindowView.findViewById(R.id.cancleButton);
				cancleButton.setOnClickListener(new ButtonOnClickListener());
				popupWindow.showAtLocation(confirmButton, Gravity.CENTER, 0, 0);
				break;
			case R.id.confirmButton:
				System.out.println("点击了确定按钮");
				break;
			case R.id.cancleButton:
				popupWindow.dismiss();
				break;
			default:
				break;
			}

		}}
}



 

相关文章
|
Web App开发 iOS开发
为 iPhone 和 iPad 自定义网站的主屏幕图标
iPhone 和 iPad 等苹果设备使用主屏幕 (Home Screen, 也称桌面) 管理应用程序, 还可以通过浏览器的添加到主屏幕功能将网站链接作为快捷方式添加为主屏幕图标. 是否你也想过为网站定义一个图标, 如果用户将网站添加至主屏幕, 网站链接看起来更像原生程序, 也能获得更多的关注.
1505 0
|
iOS开发
iPhone与iPad的屏幕支持方向
iPhone与iPad的屏幕支持方向
192 0
iPhone与iPad的屏幕支持方向
|
传感器 安全 小程序
小程序对IPhone全面屏手机底部黑线的安全区域处理
小程序对IPhone全面屏手机底部黑线的安全区域处理
371 0
小程序对IPhone全面屏手机底部黑线的安全区域处理
|
前端开发 JavaScript iOS开发
jqm选项卡开发,底部标签式设计,jqm模仿iPhone手机桌面菜单,jqm实战开发,jqm开发例子Demo
我有一个水货的上司,大家都是知道的。所以我就只能自学了,今天我给大家带来的是jQuery Mobile 模仿iphone 手机桌面的选项卡功能。比如电话,短信,浏览器,音乐的标签菜单。好吧,直接上代码:<pre code_snippet_id="378715" snippet_file_name="blog_20140605_1_1293162" name="code" class="ht
1484 0
|
26天前
|
编解码 测试技术 iOS开发
iPhone 屏幕尺寸和开发适配
【10月更文挑战第23天】iPhone 的屏幕尺寸变化给开发者带来了一定的挑战,但也为创新提供了机遇。通过深入了解不同屏幕尺寸的特点,遵循适配原则和策略,运用合适的技巧和方法,我们能够为用户提供在不同 iPhone 机型上都具有良好体验的应用。在未来,随着技术的不断进步,我们还需要持续学习和适应,以满足用户对优质应用体验的不断追求。