- 浏览: 693087 次
- 性别:
- 来自: 苏州
最新评论
-
usedlie:
if (flag) { matrix.set(matrix ...
android view的缩放平移简单实现 -
jin290:
简单 快捷 非常棒 可以直接用
android 应用实现微信好友或朋友圈分享 -
貌似掉线:
0是朋友1是朋友圈
android 应用实现微信好友或朋友圈分享 -
zhangzhanlei:
[color=red][/color]
android 应用实现微信好友或朋友圈分享 -
shizhangliao:
android适配多分辨率的小技巧
参考http://my.eoe.cn/1188496/archive/20296.html
MainActivity
划屏任务
XML文件
MainActivity
package com.nico; import android.app.Activity; import android.os.Bundle; import android.view.GestureDetector; import android.view.Menu; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.view.ViewTreeObserver; import android.view.ViewTreeObserver.OnPreDrawListener; import android.view.Window; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.RelativeLayout.LayoutParams; public class MainActivity extends Activity implements GestureDetector.OnGestureListener, OnTouchListener { public LinearLayout leftview = null; public LinearLayout rightview = null; public ImageView setBtn = null; public GestureDetector gestureD = null; public int window_width; public int max_width; public boolean isScroll = false; public int mScrollX = 0; public ImageView img = null; final public static int SPEED = 30; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); initView(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } @SuppressWarnings("deprecation") public void initView() { leftview = (LinearLayout) findViewById(R.id.left_part); rightview = (LinearLayout) findViewById(R.id.right_part); setBtn = (ImageView) findViewById(R.id.set_btn); img = (ImageView) findViewById(R.id.bg); gestureD = new GestureDetector(this); leftview.setOnTouchListener(this); img.setOnTouchListener(this); gestureD.setIsLongpressEnabled(false); getmaxWidth(); } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { return false; } @Override public void onLongPress(MotionEvent e) { } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { //拖动过程中 isScroll = true; //distanceX是处理后点X跟前点X的距离,此时mScrollX为X方向移动距离 mScrollX += distanceX; RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) leftview .getLayoutParams(); int leftmargin = params.leftMargin; //左边距 - X方向移动的距离 等于新的左边距 leftmargin -= mScrollX; //到头了,停止移动,设定左边距为-max_width 或 0 if (leftmargin <= -max_width) { leftmargin = -max_width; params.leftMargin = leftmargin; isScroll = false; } else if (leftmargin >= 0) { leftmargin = 0; params.leftMargin = leftmargin; isScroll = false; } //其他范围内,正常设定左边距 params.leftMargin = leftmargin; leftview.setLayoutParams(params); //返回false,继续传递这个事件 return false; } @Override public void onShowPress(MotionEvent e) { } @Override public boolean onSingleTapUp(MotionEvent e) { //单击的时候实现左右移动 isScroll = false; RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) leftview .getLayoutParams(); int leftmargin = params.leftMargin; if (leftmargin == 0) { new MoveAsyTask(leftview, max_width).execute(-SPEED); } else { new MoveAsyTask(leftview, max_width).execute(SPEED); } return false; } @Override public boolean onDown(MotionEvent e) { //按下第一个动作时,mScrollX置为0,isScroll重置为false mScrollX = 0; isScroll = false; return true; } public boolean hasMeasured = false; void getmaxWidth() { ViewTreeObserver viewTreeObserver = leftview.getViewTreeObserver(); // 获取控件宽度 viewTreeObserver.addOnPreDrawListener(new OnPreDrawListener() { @Override public boolean onPreDraw() { if (!hasMeasured) { window_width = getWindowManager().getDefaultDisplay() .getWidth(); RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) leftview .getLayoutParams(); layoutParams.width = window_width; leftview.setLayoutParams(layoutParams); max_width = rightview.getWidth(); hasMeasured = true; } return true; } }); } @Override public boolean onTouch(View v, MotionEvent event) { if (MotionEvent.ACTION_UP == event.getAction() && isScroll == true) { RelativeLayout.LayoutParams params = (LayoutParams) leftview .getLayoutParams(); int leftmargin = params.leftMargin; //滑动结束后,判断拖动距离是否大于一般屏宽,是则向前,否则缩回去 if (leftmargin < -window_width / 2) { new MoveAsyTask(leftview, max_width).execute(-SPEED); } else { new MoveAsyTask(leftview, max_width).execute(SPEED); } } return gestureD.onTouchEvent(event); } }
划屏任务
package com.nico; import android.os.AsyncTask; import android.widget.LinearLayout; import android.widget.RelativeLayout; public class MoveAsyTask extends AsyncTask<Integer, Integer, String> { public LinearLayout view; public int max_width; public MoveAsyTask(LinearLayout v, int mw) { view = v; max_width = mw; } @Override protected void onProgressUpdate(Integer... values) { RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) view .getLayoutParams(); //更新视图 int leftmargin = params.leftMargin; int guide = values[0]; if (guide > 0) { // 往右 leftmargin = Math.min(leftmargin + guide, 0); } else { leftmargin = Math.max(leftmargin + guide, -max_width); // 往左 } params.leftMargin = leftmargin; view.setLayoutParams(params); } @Override protected String doInBackground(Integer... params) { int times = 0; if (max_width % Math.abs(params[0]) == 0)// 整除 times = max_width / Math.abs(params[0]); else times = max_width / Math.abs(params[0]) + 1;// 有余数 for (int i = 0; i < times; i++) { publishProgress(params[0]); try { Thread.sleep(Math.abs(params[0])); } catch (InterruptedException e) { e.printStackTrace(); } } return null; } }
XML文件
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" > <LinearLayout android:id="@+id/right_part" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginLeft="50dp" android:background="@android:color/background_dark" android:orientation="vertical" > <LinearLayout android:id="@+id/right_title" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="设置" android:textColor="@android:color/white" android:textSize="20sp" /> </LinearLayout> </LinearLayout> <LinearLayout android:id="@+id/left_part" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <RelativeLayout android:id="@+id/left_title" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/nav_bg" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="我" android:textColor="@android:color/white" android:textSize="20sp" /> <ImageView android:id="@+id/set_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:src="@drawable/set_btn" /> </RelativeLayout> <ImageView android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/bg" android:background="@drawable/guide_bg" /> </LinearLayout> </RelativeLayout>
发表评论
-
WebStorm导入React_Native项目,配置相关的Tips
2016-10-13 17:08 2924WebStorm激活相关 WebStorm下载地址:http ... -
android 清空之前task中的activity
2016-09-29 14:15 3938开发过程有个场景:关闭之前所有activity,跳转到登录页 ... -
jar包混淆
2016-09-18 16:46 1125开发过程中需要把相关功能打成jar包供别人调用,如果不混淆的话 ... -
项目从eclipse移植到studio中遇到的问题整理
2016-09-13 17:42 1165概念 eclipse workspace ---> ... -
ViewGroup&View&Activity onInterceptTouchEvent&dispatchTouchEvent&onTouch整理
2016-08-03 22:26 671一直对这块的知识一知 ... -
仿京东android客户端收件地址选择
2016-07-12 18:07 6511纯手写,可能有些问题,功能已实现 activity pac ... -
FragmentActivity中资源被回收,导致页面fragment错乱的问题
2016-06-07 13:59 3859开发过程中,页面使用fragmentactivity,可能会遇 ... -
android 通过eclipse mat来监测应用内存
2016-02-03 13:02 011dasdasdas -
【转】详解ViewPager调用FragmentPagerAdapter.notifyDataSetChanged()不能更新Fragment
2016-01-30 13:27 2050转载自 http://www.blog4app.com/?p= ... -
startActivityForResult常用使用方式
2015-04-24 11:58 1713示例 初始Activity启动目标activity,并带上了请 ... -
在android4.4以上版本 第三方应用处理短信的疑惑
2015-03-31 16:14 1030最近有个处理android手机短信的需求,需要删除本地某指定短 ... -
ListView添加headview或者footview时onItemClick事件数组越界的问题
2014-11-20 09:32 1635项目中Listview需要添加headview以及footvi ... -
Beacon的入门相关知识整理(关于android开发)
2014-10-27 16:53 0To do.... -
[转]常用Github项目类库
2014-09-18 09:29 1793【转自】http://blog.csdn.net/jabony ... -
android适配多分辨率的小技巧
2014-09-05 18:10 2815android多分辨率适配其实是老生常谈的话了,今天再拿出来炒 ... -
【转】详解android:scaleType属性
2014-08-28 10:48 918android:scaleType是控制图片如何resized ... -
android通过自定义schame和host来启动app
2014-08-15 15:02 2168很多时候,我们可以看到在web页面中点击链接,可以直接启动ap ... -
基础知识整理
2014-08-08 17:50 0onTouch(MotionEvent event) eve ... -
android view的缩放平移简单实现
2014-07-22 16:20 16356参考了下网上一些实现 主要是通过matrix实现的 用到的 ... -
android 应用实现微信好友或朋友圈分享
2014-07-18 16:44 60439官方的文档连接:https://open.weixin.qq. ...
相关推荐
一个Android系统中的Menu代码,初学者可参考: menu.findItem(EXIT_ID);找到特定的MenuItem MenuItem.setIcon.可以设置menu按钮的背景 点击第一个menu的第一个按钮执行的动作 点击第二个个menu的第一个...
VC代码 menu_button_src (实用代码源)VC代码 menu_button_src (实用代码源)VC代码 menu_button_src (实用代码源)VC代码 menu_button_src (实用代码源)VC代码 menu_button_src (实用代码源)VC代码 menu_button_src ...
【HookMenu源代码】是一个关于Windows程序开发中的技术主题,主要涉及到Windows API钩子(Hook)机制和菜单操作的实现。在VB(Visual Basic)环境下,开发者可以通过钩子技术来拦截和处理系统或应用程序的特定事件,...
Android 源代码,Menu的代码是一个Android系统中的Menu代码,初学者可参考: menu.findItem(EXIT_ID);找到特定的MenuItem MenuItem.setIcon.可以设置menu按钮的背景 点击第一个menu的第一个按钮执行的动作 点击...
menu: '#menu', // 导航菜单的选择器 sectionsColor: ['#fff', '#f00'], // 每个section的背景颜色 navigation: true, // 是否显示导航条 scrollingSpeed: 700 // 滚动速度 }); }); ``` 对于响应式导航下拉...
### PHP 网站头部Menu的经典代码解析 #### 一、概述 本篇文章将深入解析一个经典的PHP网站头部Menu代码,这段代码不仅适用于网站导航栏的设计与实现,还能够为开发者提供用户认证与退出功能的基础架构。通过分析这...
以上就是关于 element 中 el-menu 组件实现无限极循环菜单的思路和代码的详细解析,对于使用 Element UI 开发 Web 应用的前端开发者而言,掌握这一技术点对提升应用的用户体验和交互流畅性有着十分重要的意义。
VB HookMenu控件源代码是Visual Basic编程中用于创建自定义菜单操作的一种技术。HookMenu控件允许开发者在系统级或应用程序级捕获并修改菜单事件,为用户提供更丰富的交互体验。这种技术主要通过Windows API函数来...
本资源“VC 动态menu 源代码”提供了两个工程实例,帮助开发者更好地理解和实现这一功能。 在Windows应用程序中,菜单是用户与程序交互的主要方式之一,它们包含了各种操作选项。在静态菜单中,这些选项在程序编译...
### Proto.menu关键代码解析 #### 一、概览 本文将深入分析一段使用`Proto.menu`库实现右键菜单功能的关键代码。通过本篇内容,读者可以了解到如何使用`dtree`来创建一个具备基本功能的右键菜单,并对代码中的各个...
DropDownMenu DropDownMenu for Android,filter the list based on multiple condition. To get this project into your build Step 1. Add the specific repository to your build file: repositories { maven {...
在网页设计中,横导航菜单(Horizontal Navigation Menu)是一种常见的用户界面元素,它通常位于页面顶部,用于引导用户浏览网站的不同部分。这种菜单设计既美观又实用,因为它们有效地利用了横向空间,使得用户能够...
在这个“安卓menu代码(仿QQtab优化界面)”项目中,我们将探讨如何利用 `Menu` 创建类似QQ应用的底部导航栏,以实现更加优雅且高效的用户界面。 首先,我们来看 `Menu` 的创建。在 Android 应用中,通常在 `...
DropdownMenu View 基于 ListView 和 PopupWindow 实现的下拉菜单,可以方便的配置样式和填充数据。 (work in process: 本项目为学习使用,不保证使用稳定性,请慎重使用。) 使用 Layout 代码: Java 代码...
在Android应用开发中,Menu是用户界面的重要组成部分,它提供了在屏幕顶部或底部显示一系列操作选项的功能。Android菜单主要用于在不占用屏幕空间的情况下提供多种功能选择。本篇将深入探讨如何在Android中创建和...
《DropDownMenu下拉菜单改进版:打造优雅的代码体验》 在软件开发中,用户界面的设计与交互至关重要,其中下拉菜单(DropDownMenu)作为常见的交互元素,被广泛应用于各种应用和网页中。一个设计得当且易于使用的...
在给定的资源中,我们看到几个关键的源代码文件,如`Menu.c`, `Menu_If.c`, `Menu_Page.c`以及它们对应的头文件`.h`,这些文件构成了菜单系统的核心部分。 `Menu.c`很可能包含了菜单系统的主函数和全局变量,它初始...
本篇将深入探讨基于DHTML+AJAX实现的Menu类库scripts代码实例,这一技术主要用于构建动态、交互式的网页菜单系统。DHTML(Dynamic HTML)是一种结合了HTML、CSS、JavaScript以及DOM(Document Object Model)的技术...
`library`目录可能是包含DropDownMenu相关组件的库代码,而`app`目录则是应用的主要代码所在。 总的来说,使用DropDownMenu可以实现代码的简洁优雅,提高应用的易用性。开发者需要理解其工作原理,熟练掌握配置和...