Android jquery mobile 仿微信主界面

2 篇文章 0 订阅

效果图:

  

  


地址:http://pan.baidu.com/s/1eSupF6E


总结:只要熟悉Jquery,很快就能上手,界面效果和原生的还是有些区别,做简单的页面还是可以的。


page_chat.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://apps.bdimg.com/libs/jquerymobile/1.4.5/jquery.mobile-1.4.5.min.css">
<script src="https://apps.bdimg.com/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="https://apps.bdimg.com/libs/jquerymobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>

<style>
::-webkit-scrollbar{width:0px}	/* 隐藏滚动条 */
.page{
	background:#E9E9E9;
}
.navbar{
	margin:5px;
	padding:0px;
	text-align:center;
}
.navbar li{
	float:left;	/* 横向排列 */
}
ul{
	list-style-type:none;
}
a{
	text-decoration:none;	/* 不显示超链接下划线 */
}
.navbar li a{
	color:#8A8A8A;	/* 字体颜色 */
}
.navbar li img{
	width:30px;
	height:30px;
}
.header{
	background-color:#292421;
}
.header div{
	float:right;
	padding-top:10px;
	padding-bottom:10px;
	padding-left:15px;
	padding-right:15px;
}
.header div img{
	width:22px;
	height:22px;
}
div.float{
	position:fixed;
	top:60px;
	z-index:999;
	width:160px;
	height:auto;
	
}
</style>
<script>
var lastTab;	//上一个选中的按钮
var screenWidth;	//宽度
var isFloatDisplay = false;	//弹窗显示状态

$(document).ready(function(){
	lastTab = $("#tab_chat")[0];
	//监听窗口大小改变
	$(window).resize(function(){
		screenWidth = $(document.body).width();	//宽度
		adjustNavBarWidth();
		adjustFloatPosition();
	});
});
$(document).on("pagecreate", function(){
	//初始化加载聊天列表
	set2ChatMsgList();
	screenWidth = $(document.body).width();	//宽度
	//初始化导航栏宽度
	adjustNavBarWidth();
	//初始化悬浮窗的位置
	adjustFloatPosition();
	
	$("body").on("vmouseup", function(){
		if(isFloatDisplay){
			isFloatDisplay = false;
			$("#btnmorelist").html("");
		}
	});
	$(".header div.button").on("vmousedown", function(){
		this.style.background = "#121212";
	});
	$(".header div.button").on("vmouseup", function(){
		this.style.background = "#292421";
	});
	$("#fun_more").on("tap", function(){
		if(!isFloatDisplay){
			isFloatDisplay = true;
			var list = $("#btnmorelist");
			list.html('<li><a href="#"><img src="image/ic_groupchat.png" class="ui-li-icon"/>发起群聊</a></li><li><a href="#"><img src="image/ic_newfriends_2.png" class="ui-li-icon"/>添加朋友</a></li><li><a href="#"><img src="image/ic_scan_white.png" class="ui-li-icon"/>扫一扫</a></li><li><a href="#"><img src="image/ic_pay.png" class="ui-li-icon"/>收付款</a></li><li><a href="#"><img src="image/ic_feedback.png" class="ui-li-icon"/>帮助和反馈</a></li>');
			list.listview("refresh");
		}
	});
	$("#navbarlist li").on("tap", function(){
		if(this == lastTab) return;
		//上一个按钮恢复未选中状态
		var img = $(lastTab).children("img");
		var a = $(lastTab).children("a");
		a.css("color", "#8a8a8a");
		img.attr("src", "image/" + lastTab.id + "_normal.png");
		lastTab = this;
		
		//改变按钮的样式
		var img = $(this).children("img");
		var a = $(this).children("a");
		a.css("color", "#2aa515");
		img.attr("src", "image/" + this.id + "_checked.png");
		
		//切换列表
		if(this.id == "tab_chat"){
			set2ChatMsgList();
		}else if(this.id == "tab_addressbook"){
			set2AddressbookList();
		}else if(this.id == "tab_found"){
			set2FoundList();
		}else if(this.id == "tab_me"){
			set2MeList();
		}
	});
});

//调整导航栏的宽度
function adjustNavBarWidth(){
	$("ul.navbar li").css("width", screenWidth / 4 - 5 + "px");
}

//设置悬浮窗的位置
function adjustFloatPosition(){
	var floatWidth = $("div.float").width();
	$("div.float").css("left", screenWidth - floatWidth - 10 + "px");
}

//初始化列表内容
function initMyList(content){
	var mylist = $("#mylist");
	mylist.html(content);
	//重新渲染listview
	mylist.listview("refresh");
}

//设置为聊天列表
function set2ChatMsgList(){
	var content = "";
	for(var i = 0; i < 20; i++){
		content += '<li><a href="#"><img src="image/head.jpg" style="margin-left:5px;margin-top:5px;width:70px;height:70px;"/><p style="float:right;color:#8a8a8a">17:26</p><h2>好友</h2><p style="color:#8a8a8a">这是聊天消息</p></a></li>';
	}
	initMyList(content);
}

//设置为通讯录列表
function set2AddressbookList(){
	var s = new Array();
	s[0] = "新的朋友";
	s[1] = "群聊";
	s[2] = "标签";
	s[3] = "公众号";
	var imgnames = new Array();
	imgnames[0] = "image/ic_newfriends.png";
	imgnames[1] = "image/ic_chatgroup.png";
	imgnames[2] = "image/ic_tag.png";
	imgnames[3] = "image/ic_publicnumber.png";
	var colors = new Array();
	colors[0] = "#FF6100";
	colors[1] = "#228B22";
	colors[2] = "#4169E1";
	colors[3] = "#4169E1";
	
	var content = "";
	for(var i = 0; i < s.length; i++){
		content += '<li><a href="#"><img src="' + imgnames[i] + '" style="background:' + colors[i] + '" class="ui-li-icon"/>' + s[i] + '</a></li>';
	}
	
	content += '<li data-role="list-divider">A</li>';
	content += '<li><a href="#"><img src="image/head.jpg" class="ui-li-icon"/>A联系人1</a></li>';
	content += '<li><a href="#"><img src="image/head.jpg" class="ui-li-icon"/>A联系人2</a></li>';
	content += '<li><a href="#"><img src="image/head.jpg" class="ui-li-icon"/>A联系人3</a></li>';
	content += '<li data-role="list-divider">B</li>';
	content += '<li><a href="#"><img src="image/head.jpg" class="ui-li-icon"/>B联系人1</a></li>';
	content += '<li><a href="#"><img src="image/head.jpg" class="ui-li-icon"/>B联系人2</a></li>';
	content += '<li><a href="#"><img src="image/head.jpg" class="ui-li-icon"/>B联系人3</a></li>';
	content += '<li data-role="list-divider">C</li>';
	content += '<li><a href="#"><img src="image/head.jpg" class="ui-li-icon"/>C联系人1</a></li>';
	content += '<li><a href="#"><img src="image/head.jpg" class="ui-li-icon"/>C联系人2</a></li>';
	content += '<li><a href="#"><img src="image/head.jpg" class="ui-li-icon"/>C联系人3</a></li>';
	content += '<li data-role="list-divider">D</li>';
	content += '<li><a href="#"><img src="image/head.jpg" class="ui-li-icon"/>D联系人1</a></li>';
	content += '<li><a href="#"><img src="image/head.jpg" class="ui-li-icon"/>D联系人2</a></li>';
	content += '<li data-role="list-divider">E</li>';
	content += '<li><a href="#"><img src="image/head.jpg" class="ui-li-icon"/>E联系人1</a></li>';
	
	initMyList(content);
}

//设置为发现列表
function set2FoundList(){
	var s = new Array();
	s[0] = "朋友圈";
	s[1] = "扫一扫";
	s[2] = "摇一摇";
	s[3] = "附近的人";
	s[4] = "漂流瓶";
	s[5] = "购物";
	s[6] = "游戏";
	var imgnames = new Array();
	imgnames[0] = "image/ic_friendscircle.png";
	imgnames[1] = "image/ic_scan.png";
	imgnames[2] = "image/ic_shake.png";
	imgnames[3] = "image/ic_nearbypeople.png";
	imgnames[4] = "image/ic_driftingbottle.png";
	imgnames[5] = "image/ic_shopping.png";
	imgnames[6] = "image/ic_game.png";

	var content = "";
	for(var i = 0; i < s.length; i++){
		if(i == 0 || i % 2 != 0){
			content += '<li data-role="list-divider"></li>';
		}
		content += '<li><a href="#"><img src="' + imgnames[i] + '" class="ui-li-icon"/>' + s[i] + '</a></li>';
	}
	0,1,3,5
	
	initMyList(content);
}

//设置为我的列表
function set2MeList(){
	var s = new Array();
	s[0] = "相册";
	s[1] = "收藏";
	s[2] = "钱包";
	s[3] = "卡包";
	s[4] = "表情";
	s[5] = "设置";
	var imgnames = new Array();
	imgnames[0] = "image/ic_album.png";
	imgnames[1] = "image/ic_collection.png";
	imgnames[2] = "image/ic_wallet.png";
	imgnames[3] = "image/ic_cardpackage.png";
	imgnames[4] = "image/ic_expression.png";
	imgnames[5] = "image/ic_setting.png";
	
	var content = "";
	content += '<li data-role="list-divider"></li>';
	content += '<li><a href="#"><img src="image/head.jpg" style="margin-left:5px;margin-top:5px;width:70px;height:70px;"/><h1 style="float:left;margin-top:18px">蜡笔小新</h1><img src="image/qrcode.png" style="float:right;width:20px;height:20px;margin-top:18px"/></a></li>';
	for(var i = 0; i < s.length; i++){
		if(i % 2 == 0 || i > 3){
			content += '<li data-role="list-divider"></li>';
		}
		content += '<li><a href="#"><img src="' + imgnames[i] + '" class="ui-li-icon"/>' + s[i] + '</a></li>';
	}
	
	initMyList(content);
}
</script>
</head>
<body>

<div data-role="page" id="page_main" class="page">
	<div data-role="header" data-position="fixed" data-theme="b" class="header">
		<div style="font-size:20px;float:left;">微信</div>
		<div class="button" style="margin-right:10px;" id="fun_more">
			<img src="image/ic_more.png"/>
		</div>
		<div class="button" id="fun_search">
			<img src="image/ic_search.png"/>
		</div>
		
	</div>
	<div data-role="main" class="ui-content">
		<div class="float">
			<ul data-role="listview" data-icon="false" data-theme="b" id="btnmorelist"></ul>
		</div>
		<ul data-role="listview" data-icon="false" id="mylist"></ul>
	</div>
	<div data-role="footer" data-position="fixed" style="background-color:#FFFFFF">
		<ul id="navbarlist" class="navbar">
			<li id="tab_chat">
				<img src="image/tab_chat_checked.png"/><br/>
				<a href="#" style="color:#2aa515">微信</a>
			</li>
			<li id="tab_addressbook">
				<img src="image/tab_addressbook_normal.png"/><br/>
				<a href="#">通讯录</a>
			</li>
			<li id="tab_found">
				<img src="image/tab_found_normal.png"/><br/>
				<a href="#">发现</a>
			</li>
			<li id="tab_me">
				<img src="image/tab_me_normal.png"/><br/>
				<a href="#">我</a>
			</li>
		</ul>
	</div>
</div>


</body>
</html>

打包成APP,用WebView来加载页面

MainActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends Activity {

    private final String ASSETPATH = "file:///android_asset/";

    private WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initWebView();
    }

    private void initWebView() {
        webView = (WebView) findViewById(R.id.webView);
        //WebView加载web资源
        webView.loadUrl(ASSETPATH + "page_chat.html");
        //覆盖WebView默认使用第三方或系统默认浏览器打开网页的行为,使网页用WebView打开
        webView.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                //返回值是true的时候控制用WebView打开,为false调用系统浏览器或第三方浏览器
                view.loadUrl(url);
                return true;
            }
        });
        //允许允许Javascript
        WebSettings settings = webView.getSettings();
        settings.setJavaScriptEnabled(true);
        //使用缓存
        settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
    }
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值