当前位置: 代码迷 >> Android >> 实现了在android实现上下滑动切换界面的效果
  详细解决方案

实现了在android实现上下滑动切换界面的效果

热度:18   发布时间:2016-04-28 08:04:40.0
实现了在android实现左右滑动切换界面的效果

这是实现了在android实现左右滑动切换界面的效果,该效果的源码下载,请到源码天堂下载吧,喜欢的朋友可以研究一下。

布局文件

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/layContain"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="horizontal" 	android:background="@drawable/bg"    >   <!-- android:background="#FFC0CB"-->      <FrameLayout     android:layout_width="fill_parent"    android:layout_height="fill_parent"          >   <LinearLayout      android:layout_width="fill_parent"     android:layout_height="fill_parent"     android:orientation="horizontal"       >    <LinearLayout        android:id="@+id/layFirst"        android:layout_width="400px"        android:layout_height="fill_parent"        android:orientation="vertical"         android:layout_marginBottom="50dp"        >                   </LinearLayout>        <LinearLayout        android:id="@+id/laySec"        android:layout_width="400px"        android:layout_height="fill_parent"        android:orientation="vertical" >           </LinearLayout>    <LinearLayout        android:id="@+id/layThird"        android:layout_width="400px"        android:layout_height="fill_parent"        android:orientation="vertical" >           </LinearLayout>       <LinearLayout        android:id="@+id/layFourth"        android:layout_width="400px"        android:layout_height="fill_parent"        android:orientation="vertical" >            </LinearLayout>      </LinearLayout>      <LinearLayout     android:layout_width="wrap_content"    android:layout_height="wrap_content"       android:layout_gravity="center_horizontal|bottom"      android:layout_marginBottom="40dp"    >      <TextView       android:id="@+id/roll_dot1"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="."    android:textSize="50dp"    android:textColor="#ffffff"    />    <TextView         android:id="@+id/roll_dot2"     android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="."    android:textSize="50dp"    android:textColor="#000000"    />      <TextView         android:id="@+id/roll_dot3"     android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="."    android:textSize="50dp"    android:textColor="#000000"    />      <TextView         android:id="@+id/roll_dot4"     android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="."    android:textSize="50dp"    android:textColor="#000000"    />      </LinearLayout>    </FrameLayout></LinearLayout>
代码

package com.marsor.desk;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.app.AlertDialog;import android.app.AlertDialog.Builder;import android.content.BroadcastReceiver;import android.content.ComponentName;import android.content.Context;import android.content.DialogInterface;import android.content.Intent;import android.content.IntentFilter;import android.content.pm.PackageInfo;import android.content.pm.PackageManager;import android.content.res.AssetManager;import android.content.res.Configuration;import android.graphics.Color;import android.net.Uri;import android.os.Bundle;import android.util.Log;import android.view.GestureDetector;import android.view.GestureDetector.OnGestureListener;import android.view.KeyEvent;import android.view.Menu;import android.view.MenuItem;import android.view.MotionEvent;import android.view.View;import android.view.View.OnClickListener;import android.view.View.OnTouchListener;import android.view.animation.TranslateAnimation;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.LinearLayout.LayoutParams;import android.widget.TextView;import android.widget.Toast;public class MarsorDeskActivity extends Activity {	GestureDetector mGestureDetector;	LinearLayout layFirst;	LinearLayout laySec;	LinearLayout layThird;	LinearLayout layFourth;	LinearLayout layContain;	//当前显示的layout	LinearLayout layCur;	//左边的layout	LinearLayout layLeft;	//右边的layout	LinearLayout layRight;	int screenWidth;	ArrayList<MyAppInfo> mApplications = new ArrayList<MyAppInfo>();		TextView roll_dot1,roll_dot2,roll_dot3,roll_dot4;		ArrayList<String> packagNameList ;	private final int MENU_EXIT = 01;	private MyReceiver receiver;			private OnTouchListener myTouch = new OnTouchListener(){    			@Override		public boolean onTouch(View v, MotionEvent event) {			return mGestureDetector.onTouchEvent(event);		}    	    };    	@Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        initpackagNameList();        //监听系统新安装程序的广播        receiver = new MyReceiver();        IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);        filter.addDataScheme("package");    //必须添加这项,否则拦截不到广播        registerReceiver(receiver, filter);                layContain = (LinearLayout) this.findViewById(R.id.layContain);        layFirst = (LinearLayout) this.findViewById(R.id.layFirst);        laySec = (LinearLayout) this.findViewById(R.id.laySec);        layThird = (LinearLayout) this.findViewById(R.id.layThird);        layFourth = (LinearLayout) this.findViewById(R.id.layFourth);                roll_dot1 = (TextView) findViewById(R.id.roll_dot1);        roll_dot2 = (TextView) findViewById(R.id.roll_dot2);        roll_dot3 = (TextView) findViewById(R.id.roll_dot3);        roll_dot4 = (TextView) findViewById(R.id.roll_dot4);                layCur = layFirst;        layLeft = null;        layRight = laySec;                layFirst.setOnTouchListener(myTouch);        laySec.setOnTouchListener(myTouch);        layThird.setOnTouchListener(myTouch);        layFourth.setOnTouchListener(myTouch);                //设置宽度        screenWidth = getWindowManager().getDefaultDisplay().getWidth();        layFirst.getLayoutParams().width = screenWidth;        laySec.getLayoutParams().width = screenWidth;        layThird.getLayoutParams().width = screenWidth;        layFourth.getLayoutParams().width = screenWidth;                 mGestureDetector = new GestureDetector(this, new OnGestureListener(){			@Override			public boolean onDown(MotionEvent e) {				return true;			}			@Override			public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {				int x = (int) (e2.getX() - e1.getX());								//判断方向				boolean dir = x>0;//如果大于0,为true,说明向右移动,直接将其前一个视图的marginleft设置成0,如果是向左移动,则直接将maringleft试着称宽度的负数				if(dir){					if(layLeft == null)return false;					LinearLayout.LayoutParams llp = (LayoutParams) layLeft.getLayoutParams();								TranslateAnimation anim1 = new TranslateAnimation(llp.leftMargin,0,0,0);					anim1.setDuration(500l);					layLeft.startAnimation(anim1);										//layLeft.setAnimation(anim);					llp.setMargins(0, 0, 0, 0);					layLeft.setLayoutParams(llp);					if(layLeft == layFirst){						layLeft = null;						layCur = layFirst;						layRight =laySec ;						//设置屏幕下方的小点随着页面的切换而改变						roll_dot2.setTextColor(Color.BLACK);						roll_dot1.setTextColor(Color.WHITE);					}else if(layLeft == laySec){						layLeft = layFirst;						layCur = laySec;						layRight =layThird ;						roll_dot3.setTextColor(Color.BLACK);						roll_dot2.setTextColor(Color.WHITE);					}else if(layLeft == layThird){						layLeft = laySec;						layCur = layThird;						layRight =layFourth ;						roll_dot4.setTextColor(Color.BLACK);						roll_dot3.setTextColor(Color.WHITE);					}				}else{					if(layRight == null)return false;					LinearLayout.LayoutParams llp = (LayoutParams) layCur.getLayoutParams();					int width = layCur.getWidth();					TranslateAnimation anim = new TranslateAnimation(width,0,0,0);										anim.setDuration(500l);					layRight.startAnimation(anim);										llp.setMargins(-width, 0, 0, 0);					layCur.setLayoutParams(llp);					if(layCur == layFirst){						layLeft = layFirst;						layCur = laySec;						layRight =layThird ;						roll_dot1.setTextColor(Color.BLACK);						roll_dot2.setTextColor(Color.WHITE);					}else if(layCur == laySec){						layLeft = laySec;						layCur = layThird;						layRight = layFourth ;						roll_dot2.setTextColor(Color.BLACK);						roll_dot3.setTextColor(Color.WHITE);					}else if(layCur == layThird){						layLeft = layThird;						layCur = layFourth;						layRight = null ;						roll_dot3.setTextColor(Color.BLACK);						roll_dot4.setTextColor(Color.WHITE);					}				}				return true;			}			@Override			public void onLongPress(MotionEvent e) {				// TODO Auto-generated method stub							}			@Override			public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {				// TODO Auto-generated method stub				return false;			}			@Override			public void onShowPress(MotionEvent e) {				// TODO Auto-generated method stub							}			@Override			public boolean onSingleTapUp(MotionEvent e) {				// TODO Auto-generated method stub				return false;			}        	        });}



  相关解决方案