天天看點

Android 當overridePendingTransition遇見了Fragment

overridePendingTransition
 
在startActivity()或finish()後,調用overridePendingTransition
(R.anim.**in,R.anim.**out)方法.
• 一)實作淡入淡出的效果如下:
startActivity(new Intent(SplashActivity.this, MainActivity.class));
overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out);
SplashActivity.this.finish();
• 二)由左向右滑入的效果改變一下參數即可
overridePendingTransition(android.R.anim.slide_in_left,android.R.anim.slide_out_right);
• 三)要實作zoomin和zoomout,即類似iphone的進入和退出時的效果
在res目錄下建立檔案夾anim,然後在anim下建立兩個xml,預設選項不用更改,分别命名為zoomin.xml和zoomout.xml,
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
  android:interpolator="@android:anim/decelerate_interpolator" >
  <scale
   android:duration="@android:integer/config_mediumAnimTime"
   android:fromXScale="2.0"
   android:fromYScale="2.0"
   android:pivotX="50%p"
   android:pivotY="50%p"
   android:toXScale="1.0"
   android:toYScale="1.0" />
</set>

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/decelerate_interpolator"
    android:zAdjustment="top" >
   <scale
    android:duration="@android:integer/config_mediumAnimTime"
    android:fromXScale="1.0"
    android:fromYScale="1.0"
    android:pivotX="50%p"
    android:pivotY="50%p"
    android:toXScale=".5"
    android:toYScale=".5" />
  <alpha
   android:duration="@android:integer/config_mediumAnimTime"
   android:fromAlpha="1.0"
   android:toAlpha="0" />
</set>
 
上一個文字Android切換Activity界面滑動,記錄了overridePendingTransition怎麼使界面滑動
緊跟着項目裡,遇到了在Fragment中要使用這個方法;

package com.fengsidai.si;
 import com.fengsidai.......
 public class SiListPage extends Fragment{
  private ViewFlipper viewFlippper;//滑動
  private ImageButton btnmainright;//右側篩選按鈕
  private Button screen_back;//傳回按鈕
  private ListView siList;

 @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        // return super.onCreateView(inflater, container, savedInstanceState);
      View view = inflater.inflate(R.layout.viewflipper_page, container, false);
     viewFlippper=(ViewFlipper)view.findViewById(R.id.viewFlipper);

    btnmainright=(ImageButton)view.findViewById(R.id.right_btn);
    screen_back=(Button)view.findViewById(R.id.screen_reback_btn);
      btnmainright.setOnClickListener(new OnClickListener(){
          @Override
         public void onClick(View arg0){
              viewFlippper.showNext();   });
   screen_back.setOnClickListener(new OnClickListener(){
  @Override
   public void onClick(View arg0){
     viewFlippper.showPrevious();
   }
});

siList=(ListView)view.findViewById(R.id.viewSIList);
siList.setOnItemClickListener(new OnItemClickListener(){


@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
  // TODO Auto-generated method stub
  Intent intent=new Intent();
  intent.setClass(Main_page.main_context,PersonalInformation.class);
  startActivity(intent);
  ((Activity) Main_page.main_context).overridePendingTransition(R.anim.in_from_right, R.anim.out_to_left);   //主要想說明這裡的寫法,如果不這麼寫會報錯
You need to call methdod ​​overridePendingTransition​​ from activity, but you do it in ​​OnClickListener​​
}

});

return view;//inflater.inflate(R.layout.viewflipper_page, container);
}

 }
package com.fengsidai.
 import com.fengsidai.
 public class Main_page extends Activity implements OnCheckedChangeListener{
     public static Main_page main_context;
     @Override
      public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.navigationbar_page);
        main_context=this;
        }
 }