2015-09-22 52 views
1

我有這樣一個佈局:動畫的LinearLayout當鍵盤上升/下降

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingLeft="25dp" 
    android:paddingRight="25dp"> 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/imageView" 
     android:background="@drawable/logo" /> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 

      <TextView ... /> 

      <EditText ... /> 

     </LinearLayout> 

     <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 

      <TextView ... /> 

      <EditText ... /> 

     </LinearLayout> 

    </LinearLayout> 

    <Button ... /> 

</LinearLayout> 

我想淡出ImageView和移動第二(內)LinearLayout了(靠近屏幕的頂部)時,鍵盤出現,然後在鍵盤迴落時做相反的操作。

我該如何做到這一點?

回答

0

使用TranslateAnimation類爲您的視圖設置動畫。

Animation slide = new TranslateAnimation(fromX,toX,fromY,toY); 
slide.setDuration(300);//here you can set your own duration of animation in ms. 
yourView.startAnimation(slide); 

您也可以重寫一些回調。

slide.setAnimationListener(new Animation.AnimationListener() { 
     @Override 
     public void onAnimationStart(Animation animation) { 

     } 
     @Override 
     public void onAnimationEnd(Animation animation) { 

     } 
     @Override 
     public void onAnimationRepeat(Animation animation) { 

     } 
    }); 

有沒有直接的方法來找出android軟鍵盤是否opne或不。但是你可以做一些工作並計算你的活動視圖根和窗口大小之間的大小差異。有很多方法可以做到這一點,我發現的一種方式是:

final View activityRootView = findViewById(R.id.activityRoot); 
activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 
    @Override 
    public void onGlobalLayout() { 
     int heightDiff = activityRootView.getRootView().getHeight() - activityRootView.getHeight(); 
     if (heightDiff > 100) { // if more than 100 pixels, its probably a keyboard... 
      ... do something here 
     } 
    } 
}); 
+0

如何檢查鍵盤是否上/下? – user5360382