android - RemoveViews 不工作

标签 android

我有以下代码,一切正常。除了删除 View 不起作用。我的代码有什么问题?删除 View 在动画中不起作用吗?

在我的oncreate上

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fragment_edit_profile);

    mWinManager = (WindowManager) ManageProfileActivity.this
        .getSystemService(Context.WINDOW_SERVICE);

    final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
        WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
        WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
            | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, PixelFormat.TRANSLUCENT);

    params.width = WindowManager.LayoutParams.MATCH_PARENT;
    params.height = WindowManager.LayoutParams.MATCH_PARENT;

    mParentView = new FrameLayout(ManageProfileActivity.this);
    mParentViewlayout = new FrameLayout.LayoutParams(100, 100);

    mWinManager.addView(mParentView, params);

在我的gridView Item点击

@Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

              ImageView original = (ImageView) view.findViewById(R.id.avatar_imageview);
              final ImageView img = new ImageView(ManageProfileActivity.this);
              img.setVisibility(View.VISIBLE);


              img.setImageDrawable(original.getDrawable());
              mParentView.addView(img, mParentViewlayout);

              int[] img_coordinates = new int[2];
              mGroupAvatarImageView.getLocationOnScreen(img_coordinates);
              float mX = (float) ((img_coordinates[0])); 
              float mY = (float) ((img_coordinates[1])); 

              TranslateAnimation anim = new TranslateAnimation(x, mX, y, mY);
              anim.setDuration(300);
              anim.setAnimationListener(new TranslateAnimation.AnimationListener() {

                @Override
                public void onAnimationStart(Animation animation) {
                }

                @Override
                public void onAnimationRepeat(Animation animation) {
                }

                @Override
                public void onAnimationEnd(Animation animation) {
                   //THIS IS NOT WORKING
                  mParentView.removeView(img);
                  mParentView.invalidate();
                   }
      });

      img.startAnimation(anim);

最佳答案

您不能在 onAnimationEnd 中更改 View 层次结构。解决方法是推迟删除 subview 。尝试像这样使用:

 @Override
 public void onAnimationEnd(Animation animation) {
    mParentView.post(new Runnable() {

        @Override
        public void run() {
            mParentView.removeView(img);
        }
    });
 }

关于android - RemoveViews 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24160544/

相关文章:

android - android中具有相同时间间隔的多个服务

android - 如何在Android中为Notch设备获取安全区域

android - 如何选择标准的Android菜单图标?

android - 如何使用 cordova 在人行横道中启用缓存?

android - 阻止通知 PendingIntent 启动 Activity 已经启动?

android - 无法获取提供者 androidx.lifecycle.ProcessLifecycleOwnerInitializer

android - 在 Android 中分配 VersionName 的任何特定规则?

android - 位置 vs GeoPoint vs 1E6 vs 充电

javascript - 安卓。 WebView 。如何使元素不可点击?

java - libGDX spiriteBatch.draw() 没有定位在正确的位置