Я вижу упражнение во время работы Android Studio. Цель; Пирамида - это создать путь с разными числами сверху донизу.Пользовательский вид, проблемы с рендерингом в Android Studio
Я написал коды, но это приложение не работает. Я вижу это сообщение об ошибке:
Пользовательское представление Ekran не использует конструкторы View 2 или 3 аргумента; XML-атрибуты не будут работать.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.as.deneme2.MainActivity">
<com.example.as.deneme2.Ekran
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/ekran" />
</RelativeLayout>
MainActivity.java
public class MainActivity extends AppCompatActivity {
Ekran ekran;
Bulmaca[] bulmacalar;
@Override
protected void onCreate(Bundle savedInstanceState) {
Random random = new Random();
String[] bulmacaBilgileri = {"443252145336141522663", "234524435626143614625",
"161524246313452326215", "355424315665631243245", "653634542631351325265",
"543236612135654465432", "4453852793142686831417252765951383798349412830",
"345342468929768161215485464767167583529398619",
"2331549812654744213599187938583561657374389710",
"13492554832619237564412375353491475182356918"};
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
bulmacalar = new Bulmaca[bulmacaBilgileri.length];
for (int i = 0; i < bulmacaBilgileri.length; i++) {
bulmacalar[i] = new Bulmaca(bulmacaBilgileri[i]);
}
ekran = (Ekran) findViewById((R.id.ekran));
ekran.bulmaca = bulmacalar[random.nextInt(bulmacaBilgileri.length)];
ekran.hucreGenislik = displayMetrics.widthPixels/(ekran.bulmaca.getBuyukluk() + 2);
}
}
Ekran.java
public class Ekran extends View {
int hucreGenislik;
Bulmaca bulmaca;
public Ekran(Context context) {
super(context);
}
public void onDraw(Canvas canvas){
int x1,y1,x2,y2;
Paint siyah = new Paint(), mavi = new Paint(), yazi= new Paint();
siyah.setColor(Color.BLACK);
siyah.setStyle(Paint.Style.STROKE);
siyah.setStrokeWidth(1);
mavi.setColor(Color.BLUE);
mavi.setStyle(Paint.Style.STROKE);
mavi.setStrokeWidth(3);
if(bulmaca!=null){
for(int i=0;i<bulmaca.getBuyukluk();i++){
for (int j=0;j<=i;j++){
x1=(int)((bulmaca.getBuyukluk()-i+1+2*j)/2.0)*hucreGenislik;
y1=(i+1)*hucreGenislik;
x2=x1+hucreGenislik;
y2=y1+hucreGenislik;
Rect alan= new Rect(x1,y1,x2,y2);
if(bulmaca.oynananDeger(i)!=j) {
canvas.drawRect(alan, siyah);
}else {
canvas.drawRect(alan, mavi);
}
String sayi=""+bulmaca.sayi(i,j);
int fontBuyukluk =(int) (hucreGenislik/1.5);
yazi.setTextSize(fontBuyukluk);
Rect yaziBuyukluk= new Rect();
yazi.getTextBounds(sayi,0,1,yaziBuyukluk);
canvas.drawText(sayi,alan.left+(hucreGenislik-yaziBuyukluk.width())/2,
(float)(alan.top+hucreGenislik-yaziBuyukluk.height()/2),yazi);
}
}
}
}
public boolean onTouchEvent(MotionEvent event){
int x1,y1,x2,y2;
int x=(int) event.getX();
int y=(int) event.getY();
for (int i=0; i<bulmaca.getBuyukluk();i++){
for(int j=0;j<=i;j++){
x1=(int)((bulmaca.getBuyukluk()-i+1+2*j)/2.0)*hucreGenislik;
y1=(i+1)*hucreGenislik;
x2=x1+hucreGenislik;
y2=y1+hucreGenislik;
Rect alan=new Rect(x1,y1,x2,y2);
if(alan.contains(x,y)){
bulmaca.oyna(i,j);
invalidate();
return true;
}
}
}
return true;
}
}
Bulm aca.java
public class Bulmaca {
int buyukluk;
int[][] sayilar;
int[] oynama;
public Bulmaca(String bulmacaBilgisi){
int k=0;
buyukluk=(int) Math.sqrt(2*bulmacaBilgisi.length());
oynama= new int[buyukluk];
sayilar = new int[buyukluk][];
for(int i=0;i<buyukluk;i++){
oynama[i]=-1;
sayilar[i]=new int[i+1];
for(int j=0; j<=i;j++){
sayilar[i][j]=bulmacaBilgisi.charAt(k)-48;
k++;
}
}
}
public int sayi(int satir,int sutun){
return sayilar[satir][sutun];
}
public int oynananDeger(int satir){
return oynama[satir];
}
public void oyna(int satir,int deger){
oynama[satir]=deger;
}
public int getBuyukluk(){
return buyukluk;
}
}
Пользовательский вид требует наличия всех четырех конструкторов, иначе вы не сможете использовать его в XML, а также программу .add all constructor –