`
yi_17328214
  • 浏览: 206716 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

仿iphone actionsheet

阅读更多
public class ActionSheet implements OnClickListener {

private Context context;
private LinearLayout layout;
private View actionsheetView;
private TextView title;
private Button deleteButton, cancelButton;
private ActionSheetButtonClickListener aslistener;

/**
* This creates a ActionSheet
* @param context
* @param layout
*/
public ActionSheet(Context context, LinearLayout layout) {
this.context = context;
this.layout = layout;
init();
}

private void init() {
LayoutInflater inflater = (LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.actionsheetView = inflater.inflate(R.layout.action_sheet, null);

this.deleteButton = (Button) this.actionsheetView.findViewById(R.id.action_sheet_delete);
this.cancelButton = (Button) this.actionsheetView.findViewById(R.id.action_sheet_cancel);
this.title = (TextView) this.actionsheetView.findViewById(R.id.action_sheet_title);
}

/**
* This
* @param listener
*/
public void setOnButtonClickListener(ActionSheetButtonClickListener listener) {
this.aslistener = listener;
}

/**
* This action sheet
* @param title
*/
public void show(String title) {
this.title.setText(title);
WindowManager.LayoutParams lp = new WindowManager.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_APPLICATION, WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_BLUR_BEHIND,
PixelFormat.TRANSLUCENT);

this.deleteButton.setOnClickListener(this);
this.cancelButton.setOnClickListener(this);
this.actionsheetView.setSoundEffectsEnabled(false);
this.actionsheetView.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
hide();
}
});
this.layout.addView(this.actionsheetView, lp);
Animation animIn = AnimationUtils.loadAnimation(this.context, R.anim.push_up_in);
animIn.setDuration(200);
animIn.setAnimationListener(new AnimationListener() {

@Override
public void onAnimationStart(Animation animation) {

}

@Override
public void onAnimationRepeat(Animation animation) {

}

@Override
public void onAnimationEnd(Animation animation) {
Activity parent = (Activity) ActionSheet.this.context;
// using the activity, get Window reference
// Window window = parent.getWindow();
parent.getWindow().addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
parent.getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND, WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
TransitionDrawable transition = (TransitionDrawable) ActionSheet.this.actionsheetView.getBackground();
transition.startTransition(100);
}
});
this.actionsheetView.setAnimation(animIn);

this.layout.bringChildToFront(this.actionsheetView);
}

/**
* This hide action sheet
*/
public void hide() {
Animation animOut = AnimationUtils.loadAnimation(this.context, R.anim.push_down_out);
animOut.setDuration(200);
animOut.setAnimationListener(new AnimationListener() {

@Override
public void onAnimationStart(Animation animation) {
TransitionDrawable transition = (TransitionDrawable) ActionSheet.this.actionsheetView.getBackground();
transition.resetTransition();
}

@Override
public void onAnimationRepeat(Animation animation) {

}

@Override
public void onAnimationEnd(Animation animation) {
ActionSheet.this.layout.removeView(ActionSheet.this.actionsheetView);

}
});
this.actionsheetView.setAnimation(animOut);
this.actionsheetView.startAnimation(animOut);
}

/**
* {@inheritDoc}
* @see android.view.View.OnClickListener#onClick(android.view.View)
*/
@Override
public void onClick(View v) {
if (v.getId() == R.id.action_sheet_delete) {
this.aslistener.onButtonClick(this, 0);
} else {
this.aslistener.onButtonClick(this, 1);
}

}
}



public interface ActionSheetButtonClickListener {

/**
* This actionsheet button call back
* @param index
*/
public void onButtonClick(ActionSheet actionsheet, int index);

}



<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="@drawable/action_sheet_background"
android:gravity="bottom"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="@drawable/action_sheet_bg"
android:gravity="center_horizontal"
android:orientation="vertical" >
<TextView
android:id="@+id/action_sheet_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="25dp"
android:textColor="@color/white"
android:textSize="20dp" />
<Button
android:id="@+id/action_sheet_delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:background="@drawable/action_sheet_delete_button"
android:text="@string/fav_action_sheet_delete"
android:textColor="@color/black"
android:textSize="20dp" />
<Button
android:id="@+id/action_sheet_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:background="@drawable/action_sheet_cancel_button"
android:text="@string/cancel"
android:textColor="@color/white"
android:textSize="20dp" />
</LinearLayout>
</LinearLayout>


action_sheet_bg


<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- The drawables used here can be solid colors, gradients, shapes, images, etc. -->
<item android:drawable="@android:color/transparent"/>
<item android:drawable="@color/action_sheet_background"/>
</transition>


action_sheet_cancel_button
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/action_sheet_delete_clicked" android:state_pressed="true"/> <!-- pressed -->
<item android:drawable="@drawable/action_sheet_delete_clicked" android:state_focused="true"/> <!-- focused -->
<item android:drawable="@drawable/action_sheet_delete"/> <!-- default -->
</selector>


action_sheet_delete_button
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/action_sheet_cancel_clicked" android:state_pressed="true"/> <!-- pressed -->
<item android:drawable="@drawable/action_sheet_cancel_clicked" android:state_focused="true"/> <!-- focused -->
<item android:drawable="@drawable/action_sheet_cancel"/> <!-- default -->
</selector>
分享到:
评论

相关推荐

    仿IPHONE状态栏

    本文将详细探讨如何在Android应用中实现仿iPhone状态栏的技巧和方法,以及涉及到的相关技术。 首先,我们需要理解Android状态栏的基本结构和功能。在Android系统中,状态栏位于屏幕顶部,显示着网络连接、电量、...

    仿iphone软键盘输入文本框.zip

    "仿iPhone软键盘输入文本框"是一个利用jQuery和CSS3技术实现的网页组件,它旨在为用户在桌面浏览器上提供与iPhone硬件键盘类似的输入体验。这个组件对于那些在非移动设备上也需要模拟移动设备输入场景的应用或网站...

    安卓仿iphone桌面

    【安卓仿iPhone桌面】是一款专为Android用户设计的应用程序,旨在为用户提供与iPhone 5相似的桌面体验。这款软件——Fake iPhone 5 v1.2 汉化版,是针对中国用户特别优化的,使其界面语言变为中文,使得国内用户能够...

    HTML5小游戏【iphone桌面图标,仿iphone桌面】游戏源码分享下载 - games.zip

    --- games.zipHTML5小游戏【iphone桌面图标,仿iphone桌面】游戏源码分享下载 --- games.zipHTML5小游戏【iphone桌面图标,仿iphone桌面】游戏源码分享下载 --- games.zipHTML5小游戏【iphone桌面图标,仿iphone桌面...

    android仿iphone下拉刷新控件

    本篇将详细介绍如何在Android应用中创建一个仿iPhone下拉刷新的控件,并实现上拉加载更多(Load More)的功能。 首先,我们需要理解下拉刷新的基本原理。它允许用户通过向下滑动列表顶部来触发数据的更新。当用户...

    仿iPhone/iPod动态图片浏览器

    仿iPhone/iPod动态图片浏览器 仿iPhone/iPod动态图片浏览器 仿iPhone/iPod动态图片浏览器

    仿iPhone左右滑动开关

    "仿iPhone左右滑动开关"是一种常见的UI组件,模仿了苹果设备上的滑动开关设计,这种开关通常用于开启或关闭某个功能。在这个控件中,用户可以通过简单的左右滑动手势来切换开关状态,其外观和交互都与真实的iPhone...

    wpf仿iphone桌面翻页效果

    在本文中,我们将深入探讨如何在Windows Presentation Foundation (WPF) 中实现仿iPhone桌面的翻页效果。这个项目的核心目标是为用户提供一个类似iPhone主屏幕的用户体验,包括平滑的翻页动画以及在不满足翻页条件时...

    仿iphone桌面拖动排序

    仿iphone桌面拖动排序 仿苹果桌面 仿iphone ios桌面 launcher 本人见市场上很少仿排序拖拉这样的算法。所以改android源码。供大家学习使用哦。 这是android仿ios桌面的应用,支持拖动排序。 高仿iphone桌面,排列...

    仿iphone时钟

    android 仿iphone 时钟 clock

    仿iphone手机网站

    【标题】"仿iPhone手机网站"所指的是一种专门设计用于模拟iPhone设备界面和用户体验的网页设计。这种设计通常应用于在线商店或者产品展示网站,旨在为用户带来接近于在iPhone上浏览和操作的真实感,提升用户的浏览...

    android 仿iPhone自定义底部弹出菜单

    本文将详细讲解如何在Android中实现"仿iPhone底部弹出菜单"。 1. **自定义布局设计** - 首先,创建一个包含多个菜单项的布局文件。每个菜单项通常是一个`LinearLayout`或`CardView`,包含一个图标和一个文字描述。...

    仿iphone时间滑轮

    现在我们将深入探讨如何在Android平台上实现一个仿iPhone时间滑轮的功能。 首先,我们要理解"滑轮"(WheelView)的基本概念。滑轮通常是一个垂直滚动的列表,显示一系列连续或离散的数据项,用户可以通过上下滚动来...

    仿iphone Launcher 桌面

    这是一款android实现的仿iphone Launcher 桌面

    Android源码高仿IPhone锁屏.zip

    在Android平台上,开发一款应用来高仿iPhone的锁屏界面是一项技术挑战,涉及到对用户界面设计、触摸事件处理、动画效果以及系统级别的交互理解。在这个项目中,开发者将深入研究Android系统的UI框架,并模仿iPhone...

    仿iphone滑动界面 jquery iphone ui

    在IT行业中,创建类似iPhone的滑动界面是许多开发者追求的目标,特别是在网页设计领域。"jQuery iPhone UI"是一个专门用于构建具有苹果设备风格用户界面的jQuery插件。这个工具允许开发者轻松地为他们的网站添加iOS...

    Android-安卓仿iPhone控制中心上划出现控制中心工具栏

    本项目标题"Android-安卓仿iPhone控制中心上划出现控制中心工具栏"正是针对这一需求,旨在创建一个自定义的Android组件,模拟iOS系统的控制中心行为。 首先,我们需要理解Android的触摸事件处理机制。在Android中,...

    Android 源码高仿IPhone锁屏.zip项目安卓应用源码下载

    Android 源码高仿IPhone锁屏.zip项目安卓应用源码下载Android 源码高仿IPhone锁屏.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考

    Android仿iphone-气泡短信-DEMO.zip

    "Android仿iphone-气泡短信-DEMO.zip" 这个标题表明这是一个针对Android平台的开发项目,其目标是模仿iPhone的气泡短信效果。气泡短信是iOS系统中一种常见的对话界面设计,以气泡的形式展示聊天内容,使用户在视觉上...

    仿iphone通讯录源码

    在iOS开发领域,仿iPhone通讯录源码是一个常见的学习资源,尤其对于初学者而言,它可以帮助理解并掌握iOS应用的基本架构、数据管理以及用户界面设计。这个源码项目旨在模仿苹果设备上的原生通讯录应用,提供类似的...

Global site tag (gtag.js) - Google Analytics