我是Android的初学者。我试图通过添加几个动态视图来控制它。我要做的是添加,删除和带前视图工作。但是我没有这样做。我附上我的代码。我最面临的最大问题是以下问题。我想先创建两个视图,然后创建一个前视图,但这仅适用于创建时间最近的视图。我想让你告诉我如何解决。
public class Fit_Me_page extends AppCompatActivity implements View.OnTouchListener {
private RecyclerView fit_me_recyclerview;
private ArrayList<Fit_Me_Array> fit_me_arrays;
private Fit_Me_Adapter fit_me_adapter;
Fit_Me_Category_Array fit_me_all_category_array;
int category_number = 0;
ConstraintLayout fit_me_constraintLayout;
private ConstraintSet applyConstraintSet = new ConstraintSet();
TextView textView, textView2;
ImageView imageView;
ImageView imageView2;
ImageView testView;
ArrayList<String> category_array_1 = new ArrayList<>();
ArrayList<String> category_array_2;
ImageView show_cloth_information_btn, cloth_size_up_btn, cloth_size_down_btn,
compare_my_size_btn, cloth_bring_front_btn, cloth_send_back_btn, cloth_delete_btn;
int number = 0;
int i = 11;
@SuppressLint("ClickableViewAccessibility")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fit_me_page);
show_cloth_information_btn = findViewById(R.id.show_cloth_information);
cloth_size_up_btn = findViewById(R.id.cloth_size_up);
cloth_size_down_btn = findViewById(R.id.cloth_size_down);
compare_my_size_btn = findViewById(R.id.check_my_size);
cloth_bring_front_btn = findViewById(R.id.front_image);
cloth_send_back_btn = findViewById(R.id.back_image);
cloth_delete_btn = findViewById(R.id.delete_image);
fit_me_recyclerview = findViewById(R.id.fit_me_recyclerview);
GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
fit_me_arrays = new ArrayList<>();
fit_me_adapter = new Fit_Me_Adapter(this, fit_me_arrays);
fit_me_recyclerview.setAdapter(fit_me_adapter);
fit_me_recyclerview.addItemDecoration(new grid_view_padding(this));
fit_me_recyclerview.setLayoutManager(gridLayoutManager);
fit_me_constraintLayout = findViewById(R.id.fit_me_ConstraintLayout);
fit_me_all_category_array = new Fit_Me_Category_Array();
testView = new ImageView(Fit_Me_page.this);
fit_me_constraintLayout.addView(testView);
imageView2 = findViewById(R.id.imageView2);
fit_me_adapter.setOnItemClickListener(new Fit_Me_Adapter.OnItemClickListener() {
@Override
public void onItemClick(int position) {
if (position == 1 && category_number == 0) {
fit_me_arrays.clear();
for (int i = 0; i < fit_me_all_category_array.categoryOuter.size(); i++) {
Fit_Me_Array fit_me_array = new Fit_Me_Array(fit_me_all_category_array.categoryOuter.get(i));
fit_me_arrays.add(fit_me_array);
}
category_number++;
fit_me_adapter.notifyDataSetChanged();
} else if (position == 1 && category_number == 1) {
imageView = new ImageView(Fit_Me_page.this);
imageView.setImageResource(R.drawable.color_wheel);
// imageView.setLayoutParams(layoutParams);
imageView.bringToFront();
imageView.setOnTouchListener(Fit_Me_page.this::onTouch);
//imageView.setOnLongClickListener(Fit_Me_page.this::onLongClick);
i++;
imageView.setId(i);
fit_me_constraintLayout.addView(imageView);
} else if (position == 2 && category_number == 1) {
// ConstraintLayout.LayoutParams layoutParams = new ConstraintLayout.LayoutParams(M,700);
imageView = new ImageView(Fit_Me_page.this);
imageView.setImageResource(R.drawable.camera_button);
// imageView.setLayoutParams(layoutParams);
imageView.bringToFront();
imageView.setOnTouchListener(Fit_Me_page.this::onTouch);
//imageView.setOnLongClickListener(Fit_Me_page.this::onLongClick);
i++;
imageView.setId(i);
fit_me_constraintLayout.addView(imageView);
} else if (position == 0 && category_number == 1) {
fit_me_arrays.clear();
for (int i = 0; i < fit_me_all_category_array.categoryAll.size(); i++) {
Fit_Me_Array fit_me_array = new Fit_Me_Array(fit_me_all_category_array.categoryAll().get(i));
fit_me_arrays.add(fit_me_array);
}
fit_me_adapter.notifyDataSetChanged();
category_number--;
}
}
});
}
@Override
protected void onStart() {
super.onStart();
}
@Override
protected void onResume() {
super.onResume();
show_cloth_information_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
imageView2.bringToFront();
}
});
cloth_size_up_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
cloth_size_down_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
compare_my_size_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
cloth_bring_front_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
testView = fit_me_constraintLayout.findFocus().findViewById(number);
testView.bringToFront();
}
});
cloth_send_back_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
cloth_delete_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onStop() {
super.onStop();
}
float oldXvalue;
float oldYvalue;
@Override
public boolean onTouch(View v, MotionEvent event) {
int parentWidth = ((ViewGroup) v.getParent()).getWidth(); // 부모 View 의 Width
int parentHeight = ((ViewGroup) v.getParent()).getHeight(); // 부모 View 의 Height
if (event.getAction() == MotionEvent.ACTION_DOWN) {
// 뷰 누름
Log.d("바로?", "onTouch: " + "다운");
oldXvalue = event.getX();
oldYvalue = event.getY();
number = v.getId();
testView.setId(number);
return true;
} else if (event.getAction() == MotionEvent.ACTION_MOVE) {
Log.d("바로?", "onTouch: " + "무브");
v.setX(v.getX() + (event.getX()) - oldXvalue);
v.setY(v.getY() + (event.getY()) - oldYvalue);
Log.d("viewTest", "onTouch: ");
Log.d("viewTest", "onTouch: ");
} else if (event.getAction() == MotionEvent.ACTION_UP) {
if (v.getX() < 0) {
v.setX(0);
} else if ((v.getX() + v.getWidth()) > parentWidth) {
v.setX(parentWidth - v.getWidth());
}
if (v.getY() < 0) {
v.setY(0);
} else if ((v.getY() + v.getHeight()) > parentHeight) {
v.setY(parentHeight - v.getHeight());
}
return true;
}
return true;
}
}
fit_me_constraintLayout.addView(imageView);
您已经使用它来添加正确的视图。布局将像列表1一样添加视图,因此您只需要删除该特定视图并再次添加它,它将位于最上面。因此,在任何需要执行brintToFront的地方。
fit_me_constraintLayout.removeView(imageView);
fit_me_constraintLayout.addView(imageView);
后编辑
cloth_bring_front_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
testView = fit_me_constraintLayout.findFocus().findViewById(number);
if(testView !=null){
fit_me_constraintLayout.removeView(testView );
fit_me_constraintLayout.addView(testView );}
}
});
让我知道是否有这句话