实现QQ iPad客户端的对话框平滑移动的效果(2)

public void onClick(View v) {
// TODO Auto-generated method stub
//只有当其不可见的时候我们才执行动画
if(talkdiv.getVisibility() == View.INVISIBLE){
talkdiv.setVisibility(View.VISIBLE);
//判断应该从哪个方向拉出
int temx = MainActivity.this.talkOrentation?-MainActivity.this.talkdiv.getWidth():MainActivity.this.talkdiv.getWidth();
Animation translate = new TranslateAnimation(Animation.RELATIVE_TO_SELF,temx,Animation.RELATIVE_TO_PARENT,0,Animation.RELATIVE_TO_SELF,0,Animation.RELATIVE_TO_SELF,0);
translate.setDuration(200);
MainActivity.this.talkdiv.startAnimation(translate);
}
}
});
       
       
        //rl.addView(talkdiv);
       
    }
@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }


}

这是整个类所有的源代码,xml文件我就不写了,大家自己慢慢理解吧。

需要注意的几点:

注意onTouch的返回值。改成return true,这样onouch会继续监听

注意取得窗口长宽的方法:

WINDOW_HEIGHT = this.getWindowManager().getDefaultDisplay().getHeight();

WINDOW_WIDTH = this.getWindowManager().getDefaultDisplay().getHeight();

这里我是根据窗口的横坐标的值来判断是否应该自动隐藏,并且以窗口的宽的三分之一为边界

注意动画效果的实现,我使用了TranslateAnimation这个类,但是貌似这个动画执行了之后对象又会返回到原来的位置。所以在动画执行完毕后我将其设置为不可见,这样的话我再将其layout中的位置设置为动画执行完毕后想将其放置 的位置这样的话就能达到想要的效果了。

linux

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/pfsgd.html