作者steve10199 (<Dial-up>)
看板AndroidDev
标题[问题] image_background变换,程式delay的设计
时间Thu Aug 23 12:09:37 2012
原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)
1F:→ steve10199:修一些打字错误 08/23 12:43