遍歷view

最近做優酷視頻播放的時候,因爲默認的標準點擊按鈕只能彈出標準框,裏面沒有高清,超清等選項,所以自己便利優酷的自定義播放控件找到了這個標準的按鈕,重新實現了它的點擊事件,點擊時彈出,標準,高清,超清等選項框,代碼如下:

//查找標清按鈕
private void findView(ViewGroup group){
    final ArrayList<String> qualityList = new ArrayList<String>();
    qualityList.add(getResources().getString(R.string.string_liuchang));
    qualityList.add(getResources().getString(R.string.string_biaoqing));
    qualityList.add(getResources().getString(R.string.string_gaoqing));
    qualityList.add(getResources().getString(R.string.string_chaoqing));
    qualityList.add(getResources().getString(R.string.string_yuanhua));
    for(int i=0;i<group.getChildCount();i++){
        if(group.getChildAt(i) instanceof TextView){
        if(((TextView) group.getChildAt(i)).getText().toString().equals("標清")){
            Set set= videoView.getVideoSupportQuality();
            List<String> stringList=videoView.getVideoSupportQualityStr();
            for (int k=0;k<stringList.size();k++){
                Log.e("視頻的質量有",stringList.get(k) +"質量類型有"+set.size());
            }
            final TextView textView=((TextView) group.getChildAt(i));
                       textView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Log.e("tag","點擊了標清");
                        Toast.makeText(VideoActivity.this,"標清",Toast.LENGTH_SHORT).show();
                       //彈出超清框
                      ListView listView = new ListView(VideoActivity.this);
                       // listView.setBackgroundColor(getResources().getColor(R.color.color_black));

                        listView.setAdapter(new ArrayAdapter<String>(VideoActivity.this, R.layout.item_biaoqing, qualityList));
                        final PopupWindow window = new PopupWindow(VideoActivity.this);
                        window.setHeight(600);
                        window.setWidth(300);
                        window.setContentView(listView);
                        // TODO: 2016/5/17 設置背景顏色
                        window.setBackgroundDrawable(new BitmapDrawable());
                        // TODO: 2016/5/17 設置可以獲取焦 點
                        window.setFocusable(true);
                        // TODO: 2016/5/17 設置可以觸摸彈出框以外的區域
                        window.setOutsideTouchable(true);
                        // TODO: 2016/5/17 以下拉的方式顯示,並且可以設置顯示的位置
                        int popupWidth = listView.getMeasuredWidth();
                        int popupHeight =  listView.getMeasuredHeight();
                        int[] location = new int[2];
                        //v.getLocationOnScreen(location);
                        window.showAsDropDown(textView);
                     //   window.showAtLocation(v, Gravity.TOP, 0, 0);
                        //設置標清,高清的選中事件
                        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                            @Override
                            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                                window.dismiss();
                                videoView.changeQuality(position);
                                textView.setText(qualityList.get(position).toString()+position);

                            }
                        });

                    }
                });
            }
        }else if(group.getChildAt(i) instanceof ViewGroup){
            findView(((ViewGroup) group.getChildAt(i)));

        }
    }
}
佈局代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceListItemSmall"
    android:gravity="center"
    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
    android:minHeight="?android:attr/listPreferredItemHeightSmall"
    android:textColor="@color/color_white"
    android:background="@color/color_black"/>
其實核心代碼就兩個判斷:一是判斷是否是View,第二個判斷是否是viewGroup?


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