用Webview+HTML5做一個表白APP
0x01
近年來,WebView + HTML5做移動應用開發也越來越流行,於是就打算把一個HTML5的表白網頁放在Webview中,封裝在一個APP中。用手機,也就可以達到很好的展示效果。(剛開始的時候,直接通過手機瀏覽器訪問,無法播放背景音樂,並且橫豎屏切換體驗並不加。)
因為不太會寫文章,所以就廢話少說,先上一張效果圖
做為程式設計師,有時候還是要浪漫一下的,用這個去向喜歡的女生表白,應該還算是浪漫吧。
0x02
開發環境:android studio 2.2
除錯裝置:魅族note3(因為是同款手機啦!)
Web伺服器:阿里雲虛擬機器(用部署HTML5頁面)
0x03
本文主要是講一下如何在Web View中載入HTML5的。所以不會講述HTML5的實現。HTML5的原始碼是用的他人的原始碼。在
開始建立一個android工程
通過Gradle建立android工程就不再贅述了,網上有很多教程。
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"
android:layout_width ="match_parent" android:layout_height="match_parent"
tools:context="com.example.love.MainActivity">
<WebView
android:id="@+id/m_web"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="15dp"
android:layout_marginRight ="15dp"></WebView>
</LinearLayout>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.love">
<!-- 新增允許網路訪問的許可權 -->
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher"
android:label="@string/app_name" android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity"
android:theme="@style/NoTitleFullscreen" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
android:theme="@style/NoTitleFullscreen"
這段程式碼主要是去掉手機的標題欄,讓介面全屏顯示
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"
防止手機在進行橫豎屏切換時,重新載入HTML5
MainActivity.class
package com.example.love;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.media.MediaPlayer;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Window;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private WebView webView;
//背景音樂播放,用HTML5的 <audio>標籤在手機中不會播放音樂的,所以,把音樂播放放在了APP中來控制。
MediaPlayer player;
String TAG = "WebClientDemo";
boolean isLoadResources = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
setContentView(R.layout.activity_main);
// 建立一個Web view物件
webView =(WebView) findViewById(R.id.m_web);
// 設定Web view屬性,能夠執行javascript指令碼
webView.getSettings().setJavaScriptEnabled(true);
//設定WebView是否使用viewport,當該屬性被設定為false時,載入頁面的寬度總是適應WebView控制元件寬度;當被設定為true,當前頁面包含viewport屬性標籤,在標籤中指定寬度值生效,如果頁面不包含viewport標籤,無法提供一個寬度值,這個時候該方法將被使用。
webView.getSettings().setUseWideViewPort(true);
//設定WebView是否支援使用螢幕控制元件或手勢進行縮放,預設是true,支援縮放。
webView.getSettings().setSupportZoom(true);
//設定WebView是否使用預覽模式載入介面。
webView.getSettings().setLoadWithOverviewMode(true);
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view,String url){
webView.loadUrl(url);
return true;
}
public void onLoadResource(WebView view, String url) {
if (!isLoadResources) {
Log.i(TAG, "Block resource loading:" + url);
return;
} else {
Log.i(TAG, "Continue resource loading:" + url);
super.onLoadResource(view, url);
}
}
// Intercepts error message
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
Log.i(TAG, failingUrl);
Toast.makeText(MainActivity.this, "網頁錯誤: " + errorCode + " 網頁不可用",
Toast.LENGTH_LONG).show();
}
// Intercepts form resubmission
public void onFormResubmission(WebView view, Message dontResend,
Message resend) {
Log.i(TAG, "Resubmission");
Toast.makeText(MainActivity.this, "不可重複提交,按Back回到上級網頁",
Toast.LENGTH_SHORT).show();
}
// Intercepts page started event
public void onPageStarted(WebView view, String url, Bitmap favicon) {
Log.i(TAG, "Page load start");
}
// Intercepts page finished event
public void onPageFinished(WebView view, String url) {
Log.i(TAG, "Page load finish");
}
});
try {
//清理快取,這裡如果不清理快取,有時候重新載入程式,JS cavas沒有執行
webView.clearCache(true);
//載入HTML5網頁(這個網頁就是你掛在伺服器中的路徑)
webView.loadUrl("http://tomopad.com/love.html");
}catch (Exception ex){
ex.printStackTrace();
}
player = MediaPlayer.create(this,R.raw.wyy);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
@Override
protected void onStop() {
if(player.isPlaying()){
player.pause();
}
super.onStop();
}
@Override
protected void onStart() {
if(!player.isPlaying()){
player.start();
}
super.onStart();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Intent mHomeIntent = new Intent(Intent.ACTION_MAIN);
mHomeIntent.addCategory(Intent.CATEGORY_HOME);
mHomeIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
MainActivity.this.startActivity(mHomeIntent);
return true;
}else {
super.onKeyDown(keyCode,event);
return false;
}
}
}
0x04
相關推薦
用Webview+HTML5做一個表白APP
0x01 近年來,WebView + HTML5做移動應用開發也越來越流行,於是就打算把一個HTML5的表白網頁放在Webview中,封裝在一個APP中。用手機,也就可以達到很好的展示效果。(剛開始的時候,直接通過手機瀏覽器訪問,無法播放背景音樂,並且橫豎屏切
用javascript和html5做一個音樂播放器,附帶源碼
功能 優化 str 自由 所有 音樂app 作者 弧形 ner 效果圖: 實現的功能 1、首頁 2、底部播放控件 3、播放頁面 4、播放列表 5、排行榜 6、音樂搜索 輸入搜索關鍵詞,點擊放大鏡圖標 7、側邊欄 目錄結構 開發心得與總結 1、輪播圖 首
用HTML5做一個個人網站,此文僅展示個人主頁介面。內附原始碼下載地址
html5 ,用css去修飾自己的個人主頁 程式碼如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio
用React-Native+Mobx做一個迷你水果商城APP
前言最近一直在學習微信小程式,在學習過程中,看到了wxapp-mall這個微信小程式的專案,覺得很不錯,UI挺小清新的,便clone下來研究研究,在看原始碼過程中,發現並不複雜,用不多的程式碼來實現豐富的功能確實令我十分驚喜,於是,我就想,如果用react-native來做一個類似這種小專案難不難呢,何況,寫
用Vue.js來開發一個電影App的前端部分
column 多種方式 -a 目標 部分 cli 多路由 cdn tor 我們要構建一個什麽樣的App? 我們大多數人使用在線流媒體服務(如Netflix)觀看我們最喜歡的電影或者節目。這篇文章將重點介紹如何通過使用vue.js 2建立一個類似風格的電影流媒體WEB交互界
用MVC5+EF6+WebApi 做一個小功能(三) 項目搭建
個人 bapi 依賴 mic ots add spl 空白 項目 一般一個項目開始之前都會有啟動會,需求交底等等,其中會有一個環節,大講特講項目的意義,然後取一個高大上的項目名字,咱這是一個小功能談不上項目,但是名字不能太小氣了。好吧,就叫Trump吧。沒有任何含義,玩嘛!
用MVC5+EF6+WebApi 做一個考試功能(五) 前端主題
mvc fun 用戶 jquery github 2.4 body 平臺 alert 內容概述 前面絮絮叨叨沒正事,到現在為止也沒有開始寫代碼,不過在考慮下貌似這一節還是開始不了。 B/S架構開發有一個特點,就是用瀏覽器打開,不同的用戶群體可能有不同的風格,不論是管
用enumitem巨集包做一個首行空兩格,第二行頂格的列表環境怎麼做
【問題描述】 我想做如圖的格式,但是我用下面的命令出不來 \begin{enumerate}[labelwidth=3em,itemindent=2em,labelsep=0.5em,listparindent=2em,leftmargin=0em,la
[心得]用jenkins+jira做自動化質量測試開發
jenkins+jira的方案在網際網路圈非常流行。 jira主要用來管理project上的任務,類似老前輩bugzilla。但是前者收費,後者開源免費。我們用了一段時間jira,後來就使用最原始的excel來管理研發需求了。現在jira僅僅用來規範上線流程。
用java的JFrame做一個登入系統的介面
package com.sxt; import java.awt.Container; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import jav
做一個表白小程式
這裡演示一個表白小程式。 程式的靈感來自於我曾經某天刷騰訊小視訊,發現一個表白程式十分的有趣,雙十一那天去網上搜了搜還沒有搜到現成的程式碼。於是就在網上原有程式碼的基礎之上,自己動手擼了一番。用的是Python語言的Tkinter。 廢話不說,看效果: 程式碼
用 DELPHI 為 WINDOWS 做一個帶聲音的模擬鬧鐘
嗨,大家好。我是夢尋,這是我的第一次發帖子,請大家多多鼓勵、多多支援,畢竟嘛,予人方便予己方便。OK,轉入正題,現在就來講如何做一個帶響聲的錶盤式的 CLOCK。 首先我們應選擇新建一個程式,並在窗體中加入以下元件: Timer1: TTimer; Im
用NodeJs使用Io做一個聊天室
浪費了“黃金五年”的Java程式設計師,還有救嗎? >>>
用 Vue 做一個簡單的購物app
有意思 應用程序 其中 ins com 簡單的 node.js 引入 大神 前言 最近在學習Vue的使用。看了官方文檔之後,感覺挺有意思的。於是著手做了一個簡單的購物app。這是我第一次在這個網站上寫分享,如有不當之處,請多多指教。 一整個項目寫下來,最大的感覺就是組件式開
html5表白神器開發,做一個浪漫的程式設計師
效果知識點:css33D場景、3D變換、愛心製作技巧、3D立方體制作技巧、自定義動畫,原生js DOM節點操作、迴圈等。 html5表白神器原始碼: <!doctype html><!--聲明當前文件為html文件--> <html lang
用python來做一個APP | python GUI 基礎(實戰)
上程式碼 import tkinter as tk class APP: def __init__(self, master): frame = tk.Frame(mas
HTML5用audio標籤做一個最簡單的音訊播放器
在做系統的時候,要求做一個音訊播放器,就在網上查找了一些資料,發現這樣的資料還是很千篇一律的,EasyUI框架並沒有給我們一個音訊播放器的功能,在bootstrap上有,但是也是結合html5來寫的,因此,我們在這裡就用純的html5血一個音訊播放器,如何播放本地的音訊。
用HTML5+CSS3做一個好看的介面
效果圖:滑鼠經過影象的時候會觸發hover 1s內轉一圈=-=程式碼:<!DOCTYPE html><html lang="zh-cn"> <head> <title>MyHtml.html</title>
用Java GUI做一個簡單的管理系統
java 管理系統 gui 1.先完成主頁面MainUI(代碼如下)package com.pag_1; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.
怎麽用cookie做一個選項卡?
eight splay i++ 作用 code round tab 多網站 個性化 什麽是cookie? Cookies雖然一般都以英文名呈現,但是它還是有一個可愛的中文名“小甜餅”。Cookies是指服務器暫存放在你的電腦裏的txt格式的文本文件資料,主要用