Ошибка в коде программы. При написании команды setLayoutParams() происходит вылет
public class DeskSelection extends AppCompatActivity {
private ImageView c2, c3, c4, c5, c6, c7, c8, c9, c10, b2, b3, b4, b5, b6, b7, b8, b9, b10, d2, d3, d4, d5, d6, d7, d8, d9, d10,
h2, h3, h4, h5, h6, h7, h8, h9, h10, s2, s3, s4, s5, s6, s7, s8, s9, s10, sq, hq, dq, cq, sj, dj, hj, cj, ck, dk, hk, sk,
sa, da, ha, ca, arrowRight, arrowLeft;
public List<ImageView> cards;w
static int counter = 0;
private ViewGroup mMoveLayout;
private int mX;
private int mY;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.desk_selection);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(100, 100);
mMoveLayout = (ViewGroup) findViewById(R.id.move);
c2 = findViewById(R.id.c2); c3 = findViewById(R.id.c3); c4 = findViewById(R.id.c4); c5 = findViewById(R.id.c6);
c7= findViewById(R.id.c7); c8 = findViewById(R.id.c9); c9 = findViewById(R.id.c9); h2 = findViewById(R.id.h2);
s2 = findViewById(R.id.s2); s3 = findViewById(R.id.s3); d3 = findViewById(R.id.d3); h3 = findViewById(R.id.h3);
d3 = findViewById(R.id.d3); arrowLeft = findViewById(R.id.arrowLeft); arrowRight = findViewById(R.id.arrowRight);
d4 = findViewById(R.id.d4); h4 = findViewById(R.id.h4);
cards = new ArrayList<>(Arrays.asList(c3, d3, h3, s3, c4, d4, h4, s4, c5, d5, h5, s5, c6, d6, h6, s6,
c7, d7, h7, s7, c8, d8, h8, s8, c9, d9, h9, s9, c10, d10, h10, s10, cj, dj, hj, sj, cq, dq, hq, sq, ck, dk, hk, sk, ca, da, ha, sa, c2, h2, s2));
arrowRight.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Thread t0, t1, t2, t3, t_1, t_2, t_3;
RelativeLayout.LayoutParams lParams1 = new RelativeLayout.LayoutParams(110, 200),
lParams_1 = new RelativeLayout.LayoutParams(110, 200),
lParams2 = new RelativeLayout.LayoutParams(110, 200),
lParams_2 = new RelativeLayout.LayoutParams(110, 200),
lParams3 = new RelativeLayout.LayoutParams(110, 200),
lParams_3 = new RelativeLayout.LayoutParams(110, 200);
RelativeLayout.LayoutParams lParams0 = (RelativeLayout.LayoutParams) cards.get(counter).getLayoutParams();
int cnt = 0;
for(int i = counter - 3; cnt < 7;i++)
{
if (i == 50 ) i = 0;
else if (i < 0) i = 50 + i + 1;
switch (cnt)
{
case 0:
lParams_3 = (RelativeLayout.LayoutParams) cards.get(i % cards.size()).getLayoutParams();
t_3 = new Thread (new ThreadRight(lParams_3, cards.get(i % cards.size())));
Log.d("Пока", "С первым в порядке");
t_3.start();
break;
case 1:
lParams_2 = (RelativeLayout.LayoutParams) cards.get(i % cards.size()).getLayoutParams();
t_2 = new Thread (new ThreadRight(lParams_2, cards.get(i % cards.size())));
t_2.start();
break;
case 2:
lParams_1 = (RelativeLayout.LayoutParams) cards.get(i % cards.size()).getLayoutParams();
t_1 = new Thread (new ThreadRight(lParams_1, cards.get(i % cards.size())));
Log.d("Пока", "С первым в порядке");
t_1.start();
break;
case 3:
lParams0 = (RelativeLayout.LayoutParams) cards.get(i % cards.size()).getLayoutParams();
t0 = new Thread (new ThreadRight(lParams0, cards.get(i % cards.size())));
t0.start();
break;
case 4:
lParams1 = (RelativeLayout.LayoutParams) cards.get(i % cards.size()).getLayoutParams();
t1 = new Thread (new ThreadRight(lParams1, cards.get(i % cards.size())));
t1.start();
break;
case 5:
lParams2 = (RelativeLayout.LayoutParams) cards.get(i % cards.size()).getLayoutParams();
t2 = new Thread (new ThreadRight(lParams2, cards.get(i % cards.size())));
t2.start();
break;
case 6:
lParams3 = (RelativeLayout.LayoutParams) cards.get(i % cards.size()).getLayoutParams();
t3 = new Thread (new ThreadRight(lParams3, cards.get(i % cards.size())));
t3.start();
if (counter == 50) counter = 0;
else counter++;
}
cnt++;
}
}
});
}
class ThreadRight implements Runnable
{
RelativeLayout.LayoutParams params;
ImageView iv;
ThreadRight( RelativeLayout.LayoutParams params, ImageView iv)
{
this.iv = iv;
this.params = params;
}
public void run() {
Display display = getWindowManager().getDefaultDisplay();
if(params.leftMargin == (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, 673, getResources().getDisplayMetrics()) && params. rightMargin == (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, 38, getResources().getDisplayMetrics()))
{
while((int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, params.leftMargin, getResources().getDisplayMetrics()) != (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, display.getWidth(), getResources().getDisplayMetrics()))
{
params.setMargins((int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, params.leftMargin++, getResources().getDisplayMetrics()), (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, params.topMargin, getResources().getDisplayMetrics()),
(int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, params.rightMargin--, getResources().getDisplayMetrics()),
(int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, params.bottomMargin, getResources().getDisplayMetrics()));
try {
Thread.sleep(10);
} catch (InterruptedException e){}
Log.d("Пока", "" + (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, display.getWidth(), getResources().getDisplayMetrics()));
}
iv.setVisibility(View.INVISIBLE);
}
else
{
int originParams = (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, params.leftMargin, getResources().getDisplayMetrics());
Log.d("Пока", "" +
(int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, params.leftMargin, getResources().getDisplayMetrics()) + " " +
originParams) ;
int cnt = 0;
Log.d("", "111 = " + (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,111, getResources().getDisplayMetrics()));
Log.d("", "originParams + 111 = " + ((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 111, getResources().getDisplayMetrics()) +
(int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, params.leftMargin, getResources().getDisplayMetrics())));
while( originParams + (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, 111, getResources().getDisplayMetrics()) > (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, params.leftMargin, getResources().getDisplayMetrics()))
{
Log.d("", "" + (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, params.leftMargin, getResources().getDisplayMetrics()));
params.leftMargin += (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, 1, getResources().getDisplayMetrics());
params.rightMargin -= (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, 1, getResources().getDisplayMetrics());
try {
Thread.sleep(10);
} catch (InterruptedException e){}
iv.setLayoutParams(params);
if (cnt % 10 == 0 ) Log.d("", "" + (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, params.leftMargin, getResources().getDisplayMetrics()));
cnt++;
}
}
}
}
}
Код xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/move"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background"
android:clickable="true"
android:focusable="true"
android:orientation="horizontal"
>
<ImageView
android:id="@+id/arrowLeft"
android:layout_width="42dp"
android:layout_height="59dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_centerVertical="true"
android:layout_marginStart="1dp"
android:layout_marginTop="137dp"
android:contentDescription="@string/arrow1"
app:srcCompat="@drawable/arrow" />
<ImageView
android:id="@+id/arrowRight"
android:layout_width="42dp"
android:layout_height="35dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginStart="757dp"
android:layout_marginTop="139dp"
android:layout_marginEnd="8dp"
android:contentDescription="@string/arrow2"
android:rotation="180"
app:srcCompat="@drawable/arrow" />
<ImageView
android:id="@+id/d6"
android:layout_width="32dp"
android:layout_height="50dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="160dp"
android:layout_marginTop="15dp"
android:contentDescription="@string/b6"
android:visibility="invisible"
app:srcCompat="@drawable/d6" />
<ImageView
android:id="@+id/c8"
android:layout_width="32dp"
android:layout_height="50dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_centerVertical="true"
android:layout_marginStart="671dp"
android:layout_marginTop="60dp"
android:contentDescription="@string/c8"
android:visibility="invisible"
app:srcCompat="@drawable/c8" />
<ImageView
android:id="@+id/c9"
android:layout_width="32dp"
android:layout_height="50dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginStart="614dp"
android:layout_marginTop="64dp"
android:contentDescription="@string/c8"
android:visibility="invisible"
app:srcCompat="@drawable/c9" />
<ImageView
android:id="@+id/jd"
android:layout_width="32dp"
android:layout_height="51dp"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:layout_centerVertical="true"
android:layout_marginEnd="501dp"
android:layout_marginBottom="327dp"
android:contentDescription="@string/jb"
android:visibility="invisible"
app:srcCompat="@drawable/dj" />
<ImageView
android:id="@+id/c2"
android:layout_width="94dp"
android:layout_height="122dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:layout_marginStart="231dp"
android:layout_marginTop="219dp"
android:layout_marginEnd="489dp"
android:layout_marginBottom="52dp"
android:contentDescription="@string/c2"
app:srcCompat="@drawable/c2" />
<ImageView
android:id="@+id/c3"
android:layout_width="94dp"
android:layout_height="122dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:layout_marginStart="338dp"
android:layout_marginTop="219dp"
android:layout_marginEnd="374dp"
android:layout_marginBottom="54dp"
android:contentDescription="@string/c3"
app:srcCompat="@drawable/c3" />
<ImageView
android:id="@+id/c6"
android:layout_width="32dp"
android:layout_height="50dp"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_centerInParent="true"
android:layout_marginTop="54dp"
android:layout_marginEnd="203dp"
android:contentDescription="@string/c6"
android:visibility="invisible"
app:srcCompat="@drawable/c6" />
<ImageView
android:id="@+id/c5"
android:layout_width="32dp"
android:layout_height="50dp"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="159dp"
android:layout_marginEnd="58dp"
android:contentDescription="@string/c5"
android:visibility="invisible"
app:srcCompat="@drawable/c5" />
<ImageView
android:id="@+id/c7"
android:layout_width="32dp"
android:layout_height="50dp"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="38dp"
android:layout_marginEnd="251dp"
android:contentDescription="@string/c7"
android:visibility="invisible"
app:srcCompat="@drawable/c7" />
<ImageView
android:id="@+id/d2"
android:layout_width="32dp"
android:layout_height="50dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="176dp"
android:layout_marginTop="157dp"
android:contentDescription="@string/d2"
android:visibility="invisible"
app:srcCompat="@drawable/d2" />
<ImageView
android:id="@+id/h2"
android:layout_width="94dp"
android:layout_height="122dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:layout_marginStart="117dp"
android:layout_marginTop="219dp"
android:layout_marginEnd="603dp"
android:layout_marginBottom="52dp"
android:contentDescription="@string/s2"
app:srcCompat="@drawable/h2" />
<ImageView
android:id="@+id/s2"
android:layout_width="94dp"
android:layout_height="122dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:layout_marginStart="6dp"
android:layout_marginTop="219dp"
android:layout_marginEnd="715dp"
android:layout_marginBottom="52dp"
android:contentDescription="@string/s2"
app:srcCompat="@drawable/s2" />
<ImageView
android:id="@+id/d3"
android:layout_width="94dp"
android:layout_height="122dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:layout_marginStart="450dp"
android:layout_marginTop="219dp"
android:layout_marginEnd="262dp"
android:layout_marginBottom="52dp"
app:srcCompat="@drawable/d3" />
<ImageView
android:id="@+id/h3"
android:layout_width="94dp"
android:layout_height="122dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:layout_marginStart="563dp"
android:layout_marginTop="219dp"
android:layout_marginEnd="150dp"
android:layout_marginBottom="52dp"
app:srcCompat="@drawable/h3" />
<ImageView
android:id="@+id/s3"
android:layout_width="94dp"
android:layout_height="122dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:layout_marginStart="673dp"
android:layout_marginTop="219dp"
android:layout_marginEnd="38dp"
android:layout_marginBottom="52dp"
app:srcCompat="@drawable/s3" />
<ImageView
android:id="@+id/c4"
android:layout_width="32dp"
android:layout_height="50sp"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="157dp"
android:layout_marginEnd="239dp"
android:visibility="invisible"
app:srcCompat="@drawable/c4" />
<ImageView
android:id="@+id/d4"
android:layout_width="32dp"
android:layout_height="50dp"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="156dp"
android:layout_marginEnd="192dp"
android:visibility="invisible"
app:srcCompat="@drawable/d4" />
<ImageView
android:id="@+id/h4"
android:layout_width="32dp"
android:layout_height="50dp"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="159dp"
android:layout_marginEnd="148dp"
android:visibility="invisible"
app:srcCompat="@drawable/h4" />
<ImageView
android:id="@+id/s4"
android:layout_width="32dp"
android:layout_height="50dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="671dp"
android:layout_marginTop="160dp"
android:visibility="invisible"
app:srcCompat="@drawable/s4" />
<ImageView
android:id="@+id/ha"
android:layout_width="32dp"
android:layout_height="50dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="97dp"
android:layout_marginTop="157dp"
android:visibility="invisible"
app:srcCompat="@drawable/ha" />
<ImageView
android:id="@+id/sa"
android:layout_width="32dp"
android:layout_height="50dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="135dp"
android:layout_marginTop="156dp"
android:visibility="invisible"
app:srcCompat="@drawable/sa" />
<ImageView
android:id="@+id/ca"
android:layout_width="32dp"
android:layout_height="50dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="54dp"
android:layout_marginTop="157dp"
android:visibility="invisible"
app:srcCompat="@drawable/ca" />
</RelativeLayout>
Ответы (1 шт):
Автор решения: Arty Morris
→ Ссылка
Судя по всему, вы пытаетесь вывести какую-то информацию на UI. Отсюда и ошибка. Как вариант, попробуйте
runOnUiThread(new Runnable() {
@Override
public void run() {
// Stuff that updates the UI
}
});
Я у себя использую вывод в UI:
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
Toast.makeText(MainService.this, "ACTION_NO_USB", Toast.LENGTH_LONG).show();
}
});
А так, на будущее, для ускорения отладки, копируете ошибку в строку поиска, и находите ответ. В большинстве случаев это помогает Ещё больше ответов есть здесь https://stackoverflow.com/questions/5161951/android-only-the-original-thread-that-created-a-view-hierarchy-can-touch-its-vi