需求:点击“打开风扇”按钮,风扇图片会转起来,再点击“关闭风扇”,风扇会停止转动。
布局代码如下:
<ImageView
android:id="@+id/fanImg"
android:layout_width="200dp"
android:layout_height="200dp"
android:background="@drawable/fan1" />
<Button
android:id="@+id/on_Off"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="打开风扇" />
Java代码如下:
public class MainActivity extends AppCompatActivity {
private ImageView fanImg;
private Button on_Off;
private int flag = 1;
private Thread thread;
private Handler handler;
private Boolean isPause = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initThread();
initHandler();
initButton();
}
private void initHandler() {
handler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(@NonNull Message msg) {
switch (msg.what) {
case 1:
fanImg.setBackgroundResource(R.drawable.fan1);
return true;
case 2:
fanImg.setBackgroundResource(R.drawable.fan2);
return true;
case 3:
fanImg.setBackgroundResource(R.drawable.fan3);
return true;
case 4:
fanImg.setBackgroundResource(R.drawable.fan4);
return true;
default:
break;
}
return false;
}
});
}
private void initThread(){
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
if (!isPause) {
Message msg = Message.obtain();
msg.what = flag;
handler.sendMessage(msg);
if (flag == 4) {
flag = 1;
}
flag++;
}
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
private void initView(){
fanImg = findViewById(R.id.fanImg);
on_Off = findViewById(R.id.on_Off);
}
private void initButton(){
on_Off.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (on_Off.getText().toString().equals("打开风扇")) {
on_Off.setText("关闭风扇");
isPause = false;
}else {
on_Off.setText("打开风扇");
isPause = true;
}
}
});
}
}
实现效果:
图片资源: