1. 程式人生 > >導航選單橫向左右滑動並和下方的控制元件實現聯動

導航選單橫向左右滑動並和下方的控制元件實現聯動

package com.zj.popupwindow;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
 
import android.app.Activity;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.PopupWindow.OnDismissListener;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
 
public class MainActivity extends Activity {
         
        private boolean mIsopen = false;        //是否已經開啟
        private ImageView mImageView;                //三角形圖示
        private LinearLayout mLinearLayout;
        private PopupWindow mPopupWindow;
        private ArrayList<HashMap<String, Object>> mArrayList;
         
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
         
        mLinearLayout = (LinearLayout)findViewById(R.id.pop_parent);
        mImageView = (ImageView)findViewById(R.id.imageView1);
         
        mLinearLayout.setOnClickListener(new OnClickListener() {
                         
                        @Override
                        public void onClick(View v) {
                                 
                                mIsopen = !mIsopen;
                                if (mIsopen) {
                                        mImageView.setBackgroundResource(R.drawable.icon_arrow_down);
                                }else {
                                        mImageView.setBackgroundResource(R.drawable.icon_arrow_up);
                                }
                                 
                                //設定popupwindow中的listView
                                mArrayList = createData();
                                View _View = getLayoutInflater().inflate(R.layout.popupwindow, null);
                                ListView _ListView = (ListView) _View.findViewById(R.id.list);
                                SimpleAdapter _SimpleAdapter = new SimpleAdapter(
                                                MainActivity.this, mArrayList, 
                                                R.layout.listview_item, new String[]{"zj"}, 
                                                new int[]{R.id.list_item_txt}
                                );
                                _ListView.setAdapter(_SimpleAdapter);
                                _ListView.setOnItemClickListener(new MyListOnItemClick());
                                /*
                                 * 這個去掉了也沒什麼影響,先留下
                                 * 通過ListView的setItemsCanFocus(true)方法並不可以使ItemView
                                 * 在touch mode下可以獲取焦點,他只是表明在由ListAdapter建立的檢視中
                                 * ,可包含能獲得焦點的專案.
                                 */
                                _ListView.setItemsCanFocus(false);
                                 
                                //設定PopupWindow
                                mPopupWindow = new PopupWindow(
                                                _View,
                                                160, 
                                                220
                                );
                                 
                                //注意下面所做的4條是為了使 點選popuWindow 以外的區域能夠關閉它。
                                // 使其聚焦
                                mPopupWindow.setFocusable(true);
                                // 設定允許在外點選消失
                                mPopupWindow.setOutsideTouchable(true);
                                //重新整理狀態 
                                mPopupWindow.update();
                                 
                                //點back鍵和其他地方使其消失,設定了這個才能觸發OnDismisslistener
                                mPopupWindow.setBackgroundDrawable(new BitmapDrawable());
                                 
                                mPopupWindow.showAsDropDown(findViewById(R.id.pop_parent), -50, 0);
                                //mPopupWindow.showAtLocation(findViewById(R.id.pop_parent), Gravity.CENTER_HORIZONTAL | Gravity.TOP, 0, (int)getResources().getDimension(R.dimen.pop_y));
                                mPopupWindow.setOnDismissListener(new OnDismissListener() {
                                         
                                        @Override
                                        public void onDismiss() {
                                                mIsopen = ! mIsopen;
                                                if (mIsopen) {
                                                        mImageView.setBackgroundResource(R.drawable.icon_arrow_down);
                                                }else {
                                                        mImageView.setBackgroundResource(R.drawable.icon_arrow_up);
                                                }
                                                Log.i("zj", "onDismiss");
                                        }
                                });
                                 
                        }
                });
         
    }
     
    private ArrayList<HashMap<String, Object>> createData(){
             
            HashMap<String, Object> map1 = new HashMap<String, Object>();
            map1.put("zj", "美食");
             
            HashMap<String, Object> map2 = new HashMap<String, Object>();
            map2.put("zj", "娛樂");
             
            HashMap<String, Object> map3 = new HashMap<String, Object>();
            map3.put("zj", "購物");
             
            HashMap<String, Object> map4 = new HashMap<String, Object>();
            map4.put("zj", "電影");
             
            ArrayList<HashMap<String, Object>> _ArrayList = new ArrayList<HashMap<String,Object>>();
             
            _ArrayList.add(map1);
            _ArrayList.add(map2);
            _ArrayList.add(map3);
            _ArrayList.add(map4);
             
            return _ArrayList;
    }
     
    class MyListOnItemClick implements OnItemClickListener{
 
                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                                long arg3) {
                        // TODO Auto-generated method stub
                        HashMap<String, Object> temp = mArrayList.get(arg2);
                        mPopupWindow.dismiss();
                        Toast.makeText(MainActivity.this, temp.get("zj").toString(), 1).show();
                }
             
    }
}

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
        <HorizontalScrollView
                android:layout_width="match_parent"
                android:layout_height="50dp"
                android:fadingEdge="@null"
                android:scrollbars="none"
                android:background="#555555"
                android:id="@+id/horizontalScrollView"
        >
                <RelativeLayout
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:background="#33b5e5"
                >
                        <RadioGroup
                                android:id="@+id/radioGroup"
                                android:layout_width="fill_parent"
                                android:layout_height="49dp"
                                android:orientation="horizontal"
                                android:layout_alignParentTop="true"
                        >
                                <RadioButton
                                        style="@style/radioButton"
                                        android:text="one"
                                        android:id="@+id/btn1"
                                />
                                <RadioButton
                                        style="@style/radioButton"
                                        android:text="two"
                                        android:id="@+id/btn2"
                                />
                                <RadioButton
                                        style="@style/radioButton"
                                        android:text="three"
                                        android:id="@+id/btn3"
                                />
                                <RadioButton
                                        style="@style/radioButton"
                                        android:text="four"
                                        android:id="@+id/btn4"
                                />
                                <RadioButton
                                        style="@style/radioButton"
                                        android:text="five"
                                        android:id="@+id/btn5"
                                />
                        </RadioGroup>
                        <ImageView
                                android:id="@+id/img1"
                                android:layout_width="100dp"
                                android:layout_height="4dp"
                                android:background="#33b5e5"
                                android:layout_alignParentBottom="true"
                        />
                </RelativeLayout>
        </HorizontalScrollView>
        <android.support.v4.view.ViewPager
                android:id="@+id/pager"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
        />
</LinearLayout>

http://zhengjiong.iteye.com/blog/1539951