我的问题是: 我在EditText中输入文本,然后显示每个单独的字母,但可以使用2 ImageView显示。 我对ImageView没有任何问题,问题是当你输入单词进入for,尝试延迟显示第一个字母并继续其他字母,但它不起作用,只是发给我字的最后一个字母你输入
代码:
public class deletreo extends Activity {
TextView tv;
EditText etxt;
ImageView img,img2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.deletreo);
tv = new TextView(this);
etxt = (EditText)findViewById(R.id.text);
Button btn = (Button)findViewById(R.id.btn7);
btn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
letra();
}
});
}//fin bundle
public void letra() {
String t = "";
t = etxt.getText().toString();
String l = t.toLowerCase();
int p = l.length();
try{
for( int j = 0 ; j < p ; j++){
if(l.charAt(j) == 'a' || l.charAt(j) == 'A'){
img = (ImageView)findViewById(R.id.img);
img.setImageResource(R.drawable.aa);
img2 = (ImageView)findViewById(R.id.img2);
img2.setImageResource(R.drawable.image_1);
}
if(l.charAt(j) == 'b' || l.charAt(j) == 'B'){
img = (ImageView)findViewById(R.id.img);
img.setImageResource(R.drawable.bb);
img2 = (ImageView)findViewById(R.id.img2);
img2.setImageResource(R.drawable.image_2);
}
if(l.charAt(j) == 'c' || l.charAt(j) == 'C'){
img = (ImageView)findViewById(R.id.img);
img.setImageResource(R.drawable.cc);
img2 = (ImageView)findViewById(R.id.img2);
img2.setImageResource(R.drawable.image_3);
}
if(l.charAt(j) == 'd' || l.charAt(j) == 'D'){
img = (ImageView)findViewById(R.id.img);
img.setImageResource(R.drawable.dd);
img2 = (ImageView)findViewById(R.id.img2);
img2.setImageResource(R.drawable.image_4);
}
if(t.charAt(j) == 'e' || t.charAt(j) == 'E'){
img = (ImageView)findViewById(R.id.img);
img.setImageResource(R.drawable.ee);
img2 = (ImageView)findViewById(R.id.img2);
img2.setImageResource(R.drawable.image_5);
}
if(t.charAt(j) == 'f' || t.charAt(j) == 'F'){
img = (ImageView)findViewById(R.id.img);
img.setImageResource(R.drawable.ff);
img2 = (ImageView)findViewById(R.id.img2);
img2.setImageResource(R.drawable.image_6);
}
if(t.charAt(j) == 'g' || t.charAt(j) == 'G'){
img = (ImageView)findViewById(R.id.img);
img.setImageResource(R.drawable.gg);
img2 = (ImageView)findViewById(R.id.img2);
img2.setImageResource(R.drawable.image_7);
}
if(t.charAt(j) == 'h' || t.charAt(j) == 'H'){
img = (ImageView)findViewById(R.id.img);
img.setImageResource(R.drawable.hh);
img2 = (ImageView)findViewById(R.id.img2);
img2.setImageResource(R.drawable.image_8);
}
if(t.charAt(j) == 'i' || t.charAt(j) == 'I'){
img = (ImageView)findViewById(R.id.img);
img.setImageResource(R.drawable.ii);
img2 = (ImageView)findViewById(R.id.img2);
img2.setImageResource(R.drawable.image_9);
}
if(t.charAt(j) == 'j' || t.charAt(j) == 'J'){
img = (ImageView)findViewById(R.id.img);
img.setImageResource(R.drawable.jj);
img2 = (ImageView)findViewById(R.id.img2);
img2.setImageResource(R.drawable.image_10);
}
if(t.charAt(j) == 'k' || t.charAt(j) == 'K'){
img = (ImageView)findViewById(R.id.img);
img.setImageResource(R.drawable.kk);
img2 = (ImageView)findViewById(R.id.img2);
img2.setImageResource(R.drawable.image_11);
}
if(t.charAt(j) == 'l' || t.charAt(j) == 'L'){
img = (ImageView)findViewById(R.id.img);
img.setImageResource(R.drawable.ll);
img2 = (ImageView)findViewById(R.id.img2);
img2.setImageResource(R.drawable.image_12);
}
if(t.charAt(j) == 'm' || t.charAt(j) == 'M'){
img = (ImageView)findViewById(R.id.img);
img.setImageResource(R.drawable.mm);
img2 = (ImageView)findViewById(R.id.img2);
img2.setImageResource(R.drawable.image_13);
}
if(t.charAt(j) == 'n' || t.charAt(j) == 'N'){
img = (ImageView)findViewById(R.id.img);
img.setImageResource(R.drawable.nn);
img2 = (ImageView)findViewById(R.id.img2);
img2.setImageResource(R.drawable.image_14);
}
if(t.charAt(j) == 'ñ' || t.charAt(j) == 'Ñ'){
img = (ImageView)findViewById(R.id.img);
img.setImageResource(R.drawable.nini);
img2 = (ImageView)findViewById(R.id.img2);
img2.setImageResource(R.drawable.image_15);
}
if(t.charAt(j) == 'o' || t.charAt(j) == 'O'){
img = (ImageView)findViewById(R.id.img);
img.setImageResource(R.drawable.oo);
img2 = (ImageView)findViewById(R.id.img2);
img2.setImageResource(R.drawable.image_16);
}
if(t.charAt(j) == 'p' || t.charAt(j) == 'P'){
img = (ImageView)findViewById(R.id.img);
img.setImageResource(R.drawable.pp);
img2 = (ImageView)findViewById(R.id.img2);
img2.setImageResource(R.drawable.image_17);
}
if(t.charAt(j) == 'q' || t.charAt(j) == 'Q'){
img = (ImageView)findViewById(R.id.img);
img.setImageResource(R.drawable.qq);
img2 = (ImageView)findViewById(R.id.img2);
img2.setImageResource(R.drawable.image_18);
}
if(t.charAt(j) == 'r' || t.charAt(j) == 'R'){
img = (ImageView)findViewById(R.id.img);
img.setImageResource(R.drawable.rr);
img2 = (ImageView)findViewById(R.id.img2);
img2.setImageResource(R.drawable.image_19);
}
if(t.charAt(j) == 's' || t.charAt(j) == 'S'){
img = (ImageView)findViewById(R.id.img);
img.setImageResource(R.drawable.ss);
img2 = (ImageView)findViewById(R.id.img2);
img2.setImageResource(R.drawable.image_20);
}
if(t.charAt(j) == 't' || t.charAt(j) == 'T'){
img = (ImageView)findViewById(R.id.img);
img.setImageResource(R.drawable.tt);
img2 = (ImageView)findViewById(R.id.img2);
img2.setImageResource(R.drawable.image_21);
}
if(t.charAt(j) == 'u' || t.charAt(j) == 'U'){
img = (ImageView)findViewById(R.id.img);
img.setImageResource(R.drawable.uu);
img2 = (ImageView)findViewById(R.id.img2);
img2.setImageResource(R.drawable.image_22);
}
if(t.charAt(j) == 'v' || t.charAt(j) == 'V'){
img = (ImageView)findViewById(R.id.img);
img.setImageResource(R.drawable.vv);
img2 = (ImageView)findViewById(R.id.img2);
img2.setImageResource(R.drawable.image_23);
}
if(t.charAt(j) == 'w' || t.charAt(j) == 'W'){
img = (ImageView)findViewById(R.id.img);
img.setImageResource(R.drawable.ww);
img2 = (ImageView)findViewById(R.id.img2);
img2.setImageResource(R.drawable.image_24);
}
if(t.charAt(j) == 'x' || t.charAt(j) == 'X'){
img = (ImageView)findViewById(R.id.img);
img.setImageResource(R.drawable.xx);
img2 = (ImageView)findViewById(R.id.img2);
img2.setImageResource(R.drawable.image_25);
}
if(t.charAt(j) == 'y' || t.charAt(j) == 'Y'){
img = (ImageView)findViewById(R.id.img);
img.setImageResource(R.drawable.yy);
img2 = (ImageView)findViewById(R.id.img2);
img2.setImageResource(R.drawable.image_26);
}
if(t.charAt(j) == 'z' || t.charAt(j) == 'Z'){
img = (ImageView)findViewById(R.id.img);
img.setImageResource(R.drawable.zz);
img2 = (ImageView)findViewById(R.id.img2);
img2.setImageResource(R.drawable.image_27);
}
Thread.sleep(2000);
}//fin del for
}//fin try
catch (InterruptedException e) {
e.printStackTrace();
}
finally{}
}//fin letra();
}//fin
答案 0 :(得分:1)
在您调用的for
循环的底部:
Thread.sleep(2000);
这将简单地阻止UI线程2秒。由于UI线程基本上是应用程序的生命线,因此上述语句将暂停所有代码的执行。如果你阻塞主线程,循环外的代码就不能神奇地继续运行,这就是你的UI在每次迭代后都不会更新的原因。
代替直接与线程交互,可能更容易将延迟Runnable
发布到Handler
或使用其他一些模拟'ticks'的机制(例如Timer
,{{ 1}}和TimerTask
浮现在脑海中。每按一次,您就可以显示下一个字符。
答案 1 :(得分:0)
您希望将此操作置于单独的线程中,然后使用Handler
暂停并恢复您刚刚创建的新线程。这样做是为了让你不会冻结主UI线程,这是默认情况下运行Android的东西。
我用Google搜索&#39; android在更改之间添加延迟&#39;得到了一堆结果,其中一个就是:Add a delay to Progress Dialog
此外,使用switch
语句代替您的巨型级联if/else
语句。它将使您的代码更加整洁,更高效。