c:\Users\\.android\avd\Android-2_2.avd
do the following: move c:\Users\\.android\avd\Android-2_2.avd
to some other folder, for example, in c:\Android\Android-2_2.avd
, open the Android-2_2.ini
and change path=
to the appropriate one.New > Android Project
phonegap.jar
to the Build Path. To do this, right-click on the project root, select Properties, select Java Build Path from the list, select the Libraries tab, click Add JARs ... and specify the path to phonegap.jar
TumblrReader.java
, which lies in the folder src /Activity
with DroidGap
setContentView()
with super.loadUrl("file:///android_asset/www/index.html");
import com.phonegap.*;
android.permission.INTERNET
: <supports-screens android:largeScreens="true" android:normalScreens="true" android:smallScreens="true" android:resizeable="true" android:anyDensity="true" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
android:configChanges="orientation|keyboardHidden"
Run As > Android Application
If you did everything correctly, then the emulator should open with your application.index.html
in the /assets/www
folder <!DOCTYPE HTML> <html> <head> </head> <body> </body> </html>
<head> <title>Tumblr Reader</title> <!-- jQuery Mobile --> <link rel="stylesheet" href="libs/jquery.mobile.css" /> <link rel="stylesheet" href="css/main.css" /> <!-- jQuery & jQuery Mobile --> <script type="text/javascript" charset="utf-8" src="libs/jquery.js"></script> <script type="text/javascript" charset="utf-8" src="libs/jquery.mobile.js"></script> <!-- phonegap --> <script type="text/javascript" charset="utf-8" src="libs/phonegap.js"></script> <!-- --> <script type="text/javascript" charset="utf-8" src="js/main.js"></script> </head>
<!-- --> <div data-role="page" id="dashboard"> <div data-role="header" data-position="fixed"> <!-- options --> <a href="#options" data-icon="gear">Options</a> <h1>Dashboard</h1> </div> <div data-role="content"> <div class="ui-grid-b" id="dashboard-list"> <!-- --> </div> </div> </div>
<!-- --> <div data-role="page" id="dialog"> <div data-role="header"> <!-- --> <a data-rel="back" data-icon="back">Back</a> <h1>Image</h1> <!-- - --> <!-- about:blank --> <a href="about:blank" data-icon="search" data-theme="b" id="full-image">Full</a> </div> <div data-role="content"> <!-- about:blank --> <p><img src="about:blank" /></p> </div> </div>
<!-- --> <div data-role="page" id="options"> <div data-role="header"> <h1>Options</h1> </div> <div data-role="content"> <div data-role="fieldcontain"> <label for="name">Tumblr user:</label> <!-- Tumblr --> <input type="text" name="name" id="options-name" value="" /> </div> <!-- " " --> <a data-role="button">Ok</a> </div> </div>
#dashboard-list div, #dialog p { text-align: center; }
http://%user%.tumblr.com/api/read/json
JavaScript will come to us like this: var tumblr_api_read = {/* - ... */}
tumblr_api_read.tumblelog.title
is the blog header, and tumblr_api_read.posts
is an array of posts of the format: [{ 'type': 'photo', 'photo-url-1280': 'http://...', 'photo-url-250': 'http://...', 'photo-url-75': 'http://...', /* - */ }, ...]
<div class="ui-block-a"> <a href="#dialog"> <img data-full-src="http://..." data-big-src="http://..." src="http://..." /> </a> </div>
/** * * * @param {Object} posts * * @returns {String} */ var render = function (posts) { var view = '', // .. // index = 0; // posts.forEach(function(post){ // if (post.type !== 'photo') { return; } view += '<div class="ui-block-' + suffix[index % 3] + '">' + // dialog '<a href="#dialog">' + '<img data-full-src="' + post['photo-url-1280'] + '" data-big-src="' + post['photo-url-250'] + '" src="' + post['photo-url-75'] + '" />' + '</a>' + '</div>'; index++; }); return view; };
http://%user%.tumblr.com/api/read/json
and gets the relevant data, using the data we draw a list of pictures. /** * * * @param {String} [user='tumblr'] */ var load = function (user) { user = user || 'tumblr'; // $.mobile.pageLoading(); // var timeoutId = window.setTimeout(function () { $.mobile.pageLoading(true); }, 3000); // $.getScript('http://' + user + '.tumblr.com/api/read/json', function (data, status) { // if (status === 'success'){ // $dashboard.find('h1').text(tumblr_api_read.tumblelog.title); // $('#dashboard-list').html(render(tumblr_api_read.posts)); } else { // - alert('Error occurred while loading ' + user); } // $.mobile.pageLoading(true); // window.clearTimeout(timeoutId); }); };
var init = function () { // 1 , if (init.called) { return; } init.called = true; // $dashboard = $('#dashboard'); $dashboardList = $('#dashboard-list'); $dialogImg = $('#dialog').find('img'); $fullImg = $('#full-image'); $options = $('#options'); $optionsName = $('#options-name'); // $dashboardList.delegate('a', 'click', function () { var $img = $(this).find('img'); // $dialogImg.attr('src', $img.data('big-src')); $fullImg.attr('href', $img.data('full-src')); }); // currentUser = window.localStorage.getItem("tumblr-reader-user") || 'design'; // $optionsName.val(currentUser); // $options.find('a').click(function () { var newUser = $optionsName.val(); // if (currentUser !== newUser) { // currentUser = newUser; // window.localStorage.setItem("tumblr-reader-user", currentUser); // load(currentUser); } // $.mobile.changePage('#dashboard'); }); // load(currentUser); }; init.called = false; // , document.addEventListener("deviceready", init, true); // $(init);
Run As > Android Application
, if you made minor edits and do not want to reassemble the application, simply open index.html
in any WebKit browser.android.permission.INTERNET
), webOS , SymbianSource: https://habr.com/ru/post/118059/
All Articles