? 今天東哥教我們用Android Studio編一個(gè)在虛擬機(jī)上運(yùn)行的圖案變換小程序。東哥講解的很好琴昆,但是到我實(shí)際操作卻出現(xiàn)了一些問(wèn)題富玷。
? 開始在連接我手機(jī)做載體的虛擬機(jī)時(shí),我的Andriod ADB端口被第三方工具占用了诚隙。在啟動(dòng)cmd查詢無(wú)果后讶隐,我把Android Studio又重裝了一遍并重啟了計(jì)算機(jī)。結(jié)果這一次卻連接上了(但手機(jī)上的程序解析包出現(xiàn)錯(cuò)誤久又,只有計(jì)算機(jī)自己模擬的手機(jī)可以運(yùn)行)巫延,原來(lái)是豌豆莢占用了ADB。(找不到的情況下重啟計(jì)算機(jī)地消,能找到占用ADB的程序的話在任務(wù)管理器中關(guān)閉相關(guān)程序即可)
? 下午輪到我們自己動(dòng)手做早上演示的程序炉峰。開發(fā)軟件分為MainActivity.java和content-main.xml兩部分。MainActivity.java是來(lái)放入執(zhí)行程序的脉执,content-main.xml是做界面的布局的疼阔。
MainActivity.java中
public void imgClicked(View view) {
if(isOpen ==true){
close();
}else {
open();
}
isOpen = !isOpen;
}這個(gè)是控制點(diǎn)擊圖標(biāo)后其余圖標(biāo)執(zhí)行伸展與收縮的代碼
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();
? ? }
}這個(gè)是控制圖標(biāo)收縮的代碼
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();
? ? }
}這個(gè)是控制圖標(biāo)伸展的代碼
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);
}
這個(gè)是記錄圖片ID與按ID對(duì)應(yīng)圖片的程序
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
這是在布局中圖標(biāo)的相對(duì)位置
android:onClick="imgClicked"在布局最上層的圖標(biāo)的點(diǎn)擊(與覆蓋圖標(biāo)代碼主要不同之處)