如图:由于项目中要用到类似的功能,所以就网上找了找资料,其实这只是个自定义的对话框,将内容显示到底部,
自定义控件:QuickOptionDialog.java
package com.juguo.activity;
import com.juguo.cletter.R;
import android.annotation.SuppressLint;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.Display;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.LinearInterpolator;
import android.widget.ImageView;
public class QuickOptionDialog extends Dialog implements
android.view.View.OnClickListener {
private ImageView mClose;
public interface OnQuickOptionformClick {
void onQuickOptionClick(int id);
}
private OnQuickOptionformClick mListener;
private QuickOptionDialog(Context context, boolean flag,
OnCancelListener listener) {
super(context, flag, listener);
}
@SuppressLint("InflateParams")
private QuickOptionDialog(Context context, int defStyle) {
super(context, defStyle);
View contentView = getLayoutInflater().inflate(
R.layout.dialog_quick_option, null);
mClose = (ImageView) contentView.findViewById(R.id.iv_close);
Animation operatingAnim = AnimationUtils.loadAnimation(getContext(),
R.anim.quick_option_close);
LinearInterpolator lin = new LinearInterpolator();
operatingAnim.setInterpolator(lin);
mClose.startAnimation(operatingAnim);
mClose.setOnClickListener(this);
requestWindowFeature(Window.FEATURE_NO_TITLE);
contentView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
QuickOptionDialog.this.dismiss();
return true;
}
});
super.setContentView(contentView);
}
public QuickOptionDialog(Context context) {
this(context, R.style.quick_option_dialog);
}
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
getWindow().setGravity(Gravity.BOTTOM);
WindowManager m = getWindow().getWindowManager();
Display d = m.getDefaultDisplay();
WindowManager.LayoutParams p = getWindow().getAttributes();
p.width = d.getWidth();
getWindow().setAttributes(p);
}
public void setOnQuickOptionformClickListener(OnQuickOptionformClick lis) {
mListener = lis;
}
@Override
public void onClick(View v) {
final int id = v.getId();
switch (id) {
default:
break;
}
if (mListener != null) {
mListener.onQuickOptionClick(id);
}
dismiss();
}
private void onClickTweetPub(int id) {
Bundle bundle = new Bundle();
int type = -1;
switch (id) {
default:
break;
}
}
private void onClickNote() {
}
}
资源文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/set_pop"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="@drawable/day_list_item_background" >
<LinearLayout
android:id="@+id/ll_option_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:layout_marginBottom="20dp"
android:background="@drawable/corner_notice"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:padding="10.0dip" >
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/avatar_img_loading" />
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10.0dip"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/tv_recept_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="姓名:张三"
android:textColor="@drawable/actionbar_back" />
<TextView
android:id="@+id/tv_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:text="xxxx" />
</RelativeLayout>
<TextView
android:layout_width="fill_parent"
android:layout_height="1.0px"
android:layout_marginTop="5dp"
android:background="#ffdddddd" />
<TextView
android:id="@+id/info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:ellipsize="end"
android:maxLines="5"
android:text="xxxxxx"
android:textSize="15dp" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
<TextView
android:layout_width="fill_parent"
android:layout_height="1.0px"
android:layout_marginTop="5dp"
android:background="#ffdddddd" />
<TextView
android:id="@+id/money"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:gravity="right|center_vertical"
android:maxLines="5"
android:padding="8dp"
android:text="xxxxxxx"
android:textSize="15dp" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="80dp" >
</LinearLayout>
<TextView
android:layout_width="fill_parent"
android:layout_height="1.0px"
android:layout_marginTop="5dp"
android:background="#ffdddddd" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/tv_msg"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/bg_form_list_item"
android:gravity="center"
android:padding="15dp"
android:text="xxxxxx"
android:textColor="@drawable/actionbar_back"
android:textSize="15dp" />
<View
android:layout_width="1dp"
android:layout_height="fill_parent"
android:layout_margin="5dp"
android:background="#ffdddddd" />
<TextView
android:id="@+id/tv_dial"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/bg_form_list_item"
android:gravity="center"
android:padding="15dp"
android:text="xxxx"
android:textColor="@drawable/actionbar_back"
android:textSize="15dp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/ll_foot"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/ll_option_container"
android:background="@color/day_layout_bg_normal"
android:gravity="center"
android:padding="10dip"
android:visibility="visible" >
<ImageView
android:id="@+id/iv_close"
android:layout_width="35dp"
android:layout_height="35dp"
android:contentDescription="@null"
android:focusable="false"
android:src="@drawable/btn_quickoption_route"
android:visibility="gone" />
</LinearLayout>
</RelativeLayout>
调用:
// 显示快速操作界面
@OnClick(R.id.iv_call)
public void showQuickOption() {
final QuickOptionDialog dialog = new QuickOptionDialog(
TelePhoneyActivity.this);
dialog.setCancelable(true);
dialog.setCanceledOnTouchOutside(true);
dialog.show();
}
通过改变布局,我们可以自己做出很好看的样式来