先上图
手机分辨率有很多种
怎么让王哥布局刚好一个屏幕平均分,然后不会出现多余导致滑动的情况
上代码
@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)