01/10/2018, 11:39

Tạo 1 clip drawable từ Resource để set cho ImageView Android

Chào các bác, em đang tạo 1 imageview nhưng em muốn set background từ code chứ k set cứng ở phần layout ạ. Code của em đây

import android.content.Context;
import android.content.res.Resources;
import android.graphics.Canvas;
import android.graphics.ColorFilter;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.ClipDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import android.media.Image;
import android.support.annotation.IntRange;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutCompat;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import java.util.Map;
import java.util.Random;
import java.*;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    Random rdImage, rdQuestion;
    Button btn;
    ImageView girl;
    TextView hoi;
    EditText traloi;
    int irdImage, irdQuestion;
    ArrayList<QuestionStore> dulieu;
    int soCau = 0;
    int[] img = {R.drawable.img1,R.drawable.img2,R.drawable.img3,R.drawable.img4,R.drawable.img5,
            R.drawable.img6,R.drawable.img7,R.drawable.img8,R.drawable.img9,R.drawable.img10};
// ở đây em tạo mảng id của ảnh trong drawable để lấy random ảnh
    ClipDrawable cldr;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        rdImage = new Random();
        rdQuestion = new Random();
        girl = (ImageView)findViewById(R.id.imageFlip);
        btn = (Button)findViewById(R.id.submit);
        hoi = (TextView)findViewById(R.id.question);
        traloi = (EditText)findViewById(R.id.answer);
        btn.setOnClickListener(this);
        dulieu = new ArrayList<QuestionStore>();
        dulieu.add(new QuestionStore(1,"Ai là vua nước ta năm 999?","Hùng Vương"));
        irdImage = rdImage.nextInt(10) + 1;
        irdQuestion = rdQuestion.nextInt(10) + 1;
        //girl.setImageResource(img[irdImage]);
        Resources res = getResources(); // ở đây em tạo 1 resource
        Drawable drawable = res.getDrawable(img[irdImage]); // tạo mới 1 drawable lấy resource theo id từ mảng
        cldr = new ClipDrawable(drawable,Gravity.CENTER,ClipDrawable.HORIZONTAL); // set clipdrawable mới cho nó
        for(QuestionStore account : dulieu) {
            if(account.getIdd() == 1) {
                hoi.setText(account.getCauhoi().toString());
                soCau = 1;
            }
        }

    }

    @Override
    public void onClick(View view) {
        for(QuestionStore account : dulieu) {
            if(account.getIdd() == 1) {
                if(account.getCautraloi().toString().equals(traloi.getText().toString())){
                    cldr.setLevel(cldr.getLevel() + 2000);
                }else{

                }

            }
        }
    }

}

nhưng khi chạy thì nó k áp dụng. Nó bị gạch ngang chỗ getDrawable

Drawable drawable = res.getDrawable(img[irdImage]);

Phiên bản em code là 4.0 API 14 nó báo lỗi chỗ gạch ngang là : the inspection reports where deprecated code is used in the specified scope

Tynk Huynk viết 13:44 ngày 01/10/2018

Sử dụng lệnh này bạn nhé

imageView.setImageResource(R.drawable.ten_drawble);
bphvcg viết 13:43 ngày 01/10/2018

Ở code mình có dùng đó bạn, ý mình từ resources mình set đó mình muốn tạo clipdrawable có được không và cách làm như thế nào ấy

Bài liên quan
0