当前位置: 编程技术>移动开发
本页文章导读:
▪PopupWindow的运用 PopupWindow的使用
在做Menu菜单时,系统为我们提供的Menu菜单在实际开发时,并不能满足我们的要求,于是想起来了PopupWindow,SDK API是对样对PopupWindow定义的:A popup window that can be used to display an .........
▪ JQuery Mobile列表内容分头版头条异步加载(一) JQuery Mobile列表内容分版面异步加载(一)
前言: 用智能手机和平板电脑上网看微博、文章、小说时,手指往上滑动页面,经常看到下面有“正在加载,请稍后...”。 公司移动运用这块.........
▪ window7 64位 华硕A53虚拟机Virtualbox装配mac系统及xcode window7 64位 华硕A53虚拟机Virtualbox安装mac系统及xcode
关于如何安装virtualbox及mac的过程,网上到处都是。你可以搜索一下。给几个链接你可以参考一下。Windows 7安装Mac OS X虚拟机全教程http://www.........
[1]PopupWindow的运用
来源: 互联网 发布时间: 2014-02-18
PopupWindow的使用
在做Menu菜单时,系统为我们提供的Menu菜单在实际开发时,并不能满足我们的要求,于是想起来了PopupWindow,SDK API是对样对PopupWindow定义的:A popup window that can be used to display an arbitrary view. The popup windows is a floating container that appears on top of the current activity. 大概意思是这样:这是一个可以显示任意的View的弹出窗口,这个窗口是浮动在当前的Activity上的,
<!--StartFragment -->
下面就用一个小例子来展示下PopupWindow的用法吧!下面就用一个Menu菜单作为例子,我个人比较喜欢用XML文件,所以下面都以XML为主
首先来写Menu菜单的布局 menu_item.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/ll" android:orientation="vertical" android:background="@drawable/menu_bg" android:layout_width="fill_parent" android:layout_height="wrap_content" android:focusableInTouchMode="true"> <LinearLayout android:id="@+id/item_top" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_weight="4"> <LinearLayout android:id="@+id/item1_1" android:background="@drawable/menu_item_bg" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center" android:layout_weight="1"> <ImageView android:id="@+id/imge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="/blog_article/@drawable/icon/index.html"></ImageView> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="btn1" /> </LinearLayout> <LinearLayout android:id="@+id/item1_2" android:background="@drawable/menu_item_bg" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center" android:layout_weight="1"> <ImageView android:id="@+id/imge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="/blog_article/@drawable/icon/index.html"></ImageView> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="btn1" /> </LinearLayout> <LinearLayout android:id="@+id/item1_3" android:background="@drawable/menu_item_bg" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center" android:layout_weight="1"> <ImageView android:id="@+id/imge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="/blog_article/@drawable/icon/index.html"></ImageView> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="btn1" /> </LinearLayout> <LinearLayout android:id="@+id/item1_4" android:background="@drawable/menu_item_bg" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center" android:layout_weight="1"> <ImageView android:id="@+id/imge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="/blog_article/@drawable/icon/index.html"></ImageView> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="btn1" /> </LinearLayout> </LinearLayout> </LinearLayout>
它的样式只是显示一排,这一拓为四个按钮,为了让例子更加清楚,我把其它的代码都删了
Main.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/good"> <GridView android:id="@+id/gridView2" android:layout_width="fill_parent" android:layout_height="fill_parent" android:focusableInTouchMode="true" /> </LinearLayout>
这里的布局不会影响到具体的操作,所以我也没有怎么改。
下面的代码才是关键
package com.hilary.dialog;
import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.GridView;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import com.hilary.R;
public class PopupWindowActivity extends Activity {
public static PopupWindow popupWindow;
private LinearLayout linear1_1;
private LinearLayout linear1_2;
private LinearLayout linear1_3;
private LinearLayout linear1_4;
View menuView = null;
View parent = null;
GridView gridView;
LinearLayout linear;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.popup_window);
initWeight();
initListener();
}
private void initWeight() {
menuView = PopupWindowActivity.this.getLayoutInflater().inflate(
R.layout.menu_list, null);
parent = getLayoutInflater().inflate(R.layout.popup_window, null);
popupWindow = new PopupWindow(menuView, LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT, false);
/*
* 设置此项为true时,会让其这个popupWindow处于焦点,其它控件(除主页面键)都会
* 失去焦点,不可点击
* popupWindow.setFocusable(true);
*/
/*
* 有的人说让下面这两项设计结合可以让PopupWindow失去焦点从而实现点击别的控件时,
* PopupWindow会消失,这样虽然是可以实现这样的效果,但有一点不足之处就是,这样他
* 会重构你点击那项的背景,当你与点击selector并用时,就是产生你点击那项,它的内
* 容会消失(在你重写按钮背景时),也许是因为那项的背景重构的事吧。。所以大家千万不要这样做
*
* popupWindow.setOutsideTouchable(true);
* popupWindow.setBackgroundDrawable(new BitmapDrawable());
*
*/
popupWindow.setAnimationStyle(R.style.MenuAnimation);
/*
gridView = (GridView) findViewById(R.id.gridView);
linear1_1 = (LinearLayout) menuView.findViewById(R.id.item1_1);
linear1_2 = (LinearLayout) menuView.findViewById(R.id.item1_2);
linear1_3 = (LinearLayout) menuView.findViewById(R.id.item1_3);
linear1_4 = (LinearLayout) menuView.findViewById(R.id.item1_4);
}
private void initListener() {
linear1_1.setOnClickListener(new ClickEvent());
linear1_2.setOnClickListener(new ClickEvent());
linear1_3.setOnClickListener(new ClickEvent());
linear1_4.setOnClickListener(new ClickEvent());
gridView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(popupWindow != null && popupWindow.isShowing()){
_setDismiss();
}
return false;
}
});
}
public void getPopupWindow() {
if (popupWindow == null) {
_showingPopupWindw();
} else {
if (popupWindow.isShowing()) {
_setDismiss();
} else {
_showingPopupWindw();
}
}
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
if (popupWindow != null) {
if (popupWindow.isShowing()) {
_setDismiss();
} else {
getPopupWindow();
}
} else {
getPopupWindow();
}
} else if (keyCode == KeyEvent.KEYCODE_BACK) {
if(popupWindow != null && popupWindow.isShowing()){
_setDismiss();
}else{
System.exit(0);
}
}
return false;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
System.out.println("onKeyDown");
return false;
}
private class ClickEvent implements OnClickListener {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn1:
getPopupWindow();
break;
case R.id.btn2:
getPopupWindow();
break;
case R.id.item1_1:
System.out.println("item1_1");
break;
case R.id.item1_2:
System.out.println("item1_2");
break;
case R.id.item1_3:
System.out.println("item1_3");
break;
case R.id.item1_4:
System.out.println("item1_4");
break;
}
popupWindow.dismiss();
}
}
public void _setDismiss() {
popupWindow.dismiss();
}
public void _showingPopupWindw(){
popupWindow.showAtLocation(parent, Gravity.BOTTOM, 0, 0);
}
}
在我们用PopupWindow时,都会与某种布局结合应用,如我上面的应用,UC上的应用是与WebView应用,所以在点击外面时,PopupWindow消失,要在WebView上添加Touch监听事件,如果在整个布局上添加Touch是不成效的
[2] JQuery Mobile列表内容分头版头条异步加载(一)
来源: 互联网 发布时间: 2014-02-18
JQuery Mobile列表内容分版面异步加载(一)
前言:
用智能手机和平板电脑上网看微博、文章、小说时,手指往上滑动页面,经常看到下面有“正在加载,请稍后...”。 公司移动运用这块由我来搞,也有这个方面的运用需求,所以我也做了一个类似的异步加载版面的例子。
好处:
只有在用户手指滑动屏幕时才加载下一个版面的数据,一方面可以为用户节省流量;另一方面改善了第一次加载时的响应速度。
名词注解
JQuery Mobile: 它是一个为移动设备浏览器写的一个开源js框架,官方描述:
官方链接:
http://jquerymobile.com/
版面:
在IPAD上的safari浏览器,页面列表的内容如果很长的话,需要用手指向上滑动屏幕来查看下面的列表数据,一个屏幕就是一个版面啦 ,当然这个不是严格意义上的版面。
本文要解决的问题:
异步加载列表内容,就是说, 刚进入页面时,加载大概两个版面的数据,然后手指向上滑动屏幕,如果手指触摸点还没有进入第二个版面则不会加载第三个版面的列表数据,当手指触摸点在第三个版面时,在页面的最下方显示“正在加载,请稍后...”,并调用jquery的ajax异步请求方法,来加载第四个版面的数据,加载完成后会移除“正在加载,请稍后...”的提示文字。
需要考虑的问题:
1、如何确定列表的版面个数?
不需要。
2、如何确定每个版面显示的记录条数?
因为列表页面的url是在后台配置的,不能将pageSize写死在URL里。而在js里计算出的pageSize是不能够作为这个URL的参数,struts2的action调用时,如果没有找到pageSize这个参数值,则默认pageSize=15,所以呢,第一次进入列表页面时,pageSize只能是15。也就是说列表页面只显示15条记录,这个在7寸的三星TP-1000平板及小于7寸的屏幕上还行。估计在大屏幕的IPAD上有点少,到时候具体考虑一下怎么定这个数。
js中计算的pageSize在AJAX异步加载版面时会作为请求的参数。比如IPAD2屏幕每个版面适合显示20条记录,则以后每个版面加载时都取20条出来。
3、如何确定是否要加载下一个版面?
手指解决进入了已经加载的版面的最后一个时,就要加载下一个版面,如何确定触点在最后一个版面呢?经过分析,可以给<li>指定id。然后就可以获取<li>元素的序号,来判断触点是在哪个版面。
前言:
用智能手机和平板电脑上网看微博、文章、小说时,手指往上滑动页面,经常看到下面有“正在加载,请稍后...”。 公司移动运用这块由我来搞,也有这个方面的运用需求,所以我也做了一个类似的异步加载版面的例子。
好处:
只有在用户手指滑动屏幕时才加载下一个版面的数据,一方面可以为用户节省流量;另一方面改善了第一次加载时的响应速度。
名词注解
JQuery Mobile: 它是一个为移动设备浏览器写的一个开源js框架,官方描述:
jQuery Mobile: Touch-Optimized Web Framework for Smartphones & Tablets A unified user interface system across all popular mobile device platforms, built on the rock-solid jQuery and jQuery UI foundation. Its lightweight code is built with progressive enhancement, and has a flexible, easily themeable design.
官方链接:
http://jquerymobile.com/
版面:
在IPAD上的safari浏览器,页面列表的内容如果很长的话,需要用手指向上滑动屏幕来查看下面的列表数据,一个屏幕就是一个版面啦 ,当然这个不是严格意义上的版面。
本文要解决的问题:
异步加载列表内容,就是说, 刚进入页面时,加载大概两个版面的数据,然后手指向上滑动屏幕,如果手指触摸点还没有进入第二个版面则不会加载第三个版面的列表数据,当手指触摸点在第三个版面时,在页面的最下方显示“正在加载,请稍后...”,并调用jquery的ajax异步请求方法,来加载第四个版面的数据,加载完成后会移除“正在加载,请稍后...”的提示文字。
需要考虑的问题:
1、如何确定列表的版面个数?
不需要。
2、如何确定每个版面显示的记录条数?
因为列表页面的url是在后台配置的,不能将pageSize写死在URL里。而在js里计算出的pageSize是不能够作为这个URL的参数,struts2的action调用时,如果没有找到pageSize这个参数值,则默认pageSize=15,所以呢,第一次进入列表页面时,pageSize只能是15。也就是说列表页面只显示15条记录,这个在7寸的三星TP-1000平板及小于7寸的屏幕上还行。估计在大屏幕的IPAD上有点少,到时候具体考虑一下怎么定这个数。
js中计算的pageSize在AJAX异步加载版面时会作为请求的参数。比如IPAD2屏幕每个版面适合显示20条记录,则以后每个版面加载时都取20条出来。
3、如何确定是否要加载下一个版面?
手指解决进入了已经加载的版面的最后一个时,就要加载下一个版面,如何确定触点在最后一个版面呢?经过分析,可以给<li>指定id。然后就可以获取<li>元素的序号,来判断触点是在哪个版面。
<div id="mainPage" data-role="page">
<div data-role="header" data-position="inline" data-theme="b">
<h1>中间计量审批列表</h1>
<a href="javascript:goDesktop();" data-role="button" data-icon="back">返回桌面</a>
</div>
<div data-role="content">
<ww:if test="list.size>0">
<ul id="list" data-role="listview">
<ww:iterator value="list" status="status">
<li id="li<ww:property value="#status.index" />"><a href="javascript:toAudit('<ww:property value='id'/>')"><ww:property value="topic" />(<ww:property value="startTime" />)</a></li>
</ww:iterator>
</ul>
</ww:if>
<ww:if test="list.size==0">
不存在任何数据.
</ww:if>
</div>
</div>
/** 计算手指滑动时起始点处的DOM元素的序号 */
function getScrollPosition(event){
var target = $(event.target);
while(target.attr("id")==undefined){
target = target.parent();
}
//手指滑动触点的<li>元素的ID
var targetId = target.attr('id');
//手指滑动触点的<li>元素的序号
var position;
//手指滑动触点的Tag
var targetTag = "li";
if(targetId!=undefined && targetId.indexOf(targetTag)==0){
position = targetId.substring(targetTag.length);
}
return position;
}
[3] window7 64位 华硕A53虚拟机Virtualbox装配mac系统及xcode
来源: 互联网 发布时间: 2014-02-18
window7 64位 华硕A53虚拟机Virtualbox安装mac系统及xcode
关于如何安装virtualbox及mac的过程,网上到处都是。你可以搜索一下。给几个链接你可以参考一下。
成功安装后一个小例子图片展示:
本人比较懒,关于我的本具体安装过程就不贴图了,有问题可交流。哈哈。
下面对部分问题做下说明。
1.安装软件.
A.我的VirtualBox是VirtualBox v4.0.12 正式版
Oracle官方下载地址:http://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html#extpack
B.引导文件。由于VirtualBox自带的EFI Bootloader只能在OS X作Host时才能正常引导,我们还需要empireEFIv1085.iso,您可以根据自己的CPU下载32位Intel版本或是AMD版本,对于64位Intel处理器,可以使用压缩包里的legacyempire_efi1085.iso文件。引导文件下载地址:http://uploadpla.net/files/5106_fnuhx/EmpireEFI_V108_all-in-one.zip,下载后解压,里面有几个引导文件,根据您系统选择相应的引导文件。
你也可以参考http://bbs.pcbeta.com/viewthread-683346-1-1.html上的说明。
C.操作系统。我用的是雪豹10.6,安装成功后建议在线更新到10.6.8,否则不能安装Xcode4。你也可以到苹果官网下载Mac OS X 组合更新 10.6.8。说明:只用下载组10.6.8合更新就可以了,其他非组合更新就不用下载了。下载网速超快,将近600K/秒。官方下载地址:http://support.apple.com/kb/DL1399?viewlocale=zh_CN。
D.开发环境。我用的是xcode_4_and_ios_sdk_4.3__final.dmg。如果在官方下载需要先注册。
E.正确设置引导文件并启动虚拟机进入安装界面后,需要右键点击界面右下角的光驱指示符,在弹出菜单中点击第一项,并选择您的雪豹操作系统。返回安装界面,按F5功能键,当界面中间的虚拟光盘下面出现“Mac OS X Install DVD”字样时,按回车键进行安装。
F.mac操作系统快照文件。snapshot文件默认在C盘,大概10G左右,如果您C盘剩余空间不足的话,在系统系统安装过程中会出错。所以您需要把快照放在其他盘下面。依此点击设置->常规->高级。在“备份的位置”处选择快照存放的位置。
G.操作系统引导顺序。您需要正确设置mac的引导顺序。点击设置->系统。在“启动顺序”中勾选“光驱”和“硬盘”两个选项,不要勾选“软驱”。在“扩展特性”中不要选择“启用 EFI”(我们将使用刚才下载的LegacyEmpireEFI_V108.iso进行引导)。
H.设置引导文件。在启动虚拟机之前,需要设置引导文件。点击设置->storage。在“IDE控制器”中右侧“CD/DVD Drive”中选择我们的引导文件LegacyEmpireEFI_V108.iso。
I.共享文件。在mac系统顶部菜单上点击 前往->连接服务器,在弹出框中输入服务器地址,格式为smb://user@IP,点击“连接”来连接服务器。在接下来弹出框中输入服务器用户名和密码进行连接。下图:
后记:虚拟机安装mac系统问题,我已经整整折腾一个星期了,包括上班时间大部分时间也在弄这个。其中的辛酸和泪水,一言难尽,只有自己能体会了。期间mac lion也发布可以下载了。想装一个看看,考虑了下,放弃了,以后再装吧。这个已经够折腾人了。好在貌似现在一切OK了。大家有问题可相互交流一下。我今天还未吃饭,准备喝两盅,庆祝一下。干杯!cheers!哈哈中。
没遇到这个情况,不知道是windows操作系统问题还是MAC 系统版本问题?
我在xp和window 7上都安装成功。我的先安装mac os x 10.6.4,然后到苹果官网下载Mac OS X 组合更新 10.6.8,安装后就Ok了。
也有可能是虚拟机问题,换个虚拟机试下。
关于如何安装virtualbox及mac的过程,网上到处都是。你可以搜索一下。给几个链接你可以参考一下。
- Windows 7安装Mac OS X虚拟机全教程http://www.ylmf.net/mac/guide/201009295846.html
- Win7 + VirtualBox安装Mac OS X雪豹操作系统图文详解http://blog.zhaojie.me/2010/09/how-to-install-mac-os-x-snow-leopard-on-virtualbox.html
成功安装后一个小例子图片展示:
本人比较懒,关于我的本具体安装过程就不贴图了,有问题可交流。哈哈。
下面对部分问题做下说明。
1.安装软件.
A.我的VirtualBox是VirtualBox v4.0.12 正式版
Oracle官方下载地址:http://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html#extpack
B.引导文件。由于VirtualBox自带的EFI Bootloader只能在OS X作Host时才能正常引导,我们还需要empireEFIv1085.iso,您可以根据自己的CPU下载32位Intel版本或是AMD版本,对于64位Intel处理器,可以使用压缩包里的legacyempire_efi1085.iso文件。引导文件下载地址:http://uploadpla.net/files/5106_fnuhx/EmpireEFI_V108_all-in-one.zip,下载后解压,里面有几个引导文件,根据您系统选择相应的引导文件。
你也可以参考http://bbs.pcbeta.com/viewthread-683346-1-1.html上的说明。
C.操作系统。我用的是雪豹10.6,安装成功后建议在线更新到10.6.8,否则不能安装Xcode4。你也可以到苹果官网下载Mac OS X 组合更新 10.6.8。说明:只用下载组10.6.8合更新就可以了,其他非组合更新就不用下载了。下载网速超快,将近600K/秒。官方下载地址:http://support.apple.com/kb/DL1399?viewlocale=zh_CN。
D.开发环境。我用的是xcode_4_and_ios_sdk_4.3__final.dmg。如果在官方下载需要先注册。
E.正确设置引导文件并启动虚拟机进入安装界面后,需要右键点击界面右下角的光驱指示符,在弹出菜单中点击第一项,并选择您的雪豹操作系统。返回安装界面,按F5功能键,当界面中间的虚拟光盘下面出现“Mac OS X Install DVD”字样时,按回车键进行安装。
F.mac操作系统快照文件。snapshot文件默认在C盘,大概10G左右,如果您C盘剩余空间不足的话,在系统系统安装过程中会出错。所以您需要把快照放在其他盘下面。依此点击设置->常规->高级。在“备份的位置”处选择快照存放的位置。
G.操作系统引导顺序。您需要正确设置mac的引导顺序。点击设置->系统。在“启动顺序”中勾选“光驱”和“硬盘”两个选项,不要勾选“软驱”。在“扩展特性”中不要选择“启用 EFI”(我们将使用刚才下载的LegacyEmpireEFI_V108.iso进行引导)。
H.设置引导文件。在启动虚拟机之前,需要设置引导文件。点击设置->storage。在“IDE控制器”中右侧“CD/DVD Drive”中选择我们的引导文件LegacyEmpireEFI_V108.iso。
I.共享文件。在mac系统顶部菜单上点击 前往->连接服务器,在弹出框中输入服务器地址,格式为smb://user@IP,点击“连接”来连接服务器。在接下来弹出框中输入服务器用户名和密码进行连接。下图:
后记:虚拟机安装mac系统问题,我已经整整折腾一个星期了,包括上班时间大部分时间也在弄这个。其中的辛酸和泪水,一言难尽,只有自己能体会了。期间mac lion也发布可以下载了。想装一个看看,考虑了下,放弃了,以后再装吧。这个已经够折腾人了。好在貌似现在一切OK了。大家有问题可相互交流一下。我今天还未吃饭,准备喝两盅,庆祝一下。干杯!cheers!哈哈中。
1 楼
yungdeguo
2011-10-11
楼主你好,我装mac os x 10.6.4成功。
可是一升级10.6.5~8都是键盘不能使用。
你有遇到这样的问题吗?
可是一升级10.6.5~8都是键盘不能使用。
你有遇到这样的问题吗?
2 楼
亚当爱上java
2011-10-12
yungdeguo 写道
楼主你好,我装mac os x 10.6.4成功。
可是一升级10.6.5~8都是键盘不能使用。
你有遇到这样的问题吗?
可是一升级10.6.5~8都是键盘不能使用。
你有遇到这样的问题吗?
没遇到这个情况,不知道是windows操作系统问题还是MAC 系统版本问题?
我在xp和window 7上都安装成功。我的先安装mac os x 10.6.4,然后到苹果官网下载Mac OS X 组合更新 10.6.8,安装后就Ok了。
也有可能是虚拟机问题,换个虚拟机试下。
3 楼
javalinjx
2012-09-04
你好,请教两个问题:
1.如何在线升级?
2.如何安装xcode?
我安装xcode时,3.2.6版本的,双击时,提示 “无装载的文件系统”
是否有解决方法?
1.如何在线升级?
2.如何安装xcode?
我安装xcode时,3.2.6版本的,双击时,提示 “无装载的文件系统”
是否有解决方法?
最新技术文章: