您的位置:首页 > 其它

类似微博快速操作弹出界面

2015-09-18 17:16 267 查看
如图:由于项目中要用到类似的功能,所以就网上找了找资料,其实这只是个自定义的对话框,将内容显示到底部,



自定义控件: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();
	}


通过改变布局,我们可以自己做出很好看的样式来
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: