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
Bài liên quan
Sử dụng lệnh này bạn nhé
Ở 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