簡體   English   中英

在Nexus4與其他設備上的活動中添加了一個動畫動畫的問題,該動畫已添加到活動中

[英]An Issue animating a new TextView added to the activity on Nexus4 vs Other devices

我對Java和android編程非常陌生。

我正在嘗試創建一個按鈕,當按下該按鈕時,文本將出現在單擊的位置並立即淡出。 目前的問題是,當單擊時-確實出現了文本,但是動畫沒有播放,並且文本在幾秒鍾后消失(就像我想要的那樣)。

我已經在下面的問題上多次編輯了這個問題,在解決這些問題方面取得了一些進展,得到了大家的大力幫助。 謝謝!

我試過的代碼是這樣的:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mClickMe = (Button) findViewById(R.id.button1);
    mRelativeLayout = (RelativeLayout) findViewById(R.id.rl);

    mClickMe.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_DOWN) {

                int xClickPos = (int) event.getRawX();
                int yClickPos = (int) event.getRawY();

                final TextView scorePop = new TextView(getApplicationContext());                    

                scorePop.setText("+10");
                scorePop.setX(xClickPos);
                scorePop.setY(yClickPos);
                scorePop.setVisibility(TextView.INVISIBLE);

                // Create the score pop animation                   
                Animation scoreAnimation = new AlphaAnimation(1, 0);
                scoreAnimation.setDuration(1000);

                scoreAnimation.setAnimationListener (new Animation.AnimationListener() {

                    @Override
                    public void onAnimationStart(Animation animation) {
                        scorePop.setVisibility(TextView.VISIBLE);

                    }

                    @Override
                    public void onAnimationRepeat(Animation animation) {
                        // TODO Auto-generated method stub

                    }

                    @Override
                    public void onAnimationEnd(Animation animation) {
                        mRelativeLayout.removeView(scorePop);

                    }
                });                 
                mRelativeLayout.addView(scorePop);
                scorePop.setAnimation(scoreAnimation);

                scoreAnimation.start();


            }
            return false;
        }
    });



}

編輯:我還注意到,如果在不同位置上快速單擊按鈕,則文本將出現在這些位置,並隨着“波動”淡出而消失。 但是,如果單擊一次,該文本將出現並消失,但沒有動畫。 謝謝您的幫助!

編輯2:在我到達這里的幫助下,問題似乎與設備有關。 我正在使用Nexus 4,並正在運行一個仿真器,以將我的應用也測試為Nexus 4。 奇怪的是,為其他設備(例如Galaxy Nexus)運行模擬器似乎可以解決該問題。

編輯:我能夠重新創建您的原始錯誤,它與setX(),setY() 執行完這些方法中的任何一個之后, TextView都會變得“麻木”,並且不會設置動畫。 我認為的解決方法是設置布局的邊距,而不是TextView的坐標:

        // Set the margins instead of the actual position
        ViewGroup.MarginLayoutParams params=(ViewGroup.MarginLayoutParams)scorePop.getLayoutParams();
        params.leftMargin=xClickPos;
        params.topMargin=yClickPos;

在我的設備Galaxy Nexus上,它也第一次很好地顯示了動畫。 可能是您的設備在這里花費了時間“ mRelativeLayout.addView(scorePop);” 在那之后添加一點延遲,然后開始動畫它應該運行良好。

試試吧...

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_fadein);

    txtMessage = (TextView) findViewById(R.id.txtMessage);
    btnStart = (Button) findViewById(R.id.btnStart);

    // load the animation
    animFadein = AnimationUtils.loadAnimation(getApplicationContext(),
            R.anim.fade_in);

    // set animation listener
    animFadein.setAnimationListener(this);

    // button click event
    btnStart.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            txtMessage.setVisibility(View.VISIBLE);

            // start the animation
            txtMessage.startAnimation(animFadein);
        }
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM