这是实现了在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;//当前显示的layoutLinearLayout layCur;//左边的layoutLinearLayout layLeft;//右边的layoutLinearLayout 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(){    @Overridepublic 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(){@Overridepublic boolean onDown(MotionEvent e) {return true;}@Overridepublic 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;}@Overridepublic void onLongPress(MotionEvent e) {// TODO Auto-generated method stub}@Overridepublic boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {// TODO Auto-generated method stubreturn false;}@Overridepublic void onShowPress(MotionEvent e) {// TODO Auto-generated method stub}@Overridepublic boolean onSingleTapUp(MotionEvent e) {// TODO Auto-generated method stubreturn false;}                });}



更多相关文章

  1. 【转】善用Android预定义样式来为我们的布局设置效果,大大节约代
  2. 自定义图片点击效果
  3. Android之系统自带的文字外观设置及实际显示效果图 android:text
  4. 实现android启动界面字体的动画效果
  5. android 去除ScrollVIew拉到尽头时再拉的阴影效果和个别机型的阻
  6. Android 实现 按钮从两边移到中间动画效果

随机推荐

  1. android AsyncTask学习
  2. Android APK反编译查看源码及资源文件
  3. Android 屏幕横竖切换详解
  4. android 按键
  5. android 圆角效果
  6. Android 屏幕切换和onConfigurationChang
  7. Android Keyboard/Touch Panel分析
  8. Android 摇一摇太灵敏的解决方法
  9. Android 网络通信——HttpClient
  10. Android 进阶技术汇总三: 异步任务:AsyncTa