[問題] image_background變換,程式delay的設計
原PO是個才剛剛接觸JAVA和Android的初學者,
目前想寫一個可以將輸入的input轉成bit,
在根據bit中1 or 0來決定螢幕輸出為白色或黑色,
例如:
1---白色
0---黑色
若input =a <=> 001
則輸出應為 黑色黑色白色
另外,希望每個輸出的顏色會有持續一段時間,
以上述例子來說輸出即為:
< 黑色 > < 黑色 > < 白色 >
持續時間 持續時間 持續時間
<以下為我的Code>
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public Runnable ChangeColor2White(ImageView im){
im.setBackgroundResource(R.drawable.white);
return null;
}
public Runnable ChangeColor2black(ImageView im){
im.setBackgroundResource(R.drawable.black);
return null;
}
public void cvOnClick(View myView){
EditText Input = (EditText) findViewById(R.id.myText1);
String data = Input.getText().toString();
char dataArray[] = data.toCharArray();
Vector<Integer> v = new Vector<Integer>();
TextView Output = (TextView) findViewById(R.id.myText2);
ImageView im = (ImageView) findViewById(R.id.myImage1);
Handler handler = new Handler();
for(int i=0;i<data.length();i++){
int temp = (int)dataArray[i];int par1,par2,par3,par4,par5,par6 = 0;
if(temp!=97){
if(temp>=48 && temp<=57) //0~10 (0~9)
temp-=48;
else if(temp>=65 && temp<=90) //A~Z (10~35)
temp-=55;
else if(temp>=98 && temp<=122) //a~z (36~61)
temp-=61;
else
temp =62;
par1 = temp/32;
if(par1>0){
par1 = 1;temp-=32;}
par2 = temp/16;
if(par2>0){
par2 = 1;temp-=16;}
par3 = temp/8;
if(par3>0){
par3 = 1;temp-=8;}
par4 = temp/4;
if(par4>0){
par4 = 1;temp-=4;}
par5 = temp/2;
if(par5>0){
par5 = 1;temp-=2;}
par6 = temp/1;
if(par6>0){
par6 = 1;temp-=1;}
v.addElement(par1);
v.addElement(par2);
v.addElement(par3);
v.addElement(par4);
v.addElement(par5);
v.addElement(par6);
}
else if(temp==97){
v.addElement(1);
v.addElement(1);
v.addElement(1);
v.addElement(1);
v.addElement(1);
v.addElement(1);
}
}
// Output.setText(v.toString());
for(int i=0;i<v.size();i++){
if(v.elementAt(i)==0){
//handler.removeCallbacks(ChangeColor2black(im));
//handler.postDelayed(ChangeColor2black(im), 1000);
ChangeColor2black(im);
try{
Thread.sleep(1000);
}
catch(InterruptedException e){
e.printStackTrace();
}
}
else if(v.elementAt(i)==1){
//handler.removeCallbacks(ChangeColor2White(im));
//handler.postDelayed(ChangeColor2White(im), 1000);
ChangeColor2White(im);
try{
Thread.sleep(1000);
}
catch(InterruptedException e){
e.printStackTrace();
}
}
}
}
}
大致概念為先在Graphical layout中建background為null的image.
然後利用thread.sleep()來控制畫面的持續時間,
現在問題是出在執行時,螢幕不會有黑白變換的效果,background會
一直保持default直到程式結束才會跑出last bit對應的顏色,
請版上先進指教,謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.96.91.143
※ 編輯: steve10199 來自: 140.96.91.143 (08/23 12:12)
※ 編輯: steve10199 來自: 140.96.91.143 (08/23 12:43)
→
08/23 12:43, , 1F
08/23 12:43, 1F
→
08/23 17:04, , 2F
08/23 17:04, 2F