gridview网格布局一个整屏幕(视频整个屏幕平均分配网格)

先上图









手机分辨率有很多种

怎么让王哥布局刚好一个屏幕平均分,然后不会出现多余导致滑动的情况

上代码

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {


        bundle = getIntent().getExtras();
        if (bundle != null) {
            mIsSignleDetection = bundle.getBoolean(KeyConstants.KEY_IS_SIGNLE_DETECTION, true);

            mHardwareDetectionType = bundle.getInt(KeyConstants.KEY_DETECTION_HARDWARE_TYPE, -1);
            mDetectionChildType = bundle.getInt(KeyConstants.KEY_DETECTION_CHILD_TYPE, -1);
            mHardwareDetection = HardwareDetectionManager.getInstance().getDetections().get(mHardwareDetectionType);

        }
        DetectionChild detectionLcd = mHardwareDetection.getDetectionChildMap().get(HardwareDetectionManager.CHILD_SCREEN_LCD);
        mLcd = detectionLcd.getChildResult();
        if (mLcd == KeyConstants.KEY_ABNORMAL) {
            mResult = detectionLcd.getChildName();
        }

        super.onCreate(savedInstanceState);


        //取消标题栏
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        //取消状态栏
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_lcd_touch_screen);

        ShowDialog();


        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getRealMetrics(dm);
        screenWidth = dm.widthPixels;  // 屏幕宽
        screenHeigh = dm.heightPixels;  // 屏幕高


//        格子数=分辨率长*分辨率宽/((分辨率宽度/360)*(分辨率宽度/360)*20*60)
        mGridNumber =screenHeigh*screenWidth/((screenWidth/360)*(screenWidth/360)*20*60);


//        if (screenHeigh == 1280) {
//            mGridNumber = 192;
//        } else if (screenHeigh == 1280) {
//
//        } else if (screenHeigh == 1440) {
//            mGridNumber = 216;
//        } else if (screenHeigh == 1800) {
//            mGridNumber = 180;
//
//        } else if (screenHeigh == 1920) {
//            mGridNumber = 192;
//
//        } else if (screenHeigh == 2160) {
//            mGridNumber = 216;
//
//        } else if (screenHeigh == 2560) {
//            mGridNumber = 192;
//        }


        for (int i = 0; i < mGridNumber; i++) {
            TouchScreenBean bean = new TouchScreenBean();
            bean.setSelect(false);
            mList.add(bean);
        }

        mTvOK = (TextView) findViewById(R.id.tv_ok);
        mRlOk = (RelativeLayout) findViewById(R.id.rl_ok);
        mGvGridview = (GridView) findViewById(R.id.gv_gridview);
        mAdapter = new GridViewAdapter(this, mList);
        mGvGridview.setAdapter(mAdapter);
        setTouchListener();


    }


    private void setTouchListener() {
        mGvGridview.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                float currentXPosition = event.getX();
                float currentYPosition = event.getY();
                int position = mGvGridview.pointToPosition((int) currentXPosition, (int) currentYPosition);
                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        if (position == -1) {

                        } else {
                            mList.get(position).setSelect(true);
                        }
                        break;
                    case MotionEvent.ACTION_MOVE:
                        if (position == -1) {

                        } else {
                            mList.get(position).setSelect(true);
                        }
                        break;
                    case MotionEvent.ACTION_UP:
                        if (position == -1) {

                        } else {
                            mList.get(position).setSelect(true);
                            int a = 0;
                            for (int i = 0; i < mList.size(); i++) {
                                if (mList.get(i).isSelect()) {
                                    a = a + 1;
                                }
                                if (a == mList.size()) {
                                    ToastUtil.showLong("触屏功能测试通过");
                                    TimerTask task = new TimerTask() {
                                        @Override
                                        public void run() {

                                            skip();
                                        }
                                    };
                                    Timer timer = new Timer();
                                    timer.schedule(task, 1000);//1秒后执行TimeTask的run方法

                                }
                            }


                        }


                        break;
                }
                mAdapter.notifyDataSetChanged();

                return true;
            }

        });
    }

public class GridViewAdapter extends BaseAdapter {
    private Context context;
    private List<TouchScreenBean> mTouchList = new ArrayList<TouchScreenBean>();


    public GridViewAdapter(Context context, List<TouchScreenBean> list ) {
        this.context = context;
        mTouchList = list;


    }

    @Override
    public int getCount() {
        return mTouchList.size();
    }


    @Override
    public Object getItem(int position) {

        return mTouchList.get(position);
    }

    @Override
    public long getItemId(int position) {

        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        ViewHolder viewHolder = null;

        if (convertView == null) {

            viewHolder = new ViewHolder();
            // 获得容器
            convertView = LayoutInflater.from(this.context).inflate(R.layout.item_grid, null);
            // 初始化组件
            viewHolder.title = (TextView) convertView.findViewById(R.id.tv_conten);
            convertView.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) convertView.getTag();
        }

        // 给组件设置资源
        if (mTouchList.get(position).isSelect()) {
            viewHolder.title.setBackgroundColor(R.color.color_touchscreen);

        }


        return convertView;
    }

    class ViewHolder {
        public TextView title;
    }
}

item的布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="60dp"
    android:layout_height="20dp"
    android:orientation="vertical">


    <TextView
        android:id="@+id/tv_conten"
        android:layout_width="60dp"
        android:layout_height="match_parent" />

</LinearLayout>


格子数=分辨率长*分辨率宽/((分辨率宽度/360)*(分辨率宽度/360)*20*60)

猜你喜欢

转载自blog.csdn.net/yangbin0513/article/details/80094526