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

布局文件

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:id="@+id/layContain"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. android:orientation="horizontal"
  7. android:background="@drawable/bg"
  8. >
  9. <!-- android:background="#FFC0CB"-->
  10.  
  11. <FrameLayout
  12. android:layout_width="fill_parent"
  13. android:layout_height="fill_parent"
  14.  
  15. >
  16. <LinearLayout
  17. android:layout_width="fill_parent"
  18. android:layout_height="fill_parent"
  19. android:orientation="horizontal"
  20. >
  21. <LinearLayout
  22. android:id="@+id/layFirst"
  23. android:layout_width="400px"
  24. android:layout_height="fill_parent"
  25. android:orientation="vertical"
  26. android:layout_marginBottom="50dp"
  27. >
  28.  
  29. </LinearLayout>
  30.  
  31. <LinearLayout
  32. android:id="@+id/laySec"
  33. android:layout_width="400px"
  34. android:layout_height="fill_parent"
  35. android:orientation="vertical" >
  36.  
  37. </LinearLayout>
  38.  
  39. <LinearLayout
  40. android:id="@+id/layThird"
  41. android:layout_width="400px"
  42. android:layout_height="fill_parent"
  43. android:orientation="vertical" >
  44.  
  45. </LinearLayout>
  46. <LinearLayout
  47. android:id="@+id/layFourth"
  48. android:layout_width="400px"
  49. android:layout_height="fill_parent"
  50. android:orientation="vertical" >
  51.  
  52. </LinearLayout>
  53. </LinearLayout>
  54. <LinearLayout
  55. android:layout_width="wrap_content"
  56. android:layout_height="wrap_content"
  57. android:layout_gravity="center_horizontal|bottom"
  58. android:layout_marginBottom="40dp"
  59. >
  60. <TextView
  61. android:id="@+id/roll_dot1"
  62. android:layout_width="wrap_content"
  63. android:layout_height="wrap_content"
  64. android:text="."
  65. android:textSize="50dp"
  66. android:textColor="#ffffff"
  67. />
  68. <TextView
  69. android:id="@+id/roll_dot2"
  70. android:layout_width="wrap_content"
  71. android:layout_height="wrap_content"
  72. android:text="."
  73. android:textSize="50dp"
  74. android:textColor="#000000"
  75. />
  76. <TextView
  77. android:id="@+id/roll_dot3"
  78. android:layout_width="wrap_content"
  79. android:layout_height="wrap_content"
  80. android:text="."
  81. android:textSize="50dp"
  82. android:textColor="#000000"
  83. />
  84. <TextView
  85. android:id="@+id/roll_dot4"
  86. android:layout_width="wrap_content"
  87. android:layout_height="wrap_content"
  88. android:text="."
  89. android:textSize="50dp"
  90. android:textColor="#000000"
  91. />
  92. </LinearLayout>
  93. </FrameLayout>
  94. </LinearLayout>

代码

  1. package com.marsor.desk;
  2.  
  3. import java.io.File;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9.  
  10. import android.app.Activity;
  11. import android.app.AlertDialog;
  12. import android.app.AlertDialog.Builder;
  13. import android.content.BroadcastReceiver;
  14. import android.content.ComponentName;
  15. import android.content.Context;
  16. import android.content.DialogInterface;
  17. import android.content.Intent;
  18. import android.content.IntentFilter;
  19. import android.content.pm.PackageInfo;
  20. import android.content.pm.PackageManager;
  21. import android.content.res.AssetManager;
  22. import android.content.res.Configuration;
  23. import android.graphics.Color;
  24. import android.net.Uri;
  25. import android.os.Bundle;
  26. import android.util.Log;
  27. import android.view.GestureDetector;
  28. import android.view.GestureDetector.OnGestureListener;
  29. import android.view.KeyEvent;
  30. import android.view.Menu;
  31. import android.view.MenuItem;
  32. import android.view.MotionEvent;
  33. import android.view.View;
  34. import android.view.View.OnClickListener;
  35. import android.view.View.OnTouchListener;
  36. import android.view.animation.TranslateAnimation;
  37. import android.widget.ImageView;
  38. import android.widget.LinearLayout;
  39. import android.widget.LinearLayout.LayoutParams;
  40. import android.widget.TextView;
  41. import android.widget.Toast;
  42.  
  43. public class MarsorDeskActivity extends Activity {
  44. GestureDetector mGestureDetector;
  45. LinearLayout layFirst;
  46. LinearLayout laySec;
  47. LinearLayout layThird;
  48. LinearLayout layFourth;
  49. LinearLayout layContain;
  50. //当前显示的layout
  51. LinearLayout layCur;
  52. //左边的layout
  53. LinearLayout layLeft;
  54. //右边的layout
  55. LinearLayout layRight;
  56. int screenWidth;
  57. ArrayList<MyAppInfo> mApplications = new ArrayList<MyAppInfo>();
  58.  
  59. TextView roll_dot1,roll_dot2,roll_dot3,roll_dot4;
  60.  
  61. ArrayList<String> packagNameList ;
  62. private final int MENU_EXIT = 01;
  63. private MyReceiver receiver;
  64.  
  65. private OnTouchListener myTouch = new OnTouchListener(){
  66.  
  67. @Override
  68. public boolean onTouch(View v, MotionEvent event) {
  69. return mGestureDetector.onTouchEvent(event);
  70. }
  71.  
  72. };
  73.  
  74. @Override
  75. public void onCreate(Bundle savedInstanceState) {
  76. super.onCreate(savedInstanceState);
  77. setContentView(R.layout.main);
  78. initpackagNameList();
  79. //监听系统新安装程序的广播
  80. receiver = new MyReceiver();
  81. IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
  82. filter.addDataScheme("package"); //必须添加这项,否则拦截不到广播
  83. registerReceiver(receiver, filter);
  84.  
  85. layContain = (LinearLayout) this.findViewById(R.id.layContain);
  86. layFirst = (LinearLayout) this.findViewById(R.id.layFirst);
  87. laySec = (LinearLayout) this.findViewById(R.id.laySec);
  88. layThird = (LinearLayout) this.findViewById(R.id.layThird);
  89. layFourth = (LinearLayout) this.findViewById(R.id.layFourth);
  90.  
  91. roll_dot1 = (TextView) findViewById(R.id.roll_dot1);
  92. roll_dot2 = (TextView) findViewById(R.id.roll_dot2);
  93. roll_dot3 = (TextView) findViewById(R.id.roll_dot3);
  94. roll_dot4 = (TextView) findViewById(R.id.roll_dot4);
  95.  
  96. layCur = layFirst;
  97. layLeft = null;
  98. layRight = laySec;
  99.  
  100. layFirst.setOnTouchListener(myTouch);
  101. laySec.setOnTouchListener(myTouch);
  102. layThird.setOnTouchListener(myTouch);
  103. layFourth.setOnTouchListener(myTouch);
  104.  
  105. //设置宽度
  106. screenWidth = getWindowManager().getDefaultDisplay().getWidth();
  107. layFirst.getLayoutParams().width = screenWidth;
  108. laySec.getLayoutParams().width = screenWidth;
  109. layThird.getLayoutParams().width = screenWidth;
  110. layFourth.getLayoutParams().width = screenWidth;
  111.  
  112. mGestureDetector = new GestureDetector(this, new OnGestureListener(){
  113. @Override
  114. public boolean onDown(MotionEvent e) {
  115. return true;
  116. }
  117.  
  118. @Override
  119. public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
  120. int x = (int) (e2.getX() - e1.getX());
  121.  
  122. //判断方向
  123. boolean dir = x>0;//如果大于0,为true,说明向右移动,直接将其前一个视图的marginleft设置成0,如果是向左移动,则直接将maringleft试着称宽度的负数
  124. if(dir){
  125. if(layLeft == null)return false;
  126. LinearLayout.LayoutParams llp = (LayoutParams) layLeft.getLayoutParams();
  127.  
  128. TranslateAnimation anim1 = new TranslateAnimation(llp.leftMargin,0,0,0);
  129. anim1.setDuration(500l);
  130. layLeft.startAnimation(anim1);
  131.  
  132. //layLeft.setAnimation(anim);
  133. llp.setMargins(0, 0, 0, 0);
  134. layLeft.setLayoutParams(llp);
  135. if(layLeft == layFirst){
  136. layLeft = null;
  137. layCur = layFirst;
  138. layRight =laySec ;
  139. //设置屏幕下方的小点随着页面的切换而改变
  140. roll_dot2.setTextColor(Color.BLACK);
  141. roll_dot1.setTextColor(Color.WHITE);
  142. }else if(layLeft == laySec){
  143. layLeft = layFirst;
  144. layCur = laySec;
  145. layRight =layThird ;
  146. roll_dot3.setTextColor(Color.BLACK);
  147. roll_dot2.setTextColor(Color.WHITE);
  148. }else if(layLeft == layThird){
  149. layLeft = laySec;
  150. layCur = layThird;
  151. layRight =layFourth ;
  152. roll_dot4.setTextColor(Color.BLACK);
  153. roll_dot3.setTextColor(Color.WHITE);
  154. }
  155. }else{
  156. if(layRight == null)return false;
  157. LinearLayout.LayoutParams llp = (LayoutParams) layCur.getLayoutParams();
  158. int width = layCur.getWidth();
  159. TranslateAnimation anim = new TranslateAnimation(width,0,0,0);
  160.  
  161. anim.setDuration(500l);
  162. layRight.startAnimation(anim);
  163.  
  164. llp.setMargins(-width, 0, 0, 0);
  165. layCur.setLayoutParams(llp);
  166. if(layCur == layFirst){
  167. layLeft = layFirst;
  168. layCur = laySec;
  169. layRight =layThird ;
  170. roll_dot1.setTextColor(Color.BLACK);
  171. roll_dot2.setTextColor(Color.WHITE);
  172. }else if(layCur == laySec){
  173. layLeft = laySec;
  174. layCur = layThird;
  175. layRight = layFourth ;
  176. roll_dot2.setTextColor(Color.BLACK);
  177. roll_dot3.setTextColor(Color.WHITE);
  178. }else if(layCur == layThird){
  179. layLeft = layThird;
  180. layCur = layFourth;
  181. layRight = null ;
  182. roll_dot3.setTextColor(Color.BLACK);
  183. roll_dot4.setTextColor(Color.WHITE);
  184. }
  185. }
  186.  
  187. return true;
  188. }
  189. @Override
  190. public void onLongPress(MotionEvent e) {
  191. // TODO Auto-generated method stub
  192.  
  193. }
  194. @Override
  195. public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
  196. // TODO Auto-generated method stub
  197. return false;
  198. }
  199. @Override
  200. public void onShowPress(MotionEvent e) {
  201. // TODO Auto-generated method stub
  202.  
  203. }
  204. @Override
  205. public boolean onSingleTapUp(MotionEvent e) {
  206. // TODO Auto-generated method stub
  207. return false;
  208. }
  209.  
  210. });
  211. }

实现了在android实现左右滑动切换界面的效果的更多相关文章

  1. android tab之间滑动切换界面功能

    1. onTouchListener();                       //捕捉touch事件,比如说onDown 需要将可滑动的控件加上两个方法:(1)view.setOnTouch ...

  2. Fragment+ViewPager实现仿微信点击和滑动切换界面

    这是在我写的新闻App中实现的界面切换 贴出切换界面的主要代码: xml代码: <span style="font-size:14px;"> <android.s ...

  3. 使用Android studio作按键切换界面

    一.新建工程 二.新建一个按键             android:layout_width="wrap_content"         android:layout_hei ...

  4. 转:Android ViewPager多页面滑动切换以及动画效果

    一.首先,我们来看一下效果图,这是新浪微博的Tab滑动效果.我们可以手势滑动,也可以点击上面的头标进行切换.与此同方式, 白色横条会移动到相应的页卡头标下.这是一个动画效果,白条是缓慢滑动过去的.好了 ...

  5. Android ViewPager多页面滑动切换以及动画效果

    一.首先,我们来看一下效果图,这是新浪微博的Tab滑动效果.我们可以手势滑动,也可以点击上面的头标进行切换.与此同方式,白色横条会移动到相应的页卡头标下.这是一个动画效果,白条是缓慢滑动过去的.好了, ...

  6. Android——ViewPager多页面滑动切换以及动画效果

    一.首先,我们来看一下效果图,这是新浪微博的Tab滑动效果.我们可以手势滑动,也可以点击上面的头标进行切换.与此同方式,白色横条会移动到相应的页卡头标下.这是一个动画效果,白条是缓慢滑动过去的.好了, ...

  7. android 图片浏览器滑动切换图片

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools= ...

  8. android: activity之间切换的抽屉效果

    之前一直用的是向左平移和向右平移的切换动画,看到别的APP那个抽屉效果,自己也弄了一个!感谢给我提供帮助的大神们! 将退出动画的参数设置为0时,进入动画则设置为向左平移,就实现了抽屉效果! 进入的动画 ...

  9. Android开发Activity全局切换的动画效果

    切换动画 slide_left_in.xml 从左边进 --> 退出的时候使用 <?xml version="1.0" encoding="utf-8&quo ...

随机推荐

  1. FTA

    FTA - 维基百科,自由的百科全书 FTA 维基百科,自由的百科全书   跳转至: 导航. 搜索 FTA可以指: 自由贸易协定(Free Trade Agreement) 自由贸易区(Free Tr ...

  2. Keepalived+Lvs+Mysql主主复制

    一简单介绍 Keepalived+lvs+mysql主主复制是比較经常使用的一种Mysql高可用方案,当中lvs 提供读负载均衡,Keepalived通过虚拟vip漂移实现故障自己主动转移,而Mysq ...

  3. hdu1573X问题(不互素的中国剩余定理)

    X问题 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  4. SSCTF Final PWN

    比赛过去了两个月了,抽出时间,将当时的PWN给总结一下. 和线上塞的题的背景一样,只不过洞不一样了.Checksec一样,发现各种防护措施都开了. 程序模拟了简单的堆的管理,以及cookie的保护机制 ...

  5. idea maven jetty插件热部署

    maven tomcat插件好像无法进行热部署,jetty可以如下配置实现热部署,但是idea无法进行自动编译,所以需要如下快捷键 Ctrl+Shift+F9,编译 Ctrl+F9,生成项目 < ...

  6. 移动平台前端开发总结(针对iphone,Android等手机)

    移动平台前端开发是指针对高端智能手机(如Iphone.Android)做站点适配也就是WebApp,并非是针对普通手机开发Wap 2.0,所以在阅读本篇文章以前,你需要对webkit内核的浏览器有一定 ...

  7. RDLC报表系列(一) 简单的动态数据绑定和配置

    RDLC系列链接 RDLC报表系列(一) 简单的动态数据绑定和配置  RDLC报表系列(二) 行分组 RDLC报表系列(三) 总计和折叠 RDLC报表系列(四) 矩阵 RDLC报表系列(五) 简单的图 ...

  8. pl sql练习(1)

    编写函数接受参数并返回字符串:Hello $var.然后赋值给绑定变量并打印: create or replace function hello_function ( pv_whom varchar2 ...

  9. JQuery动态表格

    功能实现:点击添加按钮,表格增加一行并给其name属性赋予的值,方便获取 点击删除,自动删除这一行 JQuery中定义一个count变量 var count = 1; function add() { ...

  10. Android 从AndroidManifest获取meta-data

    语法如下: <meta-data android:name="string" android:resource="resource specification&qu ...