问题描述
- 动态的删除一个图像出现的问题
-
程序中的 oncreate 方法@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); getWindow().setFormat(PixelFormat.UNKNOWN); surfaceView = (SurfaceView)findViewById(R.id.camerapreview); surfaceHolder = surfaceView.getHolder(); surfaceHolder.addCallback(this); surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); controlInflater = LayoutInflater.from(getBaseContext()); viewControl = controlInflater.inflate(R.layout.control, null); image =(ImageView) viewControl.findViewById(R.id.img); LayoutParams layoutParamsControl = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); this.addContentView(viewControl, layoutParamsControl); }
control.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" > <ImageView android:id="@+id/img" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/ic_launcher" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/button" /> </LinearLayout>
如何通过点击按钮来删除这个图像。实际上我想从当前的像素位置把这个图像转移到别的位置。
我点击按钮来实现:
b =(Button)findViewById(R.id.button); b.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { System.out.println("Button clicked"); TranslateAnimation anim = new TranslateAnimation(0,0,200,200); anim.setDuration(2000); image.setAnimation(anim); } });
但是现在图像会消失一俩秒钟。哪里出错了呢是?事实上我想在 accelerometer 改变的时候移动图像。
解决方案
先写一个xml文件放在drawable目录下的anim目录,没有自己新建translate.xml
<?xml version="1.0" encoding="utf-8"?>
<translate
android:duration="2000"
android:fromXDelta="0"
android:repeatCount="1"
android:repeatMode="reverse"
android:toXDelta="200%p" />
//在代码中
Animation animation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.translate);
// 开始执行动画
image.startAnimation(animation);
如果想要去掉ImageView,需要先执行 image.clearAnimation();然后将image.setVisibility(View.GONE);
或者设置 image.setVisibility(View.INVISIBLE);
时间: 2025-01-01 07:47:37