0
나는 사용자가 지정할 수있는 밀리 초 동안 이미지를 표시 할 간단한 안드로이드 앱을 만들려고합니다. 아래 코드는 11 초 후 마지막 이미지로 건너 뜁니다. 당신은 내 모습을보고 당신이 생각하는 것을 말해 줄 수 있습니까?안드로이드가 슬라이드 쇼 프레임을 건너 뛰는 경우
public void buttonPressed(View view){
ImageView canvas = findViewById(R.id.canvas);
delay(1000);
canvas.setImageResource(R.drawable.c1);
delay(1000);
canvas.setImageResource(R.drawable.c2);
delay(1000);
canvas.setImageResource(R.drawable.c3);
delay(1000);
canvas.setImageResource(R.drawable.c4);
delay(1000);
canvas.setImageResource(R.drawable.c5);
delay(5000);
canvas.setImageResource(R.drawable.c6);
delay(2000);
}
void delay(long ms){
long init = SystemClock.uptimeMillis();
while(SystemClock.uptimeMillis() != init+ms);
}
나는 C/C++ 대안을 공개하고 있습니다. 디스플레이를위한 '콜 커널 (call kernel)'기능이 있기를 바랬습니다. 앞으로 사용자가 사진을 선택하거나 가져갈 수있게하려고합니다. 나는 다른 접근 방식을 사용하고
는 :
public class MainActivity extends AppCompatActivity {
private ImageView canvas;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
canvas = findViewById(R.id.canvas);
}
public void buttonPressed(View view){
new STask().execute("start");
}
public class STask extends AsyncTask<String,Void,Void>{
@Override
protected Void doInBackground(String... strings) {
long start = SystemClock.uptimeMillis();
if(SystemClock.uptimeMillis() == start + 1000){
canvas.setImageResource(R.drawable.c2);
canvas.invalidate();
}else if(SystemClock.uptimeMillis() == start + 3000){
canvas.setImageResource(R.drawable.c3);
canvas.invalidate();
}else if(SystemClock.uptimeMillis() == start + 4500){
canvas.setImageResource(R.drawable.c4);
canvas.invalidate();
}else if(SystemClock.uptimeMillis() == start + 8000){
canvas.setImageResource(R.drawable.c5);
canvas.invalidate();
}else if(SystemClock.uptimeMillis() == start + 10000){
canvas.setImageResource(R.drawable.c6);
canvas.invalidate();
}
return null;
}
}
}
나는 지속적으로 백그라운드에서 실행하기 위해 AsyncTask를 필요합니다.
프레임을 건너 뛰고 있습니까? 아니면 너무 오래 지속되는 프레임이 있습니까? – mewa
프레임을 건너 뜁니다 –
'<'를'! ='로 바꾸면 도움이됩니까? – mewa