旧代码翻新
从淘宝上买了些android代码,代码量很大,但是都是些旧代码,没有什么用处,把这些这些代码更新一下,算是练手了
第一个Android之泡泡效果bubble
更新第一个Android之泡泡效果bubble,在android 8上系统上通过,开发工具android studio 2022.3.1
public class MainActivity2 extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 设置全屏(无标题栏)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// 对于 Android 8.0 及更高版本,使用以下方式设置全屏
// setTheme(R.style.Theme_AppCompat_Light_NoActionBar);
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
);
} else {
// 对于较低版本的 Android,使用原始方式
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
fl = new FrameLayout(this);
fl.setBackgroundResource(R.drawable.bg);
exv1 = new ExplosionView(this);
exv1.setVisibility(View.INVISIBLE);
exv1.setBackgroundResource(R.drawable.explosion);
exa1 = (AnimationDrawable) exv1.getBackground();
fl.addView(exv1);
fl.setOnTouchListener(new LayoutListener());
setContentView(fl);
// 开始动画(如果需要)
if (exa1 != null) {
exa1.start();
}
}
private FrameLayout fl;
private ExplosionView exv1;
private AnimationDrawable exa1;
class ExplosionView extends androidx.appcompat.widget.AppCompatImageView {
public ExplosionView(Context context) {
super(context);
}
// 处理爆炸的位置
public void setLocation(int top, int left) {
this.setFrame(left, top, left + 240, top + 240);
}
}
class LayoutListener implements View.OnTouchListener {
public boolean onTouch(View v, MotionEvent event) {
// 首先,你需要停止动画,或者如果动画正在开始,
exv1.setVisibility(View.INVISIBLE);
exa1.stop();
float x = event.getX();
float y = event.getY();
exv1.setLocation((int) y - 20, (int) x - 20);
exv1.setVisibility(View.VISIBLE);
exa1.start();
return false;
}
}
}