实现了在android实现左右滑动切换界面的效果
16lz
2021-01-23
这是实现了在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;} });}
更多相关文章
- 【转】善用Android预定义样式来为我们的布局设置效果,大大节约代
- 自定义图片点击效果
- Android之系统自带的文字外观设置及实际显示效果图 android:text
- 实现android启动界面字体的动画效果
- android 去除ScrollVIew拉到尽头时再拉的阴影效果和个别机型的阻
- Android 实现 按钮从两边移到中间动画效果