Android PopWindow與GridView練習

練習:1.首先完成如圖所示效果

            2.使用PopWindow與GridView完成

            要求點擊分享顯示如圖所示內容,點擊取消分享退出。

           並且要求進入退出動畫效果爲漸入漸出,時間爲1秒,且要設置透明效果。


佈局:

<?xml version="1.0" encoding="utf-8"?>
<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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:background="#8ee1b4"
    tools:context="com.example.administrator.jreduch05.GridView_Activity">

    <GridView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/gv"
        android:numColumns="4"
        >
    </GridView>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="取消分享"
        android:id="@+id/bt1"
        android:layout_below="@+id/gv"
        />
</RelativeLayout>
佈局效果:



佈局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:id="@+id/iv"
    android:src="@mipmap/ic_launcher"
    android:scaleType="centerCrop"
    />
<TextView
    android:layout_width="100dp"
    android:layout_height="wrap_content"
    android:id="@+id/tv"
    android:gravity="center"
    android:text="測試"
    />
</LinearLayout>

效果:



代碼:

package com.example.administrator.jreduch05;

import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Gravity;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.GridView;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.SimpleAdapter;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class PopWindow_Activity extends AppCompatActivity {
    private Button bt;
    private PopupWindow pw;
    private View popView;
    private GridView gv;
    private Button bt1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_pop_window_);
        bt=(Button) findViewById(R.id.share);

        popView=getLayoutInflater().inflate(R.layout.activity_grid_view_,null);
        bt1=(Button) popView.findViewById(R.id.bt1);
        gv=(GridView)popView.findViewById(R.id.gv);

        List list =new ArrayList();

        HashMap map=new HashMap();
        map.put("img",R.mipmap.renrou);
        map.put("name","微信");
        list.add(map);

        map=new HashMap();
        map.put("img",R.mipmap.jietu1);
        map.put("name", "QQ");
        list.add(map);

        map=new HashMap();
        map.put("img",R.mipmap.dahai);
        map.put("name", "大海");
        list.add(map);

        map=new HashMap();
        map.put("img",R.mipmap.dianzan);
        map.put("name", "點贊");
        list.add(map);


        SimpleAdapter sa=new SimpleAdapter(this,list,R.layout.gridlayout,
                new String[]{"img","name"},
                new int[]{R.id.iv,R.id.tv}
                );
        gv.setAdapter(sa);

        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                pw = getPopWindow(popView);
            }
        });
        bt1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                 pw.dismiss();
                    bt1.setVisibility(View.VISIBLE);
                //設置View可見
            }
        });
    }
    public PopupWindow getPopWindow(View view){
        PopupWindow popupWindow=new PopupWindow(view,
                LinearLayout.LayoutParams.MATCH_PARENT,
                LinearLayout.LayoutParams.WRAP_CONTENT,true
        );
        popupWindow.setOutsideTouchable(true);
        popupWindow.setAnimationStyle(R.style.popStyle);
        //設置背景透明度
        WindowManager.LayoutParams ll=
                getWindow().getAttributes();
        ll.alpha=0.6f;
        getWindow().setAttributes(ll);

        popupWindow.setBackgroundDrawable(new ColorDrawable());
        popupWindow.showAtLocation(bt, Gravity.BOTTOM, 0, 0);

        popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
            @Override
            public void onDismiss() {
                WindowManager.LayoutParams ll=
                        getWindow().getAttributes();
                ll.alpha=1f;
                getWindow().setAttributes(ll);
                //設置View可見
            }
        });
        return popupWindow;
    }
}
完成效果:

1.                                                                               2.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章