android popuwindow向上弹出效果

来源:互联网 发布:网络音乐服务器搭建 编辑:程序博客网 时间:2024/06/16 10:10
public class MainActivity extends Activity implements OnClickListener {    private PopupWindow mPopupWindow2;    private LinearLayout linear_layout;    private RelativeLayout relative_main1,relative_main2,relative_main3;    private TextView line_top,line_bottom;    boolean isOpen = false;    private ImageView imageview_arrow;    private RelativeLayout relative_parent;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initPopu();        linear_layout = (LinearLayout) findViewById(R.id.linear_layout);        relative_main1 = (RelativeLayout) findViewById(R.id.relative_main1);        relative_main2 = (RelativeLayout) findViewById(R.id.relative_main2);        relative_main3 = (RelativeLayout) findViewById(R.id.relative_main3);        line_top = (TextView) findViewById(R.id.line_top);        line_bottom = (TextView) findViewById(R.id.line_bottom);        imageview_arrow = (ImageView) findViewById(R.id.imageview_arrow);        relative_parent = (RelativeLayout) findViewById(R.id.relative_parent);        linear_layout.setOnClickListener(this);        relative_main1.setOnClickListener(this);        relative_main2.setOnClickListener(this);        relative_main3.setOnClickListener(this);//点击空白处隐藏view        relative_parent.setOnTouchListener(new View.OnTouchListener() {            @Override            public boolean onTouch(View v, MotionEvent event) {                if(isOpen){                    setViewVisble(isOpen);                }                return false;            }        });    }//初始化popuwindow    private void initPopu() {        mPopupWindow2 = new PopupWindow(this);        mPopupWindow2.setBackgroundDrawable(new BitmapDrawable());        mPopupWindow2.setWidth(LayoutParams.WRAP_CONTENT);        mPopupWindow2.setHeight(LayoutParams.WRAP_CONTENT);        mPopupWindow2.setOutsideTouchable(false);        mPopupWindow2.setFocusable(true);        View content1 = this.getLayoutInflater().inflate(R.layout.popuwindow_item, null);        mPopupWindow2.setContentView(content1);    }    @Override    public void onClick(View v) {        switch (v.getId()) {            case R.id.relative_main3:                setViewVisble(isOpen);                break;            case R.id.relative_main1:                showPopuwindow(v);                break;            case R.id.relative_main2:                showPopuwindow(v);                break;        }    }    private void setViewVisble(boolean isO) {        if(!isO){            relative_main1.setVisibility(View.VISIBLE);            relative_main2.setVisibility(View.VISIBLE);            line_top.setVisibility(View.VISIBLE);            line_bottom.setVisibility(View.VISIBLE);            imageview_arrow.setVisibility(View.GONE);            isOpen = true;        }else{            relative_main1.setVisibility(View.GONE);            relative_main2.setVisibility(View.GONE);            line_top.setVisibility(View.GONE);            line_bottom.setVisibility(View.GONE);            imageview_arrow.setVisibility(View.VISIBLE);            isOpen = false;        }    }//展示popuwindow    private void showPopuwindow(View v) {        mPopupWindow2.setAnimationStyle(R.style.PopuwindowAnimStyle2);        int xWidth = DensityUtil.dip2px(this,40);        int[] location = new int[2];        v.getLocationOnScreen(location);        mPopupWindow2.showAtLocation(v, Gravity.RIGHT|Gravity.TOP, v.getWidth()+xWidth, location[1]);    }}


//activity_main 布局文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/relative_parent"    android:layout_width="match_parent"    android:layout_height="match_parent">    <TextView        android:id="@+id/tv_empty"        android:layout_width="match_parent"        android:layout_height="1dp"        android:layout_centerVertical="true"        android:background="@color/common_line" />    <LinearLayout        android:id="@+id/linear_layout"        android:layout_width="50dp"        android:layout_height="wrap_content"        android:layout_above="@id/tv_empty"        android:layout_alignParentRight="true"        android:layout_marginBottom="5dp"        android:layout_marginRight="30dp"        android:background="@drawable/shape_gray_round"        android:orientation="vertical">        <RelativeLayout            android:id="@+id/relative_main1"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center_horizontal"            android:paddingLeft="5dp"            android:paddingRight="5dp"            android:paddingTop="8dp"            android:visibility="gone">            <TextView                android:id="@+id/tv1"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_centerHorizontal="true"                android:text="124"                android:textColor="@color/whole_color"                android:textSize="12dp" />            <TextView                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_below="@id/tv1"                android:layout_centerHorizontal="true"                android:text="波动率"                android:textSize="10dp" />        </RelativeLayout>        <TextView            android:id="@+id/line_top"            android:layout_width="match_parent"            android:layout_height="1dp"            android:layout_marginBottom="10dp"            android:layout_marginTop="10dp"            android:background="@color/common_line"            android:visibility="gone" />        <RelativeLayout            android:id="@+id/relative_main2"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center_horizontal"            android:paddingLeft="5dp"            android:paddingRight="5dp"            android:visibility="gone">            <TextView                android:id="@+id/tv2"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_centerHorizontal="true"                android:text="234"                android:textColor="@color/whole_color"                android:textSize="12dp" />            <TextView                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_below="@id/tv2"                android:layout_centerHorizontal="true"                android:text="波动率"                android:textSize="10dp" />        </RelativeLayout>        <TextView            android:id="@+id/line_bottom"            android:layout_width="match_parent"            android:layout_height="1dp"            android:layout_marginBottom="10dp"            android:layout_marginTop="10dp"            android:background="@color/common_line"            android:visibility="gone" />        <RelativeLayout            android:id="@+id/relative_main3"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center_horizontal"            android:paddingBottom="8dp"            android:paddingLeft="5dp"            android:paddingRight="5dp">            <ImageView                android:id="@+id/imageview_arrow"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_centerHorizontal="true"                android:layout_marginTop="8dp"                android:scaleType="centerInside"                android:src="@drawable/arrow_up" />            <TextView                android:id="@+id/tv3"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_below="@id/imageview_arrow"                android:layout_centerHorizontal="true"                android:text="中等"                android:textColor="@color/whole_color"                android:textSize="12dp" />            <TextView                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_below="@id/tv3"                android:layout_centerHorizontal="true"                android:text="风险"                android:textSize="10dp" />        </RelativeLayout>    </LinearLayout></RelativeLayout>
//popuwindow_item,布局文件
<?xml version="1.0" encoding="utf-8"?><RelativeLayout    xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="160dp"    android:background="@drawable/shape_white_round"    android:layout_height="wrap_content">    <TextView        android:layout_width="160dp"        android:layout_height="wrap_content"        android:padding="5dp"        android:text="lavpa,vpa,eeeeeeeeeeeeeeerv,vre"/></RelativeLayout>
/**
*代码中涉及到的动画
*/
<style name="PopuwindowAnimStyle">    <item name="android:windowEnterAnimation">@anim/show_popuwindow</item>    <item name="android:windowExitAnimation">@anim/hide_popuwindow</item></style>
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android">    <scale         android:fromXScale="0.5" android:toXScale="1.0"        android:fromYScale="0.5" android:toYScale="1.0"        android:pivotX="50%"    android:pivotY="50%"        android:duration = "500">            </scale>    <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration = "500" /></set>
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android">    <scale         android:fromXScale="1.0" android:toXScale="0.5"        android:fromYScale="1.0" android:toYScale="0.5"        android:pivotX="50%"    android:pivotY="50%"        android:duration = "500">            </scale>    <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration = "500" /></set>
0 0
原创粉丝点击