今天东哥教我们用Android Studio编一个在虚拟机上运行的图案变换小程序。东哥讲解的很好,但是到我实际操作却出现了一些问题。
开始在连接我手机做载体的虚拟机时,我的Andriod ADB端口被第三方工具占用了。在启动cmd查询无果后,我把Android Studio又重装了一遍并重启了计算机。结果这一次却连接上了(但手机上的程序解析包出现错误,只有计算机自己模拟的手机可以运行),原来是豌豆荚占用了ADB。(找不到的情况下重启计算机,能找到占用ADB的程序的话在任务管理器中关闭相关程序即可)
下午轮到我们自己动手做早上演示的程序。开发软件分为MainActivity.java和content-main.xml两部分。MainActivity.java是来放入执行程序的,content-main.xml是做界面的布局的。
MainActivity.java中
public void imgClicked(View view) {
if(isOpen ==true){
close();
}else {
open();
}
isOpen = !isOpen;
}这个是控制点击图标后其余图标执行伸展与收缩的代码
private void close(){
for(int i =0;i <imageViews.size();i++){
ImageView iv =imageViews.get(i);
ObjectAnimator oa = ObjectAnimator.ofFloat(iv,"translationY",(i+1)*200f,0f);
oa.setDuration(500);
oa.start();
}
}这个是控制图标收缩的代码
private void open(){
for(int i =0; i<imageViews.size();i++){
ImageView iv =imageViews.get(i);
ObjectAnimator oa = ObjectAnimator.ofFloat(iv,"translationY",0f,(i+1)*200f);
oa.setDuration(1000);
oa.setInterpolator(new BounceInterpolator());
oa.start();
}
}这个是控制图标伸展的代码
public class MainActivityextends AppCompatActivity {
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 ListimageViews =new ArrayList<>();
private boolean isOpen =false;
for (int i =0;i<resID[i];i++){
int id =resID[i];
ImageView img = findViewById(id);
imageViews.add(img);
}
这个是记录图片ID与按ID对应图片的程序
content-main.xml中
<ImageView
android:id="@+id/iv_h"
android:layout_width="60dp"
android:layout_height="60dp"
android:background="@mipmap/h"
android:layout_centerHorizontal="true"
android:layout_marginTop="5dp"
/>
<ImageView
这是在布局中图标的相对位置
android:onClick="imgClicked"在布局最上层的图标的点击(与覆盖图标代码主要不同之处)