作为一个跨入Android 的新手,这个应该算作我的第一个小软件了。虽然是在老师的一步一步引导中完成的,可在完成它后,心中或多或少的涌现出一些成就感,话不多说,开始正题。
目的:完成多个图标在Y轴上的覆盖,与整体的收缩。
技术:Android studio软件的常规应用。
流程:1,打开Android studio ,创办一个新Project,在phone and Tablet界面选择basic activity。之后,自己选择 两个名字和储存位置,这里只需要强调语言要选java,Minimum ApI 等级尽量在高版本的基础上选择适用范围广的就行。进入界面后,在左上角(面板上第一行)选择Android>app>res>mipmap。将要用到的图片“拉”到这个位置。
2 ,将第二行xmlns之前的代码改为RelativeLayout(注意前面的“<”不要丢),第三段TextView开头那一段去掉。(在第二段与</RelativeLayout>之间输入代码,用以调整并标记我们的图片的大小与位置)
3 ,
<ImageView (相当于一个盛放图片的容器)
android:id="@+id/iv_b"(为这个图片选择一个”代号“)
android:layout_width="60dp"(这个图片的宽度)
android:layout_height="60dp"(高度)
android:src="@mipmap/b"(图片来源路径mipmap/b)
android:layout_centerHorizontal="true"(水平居中,将Horizontal改为vertical后为垂直居中)
android:layout_marginTop="2dp"/>(距离上边距距离)
(靠右显示:用 android:layout_marginLeft,;靠左显示:用android:layout_marginRight,意思 是距离右边框的距离。android:layout_marginTop: 距离上边android:layout_marginBottom: 距离下边框)(每个图片都需要这个代码,由于除了位置外大概相同,可以复制粘贴)
在需要”按“的图片最后添加android:onClick="imgClicked"这个代码(用Alt+Enter选中imgClicked,会跳到一个代码,在哪里进行编辑)。
4,
在public class MainActivityextends AppCompatActivity这个类的开头添加;
public int []resID = {R.id.iv_a,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};(iv为ImageView的缩写)(将代号“拿”过来,用一个数组来表示这些代号)
private ListimageViews =new ArrayList<>();(管理图片视图)
private boolean isOpen =false;(布尔型)
for (int i =0;i (id号对应视图放到ImageViews里面)
int id =resID[i];
ImageView img = findViewById(id);
imageViews.add(img);
}
public void imgClicked(View view) {(对按钮内容进行定义)
if (isOpen ==true) {
close(); //关闭
}else {
open();//打开
}
isOpen=!isOpen;
}
private void close(){
for(int i =0 ; i
ImageView iv =imageViews.get(i);
ObjectAnimator oa = ObjectAnimator.ofFloat(iv,"translationY",(i+1)*165f,0f);
oa.setDuration(1000);
oa.start();
}
}
private void open(){
for(int i =0 ; i
ImageView iv =imageViews.get(i);
ObjectAnimator oa = ObjectAnimator.ofFloat(iv,"translationY",0f,(i+1)*165f);
oa.setDuration(1000);
oa.setInterpolator(new BounceInterpolator());
oa.start();
}
}
}