最近做优酷视频播放的时候,因为默认的标准点击按钮只能弹出标准框,里面没有高清,超清等选项,所以自己便利优酷的自定义播放控件找到了这个标准的按钮,重新实现了它的点击事件,点击时弹出,标准,高清,超清等选项框,代码如下:
//查找标清按钮 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?