本实例的自定义下拉菜单主要是继承PopupWindow类来实现的弹出窗体,各种布局效果可以根据自己定义设计。弹出的动画效果主要用到了translate、alpha、scale,具体实现步骤如下:
先上效果图如下:左边下拉菜单、中间下拉菜单、右边下拉菜单
1.主界面布局 activity_main.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff" >
<include
android:id="@+id/main_top"
android:layout_width="match_parent"
android:layout_height="wrap_content"
layout="@layout/urm_top" />
<TextView
android:id="@+id/rule_line_tv"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_below="@id/main_top"
android:background="@color/reserve_line" />
<LinearLayout
android:id="@+id/main_ll"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/rule_line_tv"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="10dp" >
<TextView
android:id="@+id/left_tv"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ellipsize="end"
android:gravity="center_horizontal"
android:maxLength="4"
android:singleLine="true"
android:text="我负责的线索" />
<TextView
android:id="@+id/middle_tv"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ellipsize="end"
android:gravity="center_horizontal"
android:maxLength="4"
android:singleLine="true"
android:text="团队" />
<TextView
android:id="@+id/right_tv"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ellipsize="end"
android:gravity="center_horizontal"
android:maxLength="4"
android:singleLine="true"
android:text="自定义" />
</LinearLayout>
<TextView
android:id="@+id/rule_line01_tv"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_below="@id/main_ll"
android:background="@color/reserve_line" />
<TextView
android:id="@+id/main_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="主界面" />
</RelativeLayout>
2.主界面测试类 MainActivity.java
package com.popuptest;
import java.util.ArrayList;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.RelativeLayout.LayoutParams;
import android.app.Activity;
public class MainActivity extends Activity implements OnClickListener {
public static int screenW, screenH;
private ImageButton backBtn, createBtn;
private Button confirmBtn;
private TextView topTv;
private LinearLayout topll;
private ImageView topIv;
private TextView topLineTv;
private TopMiddlePopup middlePopup;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setC