Androidは漸顕ボタンの左右スライド効果を実現します.


この例は、Androidにおいて、漸進ボタンを伴う左右の滑り効果を実現することを示している.
スライド効果について、前のブログで話しましたが、興味のある友達は訪問できます.http://www.cnblogs.com/hanyonglu/archive/2012/02/13/2349827.html
ガイド効果のある左右スライドを実現したいなら、ブログにアクセスしてください.http://www.cnblogs.com/hanyonglu/archive/2012/04/07/2435589.html
まず運行効果を見ます.
Android实现渐显按钮的左右滑动效果_第1张图片 Android实现渐显按钮的左右滑动效果_第2张图片
プログラム構造:
Android实现渐显按钮的左右滑动效果_第3张图片
MainActivityファイルのコード:
package com.android.buttonpageflipper;

import android.app.Activity;
import android.graphics.PixelFormat;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;
import android.widget.ImageView;
import android.widget.ViewFlipper;

/**
* Android              
*           ,         
* @author Administrator
*
*/
public class MainActivityextends Activity {
//      ,           
private ImageView btnLeft=null;
private ImageView btnRight=null;

//  WindowManager
private WindowManager wm=null;
private WindowManager.LayoutParams wmParams=null;

//ImageView alpha 
private int mAlpha = 0;
private boolean isHide;

private ViewFlipper viewFlipper = null;

/** Called when the activity is first created.*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

setTitle("Android             ");
viewFlipper = (ViewFlipper) this.findViewById(R.id.myViewFlipper);

//       
initImageButtonView();
}

/**
*        
*/
private void initImageButtonView(){
//  WindowManager
wm=(WindowManager)getApplicationContext().getSystemService("window");

//  LayoutParams    
wmParams = new WindowManager.LayoutParams();

//  window type
wmParams.type=LayoutParams.TYPE_PHONE; 

//      ,       
wmParams.format=PixelFormat.RGBA_8888; 

//  Window flag  
wmParams.flags=LayoutParams.FLAG_NOT_TOUCH_MODAL 
| LayoutParams.FLAG_NOT_FOCUSABLE;

//  x、y   
wmParams.x=0;
wmParams.y=0;

//        
wmParams.width=50;
wmParams.height=50;

//      
createLeftButtonView();
createRightButtonView();
}

/**
*       
*/
private void createLeftButtonView(){
btnLeft=new ImageView(this);
btnLeft.setImageResource(R.drawable.left);
btnLeft.setAlpha(0);

btnLeft.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
//     
viewFlipper.setInAnimation(MainActivity.this, R.anim.push_left_in);
viewFlipper.setOutAnimation(MainActivity.this, R.anim.push_left_out);
viewFlipper.showPrevious();
}
});

//    
wmParams.gravity=Gravity.LEFT|Gravity.CENTER_VERTICAL;

//    
wm.addView(btnLeft, wmParams);
}

/**
*       
*/
private void createRightButtonView(){
btnRight=new ImageView(this);
btnRight.setImageResource(R.drawable.right);
btnRight.setAlpha(0);

btnRight.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
//     
viewFlipper.setInAnimation(MainActivity.this, R.anim.push_right_in);
viewFlipper.setOutAnimation(MainActivity.this, R.anim.push_right_out);
viewFlipper.showNext();
}
});

//    
wmParams.gravity=Gravity.RIGHT|Gravity.CENTER_VERTICAL;

//    
wm.addView(btnRight, wmParams);
}

/**
*         
*/
private Handler mHandler = new Handler()
{
public void handleMessage(Message msg) {
if(msg.what==1 && mAlpha<255){ 
//                 
mAlpha += 50;

if(mAlpha>255)
mAlpha=255;

btnLeft.setAlpha(mAlpha);
btnLeft.invalidate();
btnRight.setAlpha(mAlpha);
btnRight.invalidate();

if(!isHide && mAlpha<255)
mHandler.sendEmptyMessageDelayed(1, 100);
}else if(msg.what==0 && mAlpha>0){
mAlpha -= 10;

if(mAlpha<0)
mAlpha=0;
btnLeft.setAlpha(mAlpha);
btnLeft.invalidate();
btnRight.setAlpha(mAlpha);
btnRight.invalidate();

if(isHide && mAlpha>0)
mHandler.sendEmptyMessageDelayed(0, 800);
} 
}
};

private void showImageButtonView(){
isHide = false;
mHandler.sendEmptyMessage(1);
}

private void hideImageButtonView(){
new Thread(){
public void run() {
try {
Thread.sleep(1500);
isHide = true;
mHandler.sendEmptyMessage(0);
} catch (Exception e) {
;
}
}
}.start();
}

@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_DOWN:
showImageButtonView(); 
break;
case MotionEvent.ACTION_UP:
hideImageButtonView(); 
break;
}

return true;
}

@Override
public void onDestroy(){
super.onDestroy();
//     (Activity  )     
wm.removeView(btnLeft);
wm.removeView(btnRight);
}
}

mail.xmlファイルのコード:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical">
<ViewFlipper
android:id="@+id/myViewFlipper"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!--      -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/one"
android:gravity="center"/>
</LinearLayout>
<!--      -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/two"
android:gravity="center"/>
</LinearLayout>
<!--      -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/three"
android:gravity="center"/>
</LinearLayout>
<!--      -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/four"
android:gravity="center"/>
</LinearLayout>
<!--      -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/five"
android:gravity="center"/>
</LinearLayout>
</ViewFlipper>
</LinearLayout>
pushleftint.xmlファイルのコード:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translateandroid:fromXDelta="100%p" android:toXDelta="0"
android:duration="500"/>
<alpha android:fromAlpha="0.1" android:toAlpha="1.0"
android:duration="500"/>
</set>
pushleftout.xmlファイルのコード:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translateandroid:fromXDelta="0" android:toXDelta="-100%p"
android:duration="500"/>
<alpha android:fromAlpha="1.0" android:toAlpha="0.1"
android:duration="500"/>
</set>
pushライトint.xmlファイルのコード:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translateandroid:fromXDelta="-100%p" android:toXDelta="0"
android:duration="500"/>
<alpha android:fromAlpha="0.1" android:toAlpha="1.0"
android:duration="500"/>
</set>
pushライトout.xmlファイルのコード:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translateandroid:fromXDelta="0" android:toXDelta="100%p"
android:duration="500"/>
<alpha android:fromAlpha="1.0" android:toAlpha="0.1"
android:duration="500"/>
</set>
最後に、設定ファイルに権限を設定することを忘れないでください.
転載先:http://www.cnblogs.com/hanyonglu/archive/2012/02/13/2350171.html