V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
slok
V2EX  ›  Android

动画执行问题

  •  
  •   slok · 2015-06-16 10:36:29 +08:00 · 8663 次点击
    这是一个创建于 3432 天前的主题,其中的信息可能已经有所发展或是发生改变。

    ========================代码一========================

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

    dotImg = (ImageView) findViewById(R.id.anim_dotimg);
    btn = (Button) findViewById(R.id.anim_btn);
    
    btn.setOnClickListener(new Button.OnClickListener() {
        @Override
        public void onClick(View v) {
            AlphaAnimation alphaAnim = new AlphaAnimation(0.5f, 1f);
            alphaAnim.setDuration(2000);
            dotImg.setAnimation(alphaAnim);
            alphaAnim.start();
    
            Log.d("test", "start anim");
        }
    });
    

    }

    ========================代码一========================

    ========================代码二========================

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

    dotImg = (ImageView) findViewById(R.id.anim_dotimg);
    btn = (Button) findViewById(R.id.anim_btn);
    
    btn.setOnClickListener(new Button.OnClickListener() {
        @Override
        public void onClick(View v) {
            AlphaAnimation alphaAnim = new AlphaAnimation(0.5f, 1f);
            alphaAnim.setDuration(2000);
            dotImg.startAnimation(alphaAnim);
    
            Log.d("test", "start anim");
        }
    });
    

    }

    ========================代码二========================

    Q1:为何代码一动画无效果?或者说不执行?
    Q2:有些文章说,更新UI必须在UI主线程。那么请问一些事件,如Click、Destroy等,我如何分辨哪些事件并不是UI主线程在执行呢?

    5 条回复    2015-06-16 15:15:03 +08:00
    kcworms
        1
    kcworms  
       2015-06-16 11:28:22 +08:00
    1.动画没有应用到View上
    2.只要自己不采取任何手段开新线程,都是在UI线程(不确定,求指出例外)
    hahasong
        2
    hahasong  
       2015-06-16 11:31:29 +08:00
    Q1:动画官方建议是用 ValueAnimator 及其子类
    Q2:所有在 Activity主线程上执行的代码都属于UI线程,另起的Thread, HandleThread, AscyTask 上执行的代码属于后台线程
    slok
        3
    slok  
    OP
       2015-06-16 14:22:52 +08:00
    @kcworms 感谢回答,动画没有应用到View上我不太明白啊,代码一的动画代码,放在onCreate却可以执行啊。
    slok
        4
    slok  
    OP
       2015-06-16 14:22:59 +08:00
    @hahasong 谢谢
    slok
        5
    slok  
    OP
       2015-06-16 15:15:03 +08:00
    @hahasong 可否加QQ请教?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3044 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 12:57 · PVG 20:57 · LAX 04:57 · JFK 07:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.