Android开发初体验
目的
初步了解Android studio的用法,体验安卓开发中菜单动画(平移)。
技术——菜单动画
1.描述:鼠标单击菜单时,菜单展开
鼠标再一次单击时,菜单回收,回到最初状态
2.移动 translationX、translationY •float translationX :表示在 X 轴上的平移距离,以当前控件为原点,向右为正方向,参数 translationX 表示移动的距离。 •float translationY :表示在 Y 轴上的平移距离,以当前控件为原点,向下为正方向,参数 translationY 表示移动的距离。例子:
ObjectAnimator animator = ObjectAnimator.ofFloat(tv, "translationX", 0, 200, -200,0); animator.setDuration(2000);
animator.start();
技术的使用与实现
1.定义每个菜单的初始位置在同一个点,当然最外层的的长和宽要大于里层的,里层的所有的长和宽一样
<ImageView
android:id="@+id/iv_g"
android:layout_width="60dp"
android:layout_height="60dp"
android:src="@mipmap/g" //b到g
android:layout_centerHorizontal="true"
android:layout_marginTop="5dp"
/>
<ImageView
android:layout_width="70dp"
android:layout_height="70dp"
android:src="@mipmap/a"
android:layout_centerHorizontal="true"
android:onClick="imgClicked"/>
2.实现展开的功能
1.先用一个数组存放试图的ID号; 2.用一个数组保存ID所对应的视图
private int[] resID={R.id.iv_b,R.id.iv_c,R.id.iv_d,R.id.iv_e,R.id.iv_f,R.id.iv_g,R.id.iv_h}; private List imageViews=new ArrayList<>();
2.定于一个变量,用来记录按钮状态(如果是开,则关闭;如果是关,则展开)
private boolean isOpen=false;
3.将id号所对应的图片视图读取出来,放在数组中
for(int i=0;i<resID.length;i++){
int id =resID[i];
ImageView img =findViewById(id);
imageViews.add(img); }
4.定义鼠标事件
public void imgClicked(View view) {
if(isOpen==true){
//应该关闭,收回
close(); }else {
//应该打开,展开 open();
}
isOpen=!isOpen; }
private void open(){
for(int i =0;i<mageViews.size();i++){
ImageView iv=imageViews.get(i);
ObjectAnimator oa = ObjectAnimator.ofFloat(iv,"translationY", 0f,(i+1)*120f);
oa.setDuration(1000);
oa.setInterpolator(new BounceInterpolator());
oa.start();
private void close(){
for(int i =0;imageViews.size();i++){
ImageView iv=imageViews.get(i);
ObjectAnimator oa = ObjectAnimator.ofFloat(iv,"translationY", 0f,(i+1)*120f);
oa.setDuration(1000);
oa.start();
}
5.效果图