Hỏi về gán hình ảnh với số nguyên trong android

Chào các anh chị, cho em hỏi có cách nào gán một hình ảnh cho 1 số nguyên integer không

Cho mình “xem” mục đích của bạn.
Có thể bạn muốn mảng hoặc Map.

2 Likes

Bạn gán các hình ảnh vào mảng rồi ngẫu nhiên ra 1 số từ 0 - 5 (theo phần tử mảng) giá trị rơi vào phần tử nào thì làm hình ở phần tử đó sáng lên.
Không rõ bạn dùng gì để hiển thị hình ảnh nhỉ? Dùng View hay tự vẽ bằng Graphics?

3 Likes

A post was merged into #5

Có gì không ổn nào? :thinking:
Hình không hiện lên à?

Chỉ có vấn đề chỗ nextInt() thôi. Phải là nextInt(6) tức giá trị của number16.


Có vấn đề gì thì mô tả chi tiết!

3 Likes

App mình thấy chạy ok, nhưng ý mình là như thế này. ví dụ nó random xong 3 mặt xúc xắc được ba con:nai, cua, cá vậy làm sao để mình thêm 1 hình ảnh động nằm trên mấy chữ nai cua cá vậy
Vd như hình

Các chữ (Bau, Cua,…) đó là hình hay chữ vậy?
Bạn dùng gì hiện những chữ đó?
Đầy đủ thông tin thì mới giúp được chứ!

2 Likes

Cảm ơn bạn vì đã trả lời, mấy chữ bầu cua tôm cá đó mình sử dụng imageView bạn, (ImageView) findViewById

Bạn muốn có ngôi sao khi mục đó được chọn.

  • Thêm ImageView để hiện ngôi sao kế bên cho mỗi Bau, Cua,…
  • Ban đầu cho tất cả ẩn.
  • Khi ra ô nào thì cho ngôi sao kế bên hiện lại.

Cách khác là Có 2 bộ hình: 1 cho khi chưa chọn, 1 là cho khi đã chọn. Chỉ việc gán lại hình ảnh cho ImageView.
Ví dụ nhé:

// Các mảng cần thiết
Drawable[] de, se;
ImageView[] im;

// Khi khởi động ứng dụng, chắc là onCreate()
de = new Drawable[6]; // bộ hình khi chưa chọn
se = new Drawable[6]; // bộ hình khi được chọn
for(int i = 0; i < 6; ++i){
    de[i] = getResources().getDrawable(getResources().getIdentifier("item_de"+i, "drawable", getPackageName()));
    se[i] = getResources().getDrawable(getResources().getIdentifier("item_se"+i, "drawable", getPackageName()));
}
im = new ImageView[6]; // 6 ImageView cho Bau Cua,...
im[0] = (ImageView)findById(...);
im[1] = (ImageView)findById(...);
// ...
im[5] = (ImageView)findById(...);


// Khi lắc xúc xắc
public void showItems(int ramdom1, int random2, int random3){
     // ... 
    // Gán các hình về chưa chọn.
    for(int i = 0; i < 6; ++i){
        im[i].setImageDrawable(de[i]);
    }
    // Chuyển từng hình về chọn
    im[random1].setImageDrawable(se[random1]);
    im[random2].setImageDrawable(se[random2]);
    im[random3].setImageDrawable(se[random3]);
    // ...
}

2 Likes

Thank bạn,mình làm dc rồi. Mình hỏi tý nửa, ta có thể gán trực tiếp hình ảnh với số

Trôi mất tiêu bài này.
Ý bạn gán trực tiếp với số là sao?
Dùng mảng và truy xuất bằng chỉ số (index) là số rồi còn gì nữa.

3 Likes

Sai ở đây. Khi vào lại ứng dụng thì chạy luôn bài nhạc. Mặc dù hình vẫn để cái loa tắt.

Bạn nên viết 2 phương thức để và có 1 biến (int) để xác định người dùng đang muốn bật hay tắt âm hoặc đang ngoài ứng dụng, không phụ thuộc vào isPlaying().

/*
* 0: Chưa chạy khi khởi tạo.
* 1: Đang chạy.
* 2: Tạm dừng do nhấn vào nút loa tắt.
* 3: Tạm dừng do ngoài ứng dụng.
*/
private int mPState = 0;
private void play(){
    if(mPState != 1){
        mP.start();
        play.setBackgroundResource(...); // Hình loa bật.
        mPState = 1;
    }
}

private void pause(boolean appClose){
    if(mPState == 1){
        mP.pause();
        play.setBackgroundResource(...); // Hình loa tắt.
        mPState = appClose?3:2; // Trạng thái dựa vào do đóng hay nhấn vào hình.
    }
}

// Gọi pause(false) khi người dùng nhấn vào hình loa.

        @Override
        protected void onStart() {
            super.onStart();
            if (mPState == 3){ // Nếu đã tạm dừng do đóng ứng dụng
                play(); // Chạy tiếp.
            }
        }

        @Override
        protected void onStop() {
            super.onStop();
            pause(true); // Tạm dừng do thoát ứng dụng.
        }

Mọi lệnh gọi bật/tắt nhạc thì gọi đến 2 phương thức này.
Cơ bản là vậy, bạn có thể hoàn thiện theo cách tốt hơn.

2 Likes

Lỗi gì chứ?

1 Like

Thank bạn vì đã support, mình gọi pause(); thì nó bắc buộc phải mình gọi pause(true); hoặc mình gọi pause(false); nhưng để như vậy thì không được

Mình có nhắc rồi mà.

3 Likes

thank bạn, mình không để ý, mình test xem đã.

thank bạn nha, pro pro.

3 posts were merged into an existing topic: Topic lưu trữ các post off-topic - version 3

3 posts were split to a new topic: Giữ cache và data của app lưu trong máy sau khi người dùng thoát app

Cho mình hỏi sao mình sử dụng button để chạy âm thanh mà nó không chạy vậy

private void ActionPlay(){
    BtnPlay.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            
            MediaPlayer mP = MediaPlayer.create(Game.this,R.raw.amthanh);

            mP.start();
            mP.release();



        }
    });
}
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?