私の質問は私のアプリで駐車場予約システムを表示しようとしています。空きスペースをすべて緑色で表示したい場合、ユーザーのブックスペースで同じ領域が赤色に変わるようにする必要があります。下の画像は、次のとおりです。画像内の特定の領域の背景色を変更し、ユーザーが同じ領域をクリックしたときに色を変える方法
私は非常に多くの方法を試してみましたが、任意の成功を取得できませんでした。今
public class CarParkingActivity extends AppCompatActivity {
private ImageMap mImageMap;
private RelativeLayout stage;
private RelativeLayout.LayoutParams lparams;
private SparseArray<ImageMap.Bubble> spaces;
private String title;
Tracker mytracker;
private List<String> blocks; //list of 'occupied' spaces
@Override
protected void onCreate(Bundle savedInstanceCarParking) {
super.onCreate(savedInstanceCarParking);
setContentView(R.layout.activity_car_parking);
blocks = new ArrayList<>();
blocks.add("p1");
blocks.add("p3");
blocks.add("p6");
blocks.add("p13");
blocks.add("p9");
blocks.add("p200");
// find the image map in the view
mImageMap = (ImageMap) findViewById(R.id.map);
stage = (RelativeLayout) findViewById(R.id.stage);
mImageMap.setImageResource(R.drawable.carpark2);
title = getIntent().getStringExtra("option");
getSupportActionBar().setTitle(title);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
// add a click handler to react when areas are tapped
mImageMap.addOnImageMapClickedHandler(new ImageMap.OnImageMapClickedHandler() {
@Override
public void onImageMapClicked(int id, ImageMap imageMap) {
mImageMap.showBubble(id);
if (blocks.contains(imageMap.getArea(id).getName())) {
MySingleton.getInstance().showToast(getApplicationContext(), "Sorry, this car space is occupied");
spaces = mImageMap.getParkings();
drawParkSpace(spaces.get(id)._x, spaces.get(id)._y, false);
} else {
//open booking view
Intent it = new Intent(getApplicationContext(), BookingCarParkingActivity.class);
it.putExtra("parkId", imageMap.getArea(id).getName().toUpperCase());
startActivity(it);
}
}
@Override
public void onBubbleClicked(int id) {
Log.i("app", "onBubbleClicked: id: " + id);
}
});
}
/**
* Draw red or green rect on the view.
*
* @param x
* @param y
* @param isOk: true equals green
*/
private void drawParkSpace(float x, float y, Boolean isOk) {
Drawable imageView = null;
imageView = ContextCompat.getDrawable(CarParkingActivity.this, isOk ? R.drawable.carok : R.drawable.carnook);
lparams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
ImageView imageView1 = new ImageView(CarParkingActivity.this);
imageView1.setImageDrawable(imageView);
imageView1.setLayoutParams(lparams);
imageView1.setX(x);
imageView1.setY(y);
stage.addView(imageView1);
}
@Override
protected void onResume() {
super.onResume();
mImageMap.loadMap("menu"); //load menu mapped image
//List<ImageMap.PolyArea> list = mImageMap.getPolys();
//ImageMap.PolyArea poly = list.get(0);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
this.finish();
return true;
}
return false;
}
}
各車がクリック可能であるが、私は、画像に示されており、同地域が必要とする必要があるユーザー帳スペースを赤くしたときのように色を変更する必要があります。以下は、私のコードです。この仕事を整理するのを手伝ってください。私はアンドロイドでは新しいですが、この問題を解決するために努力しています。私の質問が十分に強くなければ、私の謝罪を受け入れてください。また、事前に多くのおかげです。これは私があなたの必要性のためのスペース
投稿可能ImageMapクラス – Nas
返信いただきありがとうございますimageMapクラス –
お返事ありがとうございます –