拖放完成后如何淡化ImageView?

时间:2016-08-01 07:41:53

标签: java android xml animation

我有一个ImageView(拖放)和一个淡化图像的按钮。拖放工作正常和淡入淡出按钮最初工作正常。拖动图像并按下那个淡入淡出按钮时会出现问题。

它似乎只会淡化图像的原始位置(拖放之前)。我想在拖动之后淡化实际图像。这是一张图片,解释:enter image description here

我的main_activity.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="app.com.example.muhammad.downloadmanagerexample.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        android:id="@+id/Hello"/>

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageView"
        android:src="@drawable/images"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Fade"
        android:id="@+id/buttonFade"

        android:layout_below="@+id/imageView"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="77dp" />

</RelativeLayout>

MainActivity.java

public class MainActivity extends AppCompatActivity implements View.OnTouchListener {

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



        image = (ImageView) findViewById(R.id.imageView);

        //downloadFile(path);

        image.setOnTouchListener(this);



        Button fadeButton = (Button) findViewById(R.id.buttonFade);
        fadeButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {


                AlphaAnimation animation = new AlphaAnimation(1.0f, 0.0f);
                animation.setDuration(1000);
                animation.setRepeatCount(1);
                animation.setRepeatMode(Animation.REVERSE);
                image.startAnimation(animation);

                //appIcon.animate().alpha(0.0f).setDuration(1000);
                //appIcon.animate().alpha(1.0f).setDuration(1000);
            }
        });

    }

    PointF DownPT = new PointF(); // Record Mouse Position When Pressed Down
    PointF StartPT = new PointF(); // Record Start Position of 'img'

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        int eid = event.getAction();
        switch (eid)
        {
            case MotionEvent.ACTION_MOVE :
                PointF mv = new PointF( event.getX() - DownPT.x, event.getY() - DownPT.y);
                image.setX((int)(StartPT.x+mv.x));
                image.setY((int)(StartPT.y+mv.y));
                StartPT = new PointF( image.getX(), image.getY() );
                break;
            case MotionEvent.ACTION_DOWN :
                DownPT.x = event.getX();
                DownPT.y = event.getY();
                StartPT = new PointF( image.getX(), image.getY() );
                break;
            case MotionEvent.ACTION_UP :
                // Nothing have to do
                break;
            default :
                break;
        }
        return true;
    }
}

我一直在搜索这个主题,找不到一个解决方案,所以想一想。先感谢您。真的很感谢这个网站和所有贡献它的人:)

1 个答案:

答案 0 :(得分:0)

你实际上每次都会创建新的图片。你不是只处理一个图像。你没有相同的图像实例。当你褪色时你正在删除图像。当你拖动后丢弃图像,然后重新创建图像。如果您找到合适的答案,请向我投票。谢谢