- 浏览: 7330676 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
在android的图片的浏览时候经常使用。最近在网上查找资料自己也做一个如下:
package com.easyway.buttonpageflipper; import com.easyway.buttonpageflipper.R; import android.app.Activity; import android.graphics.PixelFormat; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.GestureDetector; import android.view.GestureDetector.OnGestureListener; import android.view.Gravity; import android.view.MotionEvent; import android.view.View; import android.view.WindowManager; import android.view.WindowManager.LayoutParams; import android.view.animation.AnimationUtils; import android.widget.ImageView; import android.widget.ViewFlipper; /** * Android实现带渐显按钮的左右滑动效果 自然状态下按钮不可见,触摸屏幕时显示按钮 * * @author longgangbai * */ public class ButtonpageflipperActivity extends Activity implements OnGestureListener{ // 声明两个按钮,分别代表向左和向右滑动 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; private GestureDetector detector; /** 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); detector = new GestureDetector(this); // 初始化左右按钮 initImageButtonView(); viewFlipper.addView(addImageView(R.drawable.photo1)); viewFlipper.addView(addImageView(R.drawable.photo2)); viewFlipper.addView(addImageView(R.drawable.photo3)); viewFlipper.addView(addImageView(R.drawable.photo4)); viewFlipper.addView(addImageView(R.drawable.photo5)); } private View addImageView(int id) { ImageView iv = new ImageView(this); iv.setImageResource(id); return iv; } /** * 初始化悬浮按钮 */ 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(ButtonpageflipperActivity.this, R.anim.push_left_in); viewFlipper.setOutAnimation(ButtonpageflipperActivity.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(ButtonpageflipperActivity.this, R.anim.push_right_in); viewFlipper.setOutAnimation(ButtonpageflipperActivity.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) { this.detector.onTouchEvent(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); } @Override public boolean onDown(MotionEvent e) { // TODO Auto-generated method stub return false; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { if (e1.getX() - e2.getX() > 120) { this.viewFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in)); this.viewFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_out)); this.viewFlipper.showNext(); return true; } else if (e1.getX() - e2.getX() < -120) { this.viewFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_in)); this.viewFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_out)); this.viewFlipper.showPrevious(); return true; } return false; } @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; } }
- buttonpageflipper.zip (801.6 KB)
- 下载次数: 325
发表评论
-
[转]年度最实用50款免费Android应用推荐
2012-11-08 16:39 3366据国外媒体报道,有人说Android应用市场比iPhone应用 ... -
GIS的学习(四十五)【转】Integration of the MBTiles format on Android
2012-10-22 17:13 2936转载自 http:/ ... -
GIS的学习(四十四)osmdroid sdcard检查
2012-10-15 16:12 2330在许多应用中使用到sdcard的检查,在osmdro ... -
GIS的学习(四十三)osmdroid基于几个经典代理类
2012-10-15 16:06 2624在osmdroid中给基于位置的代理类如下: pack ... -
Android中PopupWindow的用法(位置、动画、焦点)
2012-10-12 14:12 11513在Android中有很多级别的Window,不同级别的Wind ... -
【转】Android根据分辨率进行单位转换-(dp,sp转像素px)
2012-10-11 09:18 27126Android系统中,默认的单位是像素(px)。也就是说,在没 ... -
GIS的学习(二十九)Osmdroid 离线地图存放位置的研究和详细分析
2012-09-23 11:49 11513在手机通过osmdroid调用离线地图必须放在 ... -
GIS的学习(二十八)Osmdroid相关的开源项目
2012-09-23 11:31 25390osm 数据格式(openstreet map)与Ro ... -
GIS的学习(二十七)通过geoserver的georss访问第三方地图
2012-09-23 00:34 3598在geoserver中如果想调用第三方地图可以采 ... -
android中使用 定时更新界面定时器Timer的使用
2012-09-22 22:09 25513handler的使用 一、Handler的定义: ... -
【转】Android应用程序的自动更新升级(自身升级、通过tomcat) .
2012-09-16 15:03 7356http://blog.csdn.net/mu0206mu/a ... -
GIS的学习(二十七)OGC 的WCS WFS 及WMS 服务
2012-09-11 22:22 12103http://www.gisall.com/?6678/v ... -
GIS的学习(二十六)geotools 使用 部分代码总结
2012-09-11 22:20 5692前段时间的一个项目 本来用ae完成了种种的 查询,空间分析等等 ... -
GIS的学习(二十五)geoserver wms中的各种操作API详细讲解和使用
2012-09-10 17:42 9696官方geoserver中WMS服务中几种操作的API的详细说明 ... -
GIS的学习(二十四)android异步调用geoserver wms中的地图
2012-09-10 17:38 8153在geoserver的客户端通过wms的GetMap实现 ... -
GIS的学习(二十三)geoserver中CQL和ECQL的使用
2012-09-10 16:29 6618以下引用自官方文档: CQL and ECQL¶ CQ ... -
GIS的学习(二十二)osmdroid中添加縮放控件
2012-09-06 23:09 2783package com.geoserver.osmdroid; ... -
GIS的学习(二十一)在osmdroid 地图中添加marker 并添加事件
2012-09-06 22:27 6610我有 osmdroid,overlayswithf ... -
GIS的学习(二十)基于Geoserver的WFS服务与Openlayers实现地理查询
2012-08-30 18:48 11400基于Geoserver发布的wfs服务,与Openlayers ... -
GIS的学习(十九)Geoserver使用添加,删除,查询地图中的POI
2012-08-30 17:28 10348在geoserver自定义的地图中通过geoserver ...
相关推荐
本文将详细讲解如何通过点击按钮来实现这种从右侧进入、左侧退出的滑动切换效果。 首先,我们需要理解Activity的概念。在Android应用中,Activity是用户界面的基本单元,它负责与用户进行交互。当我们需要在不同的...
ViewPager是Android平台中一个强大的视图滑动组件,它允许用户通过左右滑动来浏览多个页面,常用于实现类似Tab的界面效果,如微信、淘宝等应用中的底部导航栏。在Android开发中,ViewPager通常与PagerAdapter配合...
在Android开发中,实现页面...总之,Android中的页面滑动切换可以通过ViewPager实现,而单击切换则可以通过监听ViewPager的`onPageSelected`事件来完成。结合示例代码,开发者可以快速地在自己的项目中实现类似的功能。
综上所述,"android左右滑动页面"涉及到了Android开发中的多个关键知识点,包括ViewPager的使用、XML布局设计、按钮点击事件处理、PagerAdapter的实现以及滑动页面的优化和测试。通过这些技术,我们可以构建出流畅、...
- **ViewPager**:Android官方推荐使用ViewPager组件来实现图片的左右滑动切换。ViewPager可以承载多个页面,并且允许用户通过左右滑动来切换页面。对于图片浏览,每个页面通常对应一张图片。 - **PagerAdapter**...
2. **ViewPager**:ViewPager是Android中的一个适配器视图,用于展示多个全屏页面,并允许用户左右滑动切换页面。ViewPager内部使用了PageTransformer接口,可以通过自定义Transformer实现滑动时的动画效果,增强...
通过以上步骤,你就可以在Android应用中实现左右滑动手势与按钮混合触发的效果了。`SlidingDemo`项目应该包含了这些功能的实现,你可以参考代码进行学习和调试。记得在实际项目中根据具体需求调整滑动阈值、速度等...
总结来说,Android的滑动按钮控件是通过自定义View并结合触摸事件处理和绘图系统来实现的。在设计和实现过程中,需要注意用户体验、动画效果和触摸反馈等多个方面,以打造出既美观又易用的滑动按钮。在实际项目中,...
`ViewPager`用于滑动切换页面,而`TabLayout`则负责显示选项卡。首先,确保在项目中添加`design`库依赖: ```groovy implementation 'com.google.android.material:material:1.4.0' ``` 然后,在布局文件中...
`TabLayout` 提供了可自定义的标签,用户可以通过点击这些标签来切换不同的页面,而 `ViewPager` 则负责管理这些页面的滑动切换效果。在本项目中,我们将探讨如何结合使用这两个组件,实现既可点击又可滑动的页面...
在Android开发中,为了提供与iOS设备类似的用户体验,开发者经常需要实现特定的UI元素,例如Iphone上的滑动按钮(SlipButton)。本教程将详细讲解如何在Android中创建一个仿照iPhone风格的滑动按钮,并探讨其核心原理...
在这个主题中,我们将深入探讨如何利用FragmentActivity实现多页面的点击和滑动切换。 1. **FragmentActivity基础** - FragmentActivity是Android Support Library的一部分,它允许开发者在较低版本的Android系统...
标题栏上面有两个按钮,可以点击切换fragment,也可以滑动切换fragment。 标题栏上面有两个按钮,可以点击切换fragment,也可以滑动切换fragment。 标题栏上面有两个按钮,可以点击切换fragment,也可以滑动切换...
在Android开发中,实现左右滑动的指引效果是一种常见的用户引导功能,主要用于向初次使用应用的用户介绍关键操作或功能。这种效果通常采用 ViewPager 或者 RecyclerView 结合自定义动画来实现,让页面在用户的手势下...
通过以上步骤,你可以创建出一个完全符合自己需求的自定义开关按钮,不仅具备滑动和点击功能,还能实现个性化的设计和交互效果。在实际开发中,这样的自定义组件可以大大提高应用的用户体验和辨识度。
在Android开发中,滑动按钮(Sliding Button)是一种常见的交互元素,它提供了一种直观且有趣的方式来切换开关状态或执行特定操作。本资源提供的"android滑动按钮源代码"显然是一个模仿iPhone设计的实现,旨在为...
Android图片左右滑动切换查看器,Android手机的图片查看器,看图程序,在layout中定义的属性,也可以在代码中指定。 mViewFlipper.showNext(); //该方法显示下一个图片信息; mViewFlipper.startFlipping();/...
综上所述,`android switch 切换开关按钮`是Android开发中常用的一种交互控件,通过合理的配置和定制,可以满足多种界面设计需求。`CompoundSwitchView`则可能是对原生`Switch`控件的扩展,提供了更多的自定义功能和...
当我们谈论“android Activity左右滑动”,通常是指实现一个可以左右滑动切换的界面效果,这种效果常用于实现类似抽屉菜单或者多页面切换的功能。在本例中,“InterfacialSlidingDemo”应该是一个演示如何实现这一...