tag:blogger.com,1999:blog-38232061178070811302024-03-29T17:41:00.452+06:00PROGMANISTДанный блог посвящен программированию и всему что связано с программированием.alukardevhttp://www.blogger.com/profile/12265214722107366401noreply@blogger.comBlogger14125tag:blogger.com,1999:blog-3823206117807081130.post-15422202897299364172014-08-22T18:31:00.001+07:002014-08-22T18:31:49.714+07:00 AppCent - cайт для заработка денег путем установок приложений на Android, iOS. <br>ссылка: <a href="http://appcent.ru/?partner=4jjf92"/> AppCent </a> </br>
После регистрации, в личном аккаунте на вкладке "Приложения" отображается список приложений и сумма денег, которые будут зачислены на счет после установки приложения.
<span id="fullpost">
То, что скрыто под катом
</span>alukardevhttp://www.blogger.com/profile/12265214722107366401noreply@blogger.com0tag:blogger.com,1999:blog-3823206117807081130.post-56828344013051799862013-05-07T20:25:00.000+07:002014-12-19T02:08:52.689+06:00C# Создание Windows ServiceC# Создание Windows Service
<span id="fullpost">
<script type="text/javascript">
function gaLogEvent(category, action, label, value, noninteract)
{
_gaq.push(['_trackEvent', category, action,
label, value, noninteract]);
}
</script>
<br>Для создания сервиса использовалась среда Visual Studio 2010.</br>
1. Откройте студию и создайте новый проект
<img border="0" height="320" width="480" src="http://i1206.photobucket.com/albums/bb460/alukardev/c%20sharp%20Windows%20Service/1-1.png" />
<br/>2. Для того чтобы службу можно было установить необходимо добавить в проект installer.
<br/>В Sulution Explorer дважды щелкните по классу "Service1.cs", в появившемся окне щелкните правой кнопкой мыши и выберите "Add Installer". Появится новый класс "ProjectInstaller.cs" с двумя компонентами: "serviceProcessInstaller" и "serviceInstaller".
<br>Установите свойства этих компонентов как показано на рисунках:
<br>
<br>serviceProcessInstaller
<img border="0" height="320" width="480" src = "http://i1206.photobucket.com/albums/bb460/alukardev/BloggerEdit/2.png" />
<br>
<br>serviceInstaller
<img border="0" height="320" width="480" src = "http://i1206.photobucket.com/albums/bb460/alukardev/BloggerEdit/3.png" />
<b3> 3. Откройте код файла "Service1.cs". Здесь мы видим два метода "OnStart" и "OnStop" которые срабатывают при запуске и остановке сервиса соответственно.
<br>Допустим нам необходимо чтобы наш сервис каждую секунду записывал строку в файл.
<br>Для этого создадим отдельный поток который будет запускаться при старте сервиса в методе "OnStart". В данном котором будем производить запись в файл:
<pre class="brush:xml">private readonly Thread workerThread;
public Service1()
{
InitializeComponent();
workerThread = new Thread(DoWork);
workerThread.SetApartmentState(ApartmentState.STA);
}
</pre>
<br> В методе "DoWork" реализуем запись в файл:
<pre class="brush:xml"> private static void DoWork()
{
while (true)
{
string fname = @"c:\temp\temp.txt";
using (StreamWriter stream = new StreamWriter(fname, true))
{
stream.WriteLine("Hello World!");
}
// do some work, then
Thread.Sleep(1000);
}
}
</pre>
<br> Теперь при старте сервера будем запускать поток, а при остановке сервера - останавливать поток:
<pre class="brush:xml"> protected override void OnStart(string[] args)
{
workerThread.Start();
}
protected override void OnStop()
{
workerThread.Abort();
}
}
</pre>
<br> Добавим также метод который будет записывать в лог нашего сервиса события запуска и остановки сервера:
<pre class="brush:xml"> public void AddLog(string log)
{
try
{
if (!EventLog.SourceExists("MyExampleService"))
{
EventLog.CreateEventSource("MyExampleService", "MyExampleService");
}
eventLog1.Source = "MyExampleService";
eventLog1.WriteEntry(log);
}
catch { }
}
</pre>
<br> И будем вызывать его при запуске и остановке сервера.
<br> Полностью код будет выглядеть следующим образом
<pre class="brush:xml">
public partial class Service1 : ServiceBase
{
private readonly Thread workerThread;
public Service1()
{
InitializeComponent();
workerThread = new Thread(DoWork);
workerThread.SetApartmentState(ApartmentState.STA);
}
protected override void OnStart(string[] args)
{
AddLog("Service is started");
string fname = @"c:\temp\temp.txt";
using (StreamWriter stream = new StreamWriter(fname, true))
{
stream.WriteLine("Служба запущена!");
}
workerThread.Start();
}
protected override void OnStop()
{
AddLog("Service is stopped");
string fname = @"c:\temp\temp.txt";
using (StreamWriter stream = new StreamWriter(fname, true))
{
stream.WriteLine("Служба остановлена!");
}
workerThread.Abort();
}
public void AddLog(string log)
{
try
{
if (!EventLog.SourceExists("MyExampleService"))
{
EventLog.CreateEventSource("MyExampleService", "MyExampleService");
}
eventLog1.Source = "MyExampleService";
eventLog1.WriteEntry(log);
}
catch { }
}
private static void DoWork()
{
while (true)
{
string fname = @"c:\temp\temp.txt";
using (StreamWriter stream = new StreamWriter(fname, true))
{
stream.WriteLine("Hello World!");
}
// do some work, then
Thread.Sleep(1000);
}
}
}
</pre>
<br> После того как сервис создан, его необходимо установить. В этом нам поможет утилита "installutil.exe", которая распространяется вместе с фраемворком.
<br> Создайте батник со следующим содержимым
<pre class="brush:xml">
C:\Windows\Microsoft.NET\Framework\v4.0.30319\installutil.exe E:\MyProjects\test\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe
pause
</pre>
<br> здесь запускается утилита "installutil.exe", которой в качестве указывается наш сервис
<br>запустите созданный батник из командной строки
<br>если установка сервиса прошла успешно вы увидите сообщения:
<br>"The Commit phase completed successfully".
<br>"The transacted install has completed"
<br>
<br>Теперь можно запустить наш сервер и посмотреть результат его выполнения
<br>Зайдите в "Панель управления -> Администрирование -> Службы". Найдите установленную вами службу и запустите её
<img border="0" height="320" width="480" src = "http://i1206.photobucket.com/albums/bb460/alukardev/BloggerEdit/4.png" />
<br> Теперь можно открыть созданный файл и посмотреть результат работы нашей службы
<img border="0" height="320" width="480" src = "http://i1206.photobucket.com/albums/bb460/alukardev/BloggerEdit/5.png" />
<br> Как видно служба прекрасно отрабатывает
<br> Теперь остановите службу.
<br> Также в логе службы мы можем просмотреть когда наша служба запускалась и останавливалась
<br> Зайдите в "Панель управления -> Администрирование -> Просмотр событий -> Журнал приложений и служб".
<br> Здесь мы можем увидеть когда наша служба запускалась и останавливалась
<img border="0" height="320" width="480" src = "http://i1206.photobucket.com/albums/bb460/alukardev/BloggerEdit/6.png" />
</span>alukardevhttp://www.blogger.com/profile/12265214722107366401noreply@blogger.com0tag:blogger.com,1999:blog-3823206117807081130.post-79111971956490592062012-03-12T13:54:00.000+07:002013-05-07T18:48:42.071+07:00Unity3d + Blender + GIMP - создание анимации с помощью спрайтов.<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div class="MsoNormal" style="text-indent: 35.4pt;">
Для создания анимации с помощью
спрайтов я использовал метод создания 3<span lang="EN-US">d</span><span lang="EN-US"> </span>модели и рендеринга её в различных
положениях. Для этого я использовал следующие программы: <a href="http://www.blender.org/download/get-blender/"><span lang="EN-US">Blender</span> 2.6</a>, <a href="http://www.gimp.org/downloads/"><span lang="EN-US">GIMP</span> 2.6</a>,<a href="http://registry.gimp.org/node/20943"> плагин для <span lang="EN-US">GIMP</span><span lang="EN-US"> </span>(для создания спрайтов)</a> и <a href="http://unity3d.com/unity/download/"><span lang="EN-US">Unity</span>3<span lang="EN-US">d</span> 3.5</a>.<o:p></o:p></div>
<span id="fullpost">
<div align="center" class="MsoNormal" style="text-align: center;">
<span lang="EN-US"><span style="color: #e69138; font-size: x-large;"><b>Blender.</b></span><o:p></o:p></span></div>
<div class="MsoNormal">
<span lang="EN-US"> </span>Сделаем анимацию простого
куба. Запускаем <span lang="EN-US">Blender,
</span>создаем куб<span lang="EN-US">: <b>Shift+A -> Mesh->Cube.</b><o:p></o:p></span></div>
<div class="MsoNormal">
Настраиваем камеру чтобы она смотрела на куб. Нажимаем<b> <span lang="EN-US">F</span>12</b>, ждем пока рисунок
отрендерится, потом жмем<b> <span lang="EN-US">F</span>3</b>.
Во вкладке <b><span lang="EN-US">Save</span><span lang="EN-US"> </span><span lang="EN-US">as</span><span lang="EN-US"> </span><span lang="EN-US">Image</span></b><span lang="EN-US"> </span>выбираем<b> <span lang="EN-US">PNG</span><span lang="EN-US"> </span>и <span lang="EN-US">RGBA</span><span lang="EN-US"> </span></b>(чтоб фон был прозрачным). Называем рисунок <b><span style="color: red;">1.<span lang="EN-US">png</span></span></b>. Потом нажимаем <span lang="EN-US"><b>Esc</b></span>. Поднимем немного куб, опять рендер
и сохранение. Называем рисунок<b><span style="color: red;"> 2.<span lang="EN-US">png</span></span></b>. Проделайте так несколько
раз.<span lang="EN-US"><o:p></o:p></span></div>
<div align="center" class="MsoNormal" style="text-align: center;">
<span lang="EN-US"><b><span style="color: #e69138; font-size: x-large;">GIMP.</span></b><o:p></o:p></span></div>
<div class="MsoNormal">
Теперь
когда у нас готовы рисунки, нужно их склеить в один спрайт. Для этого сначала
нужно установить плагин в <span lang="EN-US">GIMP</span>.
Переходим по<a href="http://registry.gimp.org/node/20943"> ссылке</a> скачиваем плагин, кладем его в директорию<span style="font-family: Arial, Helvetica, sans-serif;"> <span style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; line-height: 115%;"><b>{GIMPHOME}\share\gimp\2.0\scripts\SpriteSheet.scm</b></span></span>
Запускаем<b> <span lang="EN-US">GIMP</span></b>,
жмем <b>Фильтры – <span lang="EN-US">Scripts</span>-<span lang="EN-US">Fu</span><span lang="EN-US"> </span>– обновить
сценарии</b>. Плагин установлен. Теперь<span style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; color: #494949; font-family: 'Courier New'; font-size: 9pt; line-height: 115%;"> </span>жмем<b> Фаил
– Открыть как слои</b>, и выбираем наша рисунки, жмем <b>Фильтры – <span lang="EN-US">Sprite</span>-<span lang="EN-US">Sheets</span><span lang="EN-US"> </span>– <span lang="EN-US">Create</span><span lang="EN-US"> </span><span lang="EN-US">from</span><span lang="EN-US"> </span><span lang="EN-US">layers</span>. </b>У вас появиться
спрайт. Сохраняем его, жмем в появившемся окне <b>Фаил – Сохранить как…</b> ,
открываем вкладку<b> Выберите тип файла (по расширениею)</b> и выбираем там <span lang="EN-US"><b>PNG</b></span>, жмем <b>сохранить</b> потом ещё
раз жмем <b>сохранить</b>. Всё спрайт готов, осталось загрузить его в <span lang="EN-US">Unity</span>3<span lang="EN-US">d</span><span lang="EN-US"> </span>и анимировать.<o:p></o:p></div>
<div align="center" class="MsoNormal" style="text-align: center;">
<span lang="EN-US"><b><span style="color: #e69138; font-size: x-large;">Unity3d.</span></b><o:p></o:p></span></div>
<div class="MsoNormal">
<span lang="EN-US"> </span>Создаем<b> <span lang="EN-US">Plane</span></b>. Поворачиваем его лицом к камере,
не забудьте добавить источник света. Добавляем наш спрайт в проект, создаем
новый материал, в качестве текстуры указываем наш спрайт. Выберите <b><span lang="EN-US">Shader</span>: <span lang="EN-US">Transparent</span><span lang="EN-US"> </span>– <span lang="EN-US">Diffuse</span></b>, чтобы фон был
прозрачным. Примените данный материал к созданному<b> <span lang="EN-US">Plane</span>.</b> Теперь осталось анимировать его,
делать мы это будем с помошью<a href="http://www.unifycommunity.com/wiki/index.php?title=Animating_Tiled_texture_-_Extended"> вот этого скрипта</a> Добавьте этот скрипт к<b> Plane</b>, и установите
нужные настройки в скрипте. <o:p></o:p></div>
<div class="MsoNormal">
Анимация
готова! Можете запустить проект и любоваться.<o:p></o:p></div>
</span>
</div>alukardevhttp://www.blogger.com/profile/12265214722107366401noreply@blogger.com1tag:blogger.com,1999:blog-3823206117807081130.post-20028807965711124442012-03-10T17:58:00.000+07:002012-03-10T20:43:02.276+07:00Blender 2.6 Hot Key (горячие клавиши).<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: center;">
<span style="font-size: x-large;"><b style="background-color: white; font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; line-height: 18px;"><span class="Apple-style-span" style="color: #99cc00;"> </span><span style="color: #e69138;">Горячие клавиши Blender 2.6</span></b><b><span style="color: #e69138;"> </span></b></span></div>
<div style="text-align: center;">
<span style="color: #e69138;"> <span style="font-size: large;"> <span style="font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif;"><span style="line-height: 18px;"><b>Общие:</b></span></span> </span> <b> </b></span></div>
<ol style="text-align: left;">
<li><b> F12</b> – рендер изображения.</li>
<li><b> F1</b> – открыть файл.</li>
<li><b> F2 </b>– сохранить файл.</li>
<li><b> Space</b> – вызывает меню поиска по командам Blender.</li>
<li><b> Shift + F</b> – режим полета камеры.</li>
<li> <b>Shift + Space</b> – полноэкранный режим просмотра.</li>
</ol>
<span id="fullpost">
</span><br />
<span id="fullpost">
</span><br />
<div style="text-align: center;">
<span id="fullpost"><b style="font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; line-height: 18px;"><span style="color: #e69138; font-size: large;">Перемещение в пространстве:</span></b></span></div>
<span id="fullpost">
<ol style="text-align: left;">
<li><b>Клавиши на дополнительной цифровой клавиатуре: 1,3,7</b> – вид спереди, справа и сверху соответственно. <b>0–</b> вид из камеры,<b> .(точка)</b> – сфокусироваться на объекте. <b>5 –</b> переключение между ортогональным и перспективным отображением. <b>2,8,4,6 –</b> вращение – вниз, вверх, влево и вправо соответственно. <b>+, - -</b> масштабирование. </li>
<li><b>Ctrl + 1,3,7 </b> – вид сзади, слева, снизу. <b>Ctrl + 2,8,4,6</b> – перемещение вниз, вверх, влево и вправо. <b>Ctrl + 5 </b>–сфокусироваться на курсоре.</li>
<li><b>ЛКМ</b> – перемещение курсора. Курсор определяет место, где будет создаваться новый объект. </li>
<li><b>ПКМ</b> – щелчок правой кнопкой мыши объекту выделяет этот объект (в объектном режиме).</li>
<li><b>Зажатое среднее колесо мыши + перемещение мыши</b> – вращение вокруг сцены.</li>
<li><b>Зажатое среднее колесо мыши + Shift + перемещение мыши</b> – передвижение.</li>
<li><b>Зажатое среднее колесо мыши + Ctrl + перемещение мыши</b> – масштабирование.</li>
<li><b>T </b>– открытие панели инструментов.</li>
<li><b>N</b> – открытие панели трансформации.</li>
<li><b>Tab</b> – переход между объектным режимом<b>(Object Mode)</b> и режимом редактирования <b>(Edit Mode).</b></li>
</ol>
<span id="fullpost">
<br />
</span><br />
<div>
<div style="text-align: center;">
<span id="fullpost" style="font-size: large;"><span id="fullpost"> </span><b style="font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; line-height: 18px;"><span style="color: #e69138;">Объектный режим (Object Mode):</span></b></span></div>
<div style="text-align: center;">
<span id="fullpost"><span id="fullpost"><b>Объектный режим предназначен для изменения объекта в целом.</b></span></span></div>
<ol style="text-align: left;"><span id="fullpost">
<li><b>Shift + A</b> – вызов меню добавления объектов.</li>
<li><b>Shift + S </b>– вызов меню точного расположения курсора.<i> (and Edit Mode)</i></li>
<li><b>R </b>– вращение объекта (если нажать х или у или z вращение будет происходить вокруг соответствующей оси). <i>(and Edit Mode)</i></li>
<li><b>G</b> – перемещение объекта (если нажать х или у или z перемещение будет происходить относительно соответствующей оси). <i>(and Edit Mode)</i></li>
<li><b>S</b> – масштабирование (если нажать х или у или z масштабирование будет происходить относительно соответствующей оси).<i> (and Edit Mode)</i></li>
<li><b>Shift+D</b> – создание копии объекта.</li>
<li><b>Del или X </b>– удаление выделенного объекта.</li>
<li><b>Z</b> – переход между заполненным и каркасным видом отображения объекта<i> (and Edit Mode).</i></li>
<li><b>Alt + Z</b> – переход между текстурированным и затененным видами объектов.<i> (and Edit Mode).</i></li>
<li><b>Ctrl + Z</b> – отмена последнего действия.</li>
<li><b>Ctrl + Shift + Z –</b> повторить последнее отмененное действие.</li>
<li><b>Ctrl+J </b>– объединение выделенных объектов.</li>
<li><b>M </b>– перемещение выделенных объектов в другие слои.</li>
<li><b>[~] </b>– объединение всех слоев.</li>
</span></ol>
<span id="fullpost"><br /></span><br />
<div style="text-align: center;">
<span id="fullpost"><span style="color: #e69138; font-size: large;"><span id="fullpost"><b> </b></span><b style="font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; line-height: 18px;">Режим редактирования (Edit Mode):</b></span></span></div>
<div style="text-align: center;">
<span id="fullpost"><span id="fullpost"><b> Режим редактирования предназначен для изменения формы объекта.</b></span></span></div>
<ol style="text-align: left;"><span id="fullpost">
<li><b>Shift + A</b> – вызов меню добавления объектов (добавленный объект будет объединён с текущим объектом).</li>
<li><b>Shift+D</b> – создание копии объекта (скопированный объект будет объединен с исходным).</li>
<li><b>ПКМ </b>– выделение вершин, ребер или граней.</li>
<li><b>Ctrl+Tab</b> – изменения режима выделения(вершины, грани, ребра).</li>
<li><b>ПКМ + Shift </b>– выделение нескольких вершин, граней, ребер.</li>
<li><b>B </b>– выделение прямоугольником.</li>
<li><b>С</b> – выделение окружностью. (с помощью колесика мыши или кнопок +, -, можно менять размер окружности).</li>
<li><b>A</b> – выделение всех вершин. (повторное нажатие – снятие выделения).</li>
<li><b>E</b> – экструдирование выделенных вершин, можно перемещать +G, вращать +R, масштабировать +Z.</li>
<li><b>Esc</b> – отменяет работу с текущим инструментом выделения.</li>
<li><b>Del или X</b> – вызов контекстного меню выбора удаляемых объектов.</li>
<li><b>W</b> – вызывает меню “Specials” со специфичными для данного объекта параметрами преобразования.</li>
<li><b>K</b> – инструмент разрезания граней. Щелкайте ЛКМ в нужном месте грани чтобы разрезать её. Если нажать<b>Ctrl </b>– курсор будет расположен по середине грани.</li>
<li><b>Ctrl+R</b> – режим разрезания граней.</li>
<li><b>P</b> – отделить выделенные вершины от остального объекта. (или объединить в один объект выделенные вершины).</li>
<li><b>F </b>– создает грань между выделенными вершинами. </li>
<li><b>Ctrl+F</b> – открывает меню граней, для доступа к дополнительным параметрам граней.</li>
</span></ol>
</div>
<span id="fullpost">
<span id="fullpost">
</span></span></span></div>alukardevhttp://www.blogger.com/profile/12265214722107366401noreply@blogger.com168tag:blogger.com,1999:blog-3823206117807081130.post-83152947911938609832012-02-20T18:19:00.006+07:002012-02-27T13:40:16.311+07:00Unity3d. Сохранение результата в базу данных расположенную на сервере. Часть вторая - клиент.<div dir="ltr" style="text-align: left;" trbidi="on"><div style="text-align: justify;"> И так мы создали базу данных, создали скрипт, который осуществляет соединение с базой и чтение-запись данных. Теперь нам необходимо соединиться из нашей игры с php<b>-</b>скриптом, и получить из него данные, которые он получает с базы данных.</div><div style="text-align: justify;"> Т.к. данные которые мы будем получать из php-скрита будут в <b>xml </b>виде то первым делом создадим скрипт<b> XmlParser </b>который будет осуществлять чтение xml-данных, выбор из данных атрибутов<b> name</b> и <b>score</b>, и сохранять значения этих атрибутов в массивы <b>name[]</b> и <b>score[].</b></div><br />
<span id="fullpost"> <br />
<br />
<pre class="brush:xml">using UnityEngine;
using System.Collections;
using System.Xml;
public static class XmlParser
{
private static XmlDocument doc;
private static XmlNode root;
private static string[] names; // массив имен
private static int[] scores; // массив результатов
private static int userLenght; // длинна массива
public static void Parse(string xml)
{
doc = new XmlDocument();
doc.LoadXml(xml);
root = doc.LastChild;
if (root.HasChildNodes)
{
userLenght = root.ChildNodes.Count;
names = new string[userLenght];
scores = new int[userLenght];
for (int i = 0; i < userLenght; i++)
{
XmlAttribute nameAtt = root.ChildNodes[i].Attributes["name"];
XmlAttribute scoreAtt = root.ChildNodes[i].Attributes["score"];
names[i] = (string)nameAtt.Value;
scores[i] = ConvertStringToInt((string)scoreAtt.Value);
}
}
}
private static int ConvertStringToInt(string s)
{
int j;
bool result = System.Int32.TryParse(s, out j);
if (result = true)
{
return j;
}
else
{
Debug.Log("Error convert string to int");
return 0;
}
}
public static string Name(int index)
{
return names[index];
}
public static int Score(int index)
{
return scores[index];
}
public static int UserLength()
{
return userLenght;
}
}
</pre><br />
<span id="fullpost"></span><br />
<div style="text-align: justify;"><span id="fullpost"> Теперь создадим скрипт <b>ServerHiScore </b>который будет осуществлять доступ к php-скрипту, получение и отправку данных из приложения на сервер.</span></div><div style="text-align: justify;"><span id="fullpost"><br />
</span></div><pre class="brush:xml">using UnityEngine;
using System.Collections;
public class ServerHiScore : MonoBehaviour
{
//Set the PHP url here
public string PHPUrl = "http://yourDomainName.byethost15.com/HiScore.php"; // адрес скрипта
//Set the hash key id
public string hashKey = "BRIGHTWORLDGAMES"; // ключ для шифрования данных
private WWWForm obj_WWW;
private bool b_loaded;
private delegate void LoadXmlDel(string str);
// Use this for initialization
void Start ()
{
}
// Update is called once per frame
void Update ()
{
}
//Отправка данных
public void SendScore( int score, string name)
{
WWWForm w_form = new WWWForm();
//Telling PHP that the user is submiting the data
w_form.AddField("action", "PostScore");
//Sending hash code key to prevent unwanted user
w_form.AddField("hash", MD5.Md5Sum(name + "-" + score.ToString() + "-" + hashKey)); //Encrypt with MD5
//Sending the user score
w_form.AddField("score", score);
//Sending the user name
w_form.AddField("name", name);
//Start waiting for the response back from the server
StartCoroutine(WaitingForResponse(new WWW(PHPUrl, w_form), null));
}
//
public IEnumerator WaitingForResponse(WWW www, System.Func<string, bool=""> callback)
{
yield return www; // ожидаем пока получим с сервера данные
if (www.error == null)
{
// Debug.Log("Successful.");
}
else
{
// Debug.Log("Failed.");
}
if (callback != null) {
callback(www.text);
callback = null;
}
//Очищаем данные
www.Dispose();
}
//Получение данных
public void GetScores()
{
b_loaded = false;
WWWForm w_form = new WWWForm();
//Telling PHP that the user is loading the data
w_form.AddField("action", "GetScore");
//Start waiting for the response back from the server
StartCoroutine(WaitingForResponse(new WWW(PHPUrl, w_form), LoadXMLData));
}
//Parse the XML data from the server
public bool LoadXMLData(string str)
{
XmlParser.Parse(str);
b_loaded = true;
return true;
}
//Getting User length
public int GetUserLength()
{
return XmlParser.UserLength();
}
//Getting User Name by index
public string GetNameData(int index)
{
return XmlParser.Name(index);
}
//Getting User Score by index
public int GetScoreData(int index)
{
return XmlParser.Score(index);
}
//Loaded XML
public bool IsLoaded()
{
return b_loaded;
}
}
</pre><div style="text-align: justify;"><span id="fullpost"> При передаче данных, мы также передаем ключ в зашифрованном виде, чтобы никакие злоумышленники не могли записать свои данные на сервер, в php-скрипте мы проверяем совпадает ли ключ который храниться на сервере с ключом который мы передали, и записывает данные только если ключи совпадают. При создании аккаунта на byethost у вас автоматически создается домен с названием как выше имя, <b>http://yourDomainName.byethost15.com/</b>, где вместо byethost15 будет ваше название, посмотрите на панели слева в админке. Также вы всегда может создать другой домен, если этот вас не устраивает. </span></div><div style="text-align: justify;"><span id="fullpost"> Теперь реализуем метод <b>MD5</b>. Создайте js-скрипт с следующим содержанием:</span></div><pre class="brush:xml">#pragma strict
static function Md5Sum(strToEncrypt: String)
{
var encoding = System.Text.UTF8Encoding();
var bytes = encoding.GetBytes(strToEncrypt);
// encrypt bytes
var md5 = System.Security.Cryptography.MD5CryptoServiceProvider();
var hashBytes:byte[] = md5.ComputeHash(bytes);
// Convert the encrypted bytes back to a string (base 16)
var hashString = "";
for (var i = 0; i < hashBytes.Length; i++)
{
hashString += System.Convert.ToString(hashBytes[i], 16).PadLeft(2, "0"[0]);
}
return hashString.PadLeft(32, "0"[0]);
}
</pre><div style="text-align: justify;"><span id="fullpost"> Т.к. это<b> js-скрипт</b>, а мы используем его в <b>C#</b> скрипте, то обязательно поместите скрипт <b>MD5 </b>в папку <span class="Apple-style-span" style="color: red;"><b>Plugins</b></span>, иначе компилятров <b>Unity3d</b> будет выдавать вам ошибку. На этом вобщем-то всё. Теперь вы можете просто вызывать методы <b>GetScores()</b> и <b>SendScores()</b> скрипта <b>ServerHiScore</b>. Например у меня есть меню, в котором есть кнопка <b>HiScore</b>, при нажатии на которую появляется окно с результатами, тогда получать данные я буду следующим образом:</span></div><div style="text-align: justify;"><span id="fullpost"><br />
</span></div><pre class="brush:xml">using UnityEngine;
using System.Collections;
public class Menu : MonoBehaviour
{
public GUISkin customSkin;
enum Page {MENU, HOWTOPLAY, HISCORE, HISCOREMENU, EMPTY};
private Page page;
private Vector2 scrollPosition = Vector2.zero;
private int maxUsers = 10;
private GameObject cloud;
private ServerHiScore objServerHighScore; // объявляем экземпляр класса ServerHiScore
void Awake()
{
}
void Start ()
{
Time.timeScale = 1f;
objServerHighScore = this.GetComponent<serverhiscore>();
page = Page.MENU;
cloud = GameObject.Find("HiScoreCloud");
}
void Update ()
{
}
void OnGUI()
{
GUI.skin = customSkin;
switch (page)
{
case Page.MENU:
MenuPage();
break;
case Page.HISCORE:
HiScorePage();
break;
case Page.EMPTY:
break;
};
}
private void MenuPage()
{
GUI.BeginGroup(new Rect(Screen.width / 1.2f - 125, Screen.height / 1.6f - 100, 250, 200));
if (GUI.Button(new Rect(25, 20, 200, 30), "Start Game", GUI.skin.GetStyle("StartButton")))
{
Application.LoadLevel("MainScene");
}
if (GUI.Button(new Rect(10, 70, 220, 30), "How to Play", GUI.skin.GetStyle("HowToButton")))
{
StartCoroutine(ChangePage(Page.HOWTOPLAY));
}
if (GUI.Button(new Rect(25, 120, 180, 30), "Hi-Score", GUI.skin.GetStyle("QuitButton")))
{
objServerHighScore.GetScores(); // если нажали кнопку Hi-Score вызываем метод для получения данных
StartCoroutine(ChangePage(Page.HISCORE));
}
GUI.EndGroup();
}
private void HiScorePage()
{
GUI.BeginGroup(new Rect(Screen.width / 2f - 300, Screen.height / 2f - 210, 600, 420));
GUI.Label(new Rect(200, 50, 200, 50), "Top 10", GUI.skin.GetStyle("HiScoreLabelCenter"));
if (objServerHighScore.IsLoaded()) // если данные загружены
{
int numUsers = objServerHighScore.GetUserLength();
if (numUsers > maxUsers)
numUsers = maxUsers;
scrollPosition = GUI.BeginScrollView(new Rect(100, 110, 400, 180), scrollPosition,
new Rect(0, 0, 250, 30 * numUsers));
for (int i = 0; i < numUsers; i++)
{
GUI.Label(new Rect(0, i * 30, 35, 30), (i + 1).ToString() + ". ", GUI.skin.GetStyle("HiScoreLabel"));
GUI.Label(new Rect(35, i * 30, 220, 30), objServerHighScore.GetNameData(i), GUI.skin.GetStyle("HiScoreLabel")); // получаем имя
GUI.Label(new Rect(255, i * 30, 145, 30), objServerHighScore.GetScoreData(i).ToString(), GUI.skin.GetStyle("HiScoreLabel")); // получаем очки
}
GUI.EndScrollView();
}
else
{
GUI.Label(new Rect(200, 200, 200, 30), "LOADING...", GUI.skin.GetStyle("HiScoreLabelCenter"));
}
if (GUI.Button(new Rect(210, 300, 180, 30), "Back", GUI.skin.GetStyle("ReplayButton")))
{
StartCoroutine(ChangePage(Page.HISCOREMENU));
}
GUI.EndGroup();
}
IEnumerator ChangePage(Page pageNum)
{
switch (pageNum)
{
case Page.HOWTOPLAY:
page = Page.EMPTY;
while ((transform.position - new Vector3(178f, transform.position.y, transform.position.z)).magnitude > 0.5f)
{
transform.position = Vector3.Lerp(transform.position, new Vector3(178f, transform.position.y, transform.position.z), Time.deltaTime*3.0f);
yield return new WaitForSeconds(0.01f);
}
page = Page.HOWTOPLAY;
break;
case Page.MENU:
page = Page.EMPTY;
while ((transform.position - new Vector3(0f, transform.position.y, transform.position.z)).magnitude > 0.5f)
{
transform.position = Vector3.Lerp(transform.position, new Vector3(0f, transform.position.y, transform.position.z), Time.deltaTime*3.0f);
yield return new WaitForSeconds(0.01f);
}
page = Page.MENU;
break;
case Page.HISCORE:
page = Page.EMPTY;
while (cloud.transform.position.y > 0.1f)
{
cloud.transform.position = Vector3.Lerp(cloud.transform.position, new Vector3(cloud.transform.position.x, 0f, cloud.transform.position.z), Time.deltaTime*3f);
yield return new WaitForSeconds(0.01f);
}
page = Page.HISCORE;
break;
case Page.HISCOREMENU:
page = Page.EMPTY;
while (cloud.transform.position.y < 87.9f)
{
cloud.transform.position = Vector3.Lerp(cloud.transform.position, new Vector3(cloud.transform.position.x, 88f, cloud.transform.position.z), Time.deltaTime * 3.0f);
yield return new WaitForSeconds(0.01f);
}
page = Page.MENU;
break;
};
}
}
</pre><span id="fullpost"> Если же мне нужно сохранить данные на сервер, то я делаю следующим образом: <br />
<pre class="brush:xml">private void SubmitDialog()
{
GUI.BeginGroup(new Rect(Screen.width / 2 - 150, Screen.height / 2 - 140, 300, 280));
GUI.Box(new Rect(0, 0, 300, 280), "", GUI.skin.GetStyle("PauseBox"));
GUI.Label(new Rect(25, 10, 250, 50), "Submit Results", GUI.skin.GetStyle("LevelCompleteLabel"));
GUI.Label(new Rect(25, 60, 250, 50), "Your score: " + totalScore.ToString(), GUI.skin.GetStyle("LabelMidCenter"));
GUI.Label(new Rect(25, 90, 250, 50), "Enter your name:");
userName = GUI.TextField(new Rect(25, 140, 250, 45), userName, 20);
if (GUI.Button(new Rect(105, 200, 80, 24), "Submit", GUI.skin.GetStyle("NextLevelButton")))
{
submitResult = true;
//сохранение результата на сервер
objServerHighScore.SendScore(totalScore, userName);
dialog = previousDialog;
}
if (GUI.Button(new Rect(105, 235, 80, 24), "Back", GUI.skin.GetStyle("NextLevelButton")))
{
dialog = previousDialog;
}
GUI.EndGroup();
}
</pre></span></div><br />
<br />
<br />
</span>alukardevhttp://www.blogger.com/profile/12265214722107366401noreply@blogger.com8tag:blogger.com,1999:blog-3823206117807081130.post-38140304694049559922012-02-20T02:26:00.005+07:002012-02-27T13:39:39.269+07:00Unity3d. Сохранение результата в базу данных расположенную на сервере. Часть первая - сервер.<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
Всем доброго времени суток, в этом цикле статей я расскажу как создать базу данных на бесплатном интернет хостинге, и получить доступ к ней из вашей игры, сделанной на <b>Unity3d.</b></div>
<div style="text-align: justify;">
Допустим вы создали онлайн игру и перед вами встала задача добавить возможность сохранения набранных очков пользователем, с возможностью вывода этих очков в HiScore. Для этого вам необходимо хранить эти очки на сервере с возможностью постоянного доступа к нему.</div>
<div style="text-align: justify;">
<span class="Apple-style-span"><span id="fullpost"> Я использовал бесплатный хостинг<span class="Apple-style-span" style="color: #99cc00; font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; line-height: 18px;"><b>www.byethost.com</b></span>. И так регестрируемся на <span class="Apple-style-span" style="color: #99cc00; font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; line-height: 18px;"><b>www.byethost.com</b></span><span class="Apple-style-span">, на почту вам должно прийти письмо с логином и паролем. Авторизуемся на сайте, потом заходим в панель управления. Выбираем <b>MySQL Database</b>:</span></div>
</span>
</span>
<span id="fullpost"> <br />
</span><br />
<div class="separator" style="clear: both; text-align: center;">
<span id="fullpost"><a href="http://i1206.photobucket.com/albums/bb460/alukardev/1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="246" src="http://i1206.photobucket.com/albums/bb460/alukardev/1.jpg" width="400" /></a></span></div>
<span id="fullpost"><br />
</span><br />
<div style="text-align: justify;">
<span id="fullpost"> В появившемся окне в поле <database-name> вводим имя вашей базы данных, и жмем <b>Create Database</b>. База данных создана теперь заходим в панель управления базой данных, жмем кнопку <b>Admin</b>. У вас должно появиться следующее окошко:</database-name></span></div>
<span id="fullpost"><database-name> <br />
</database-name></span><br />
<div class="separator" style="clear: both; text-align: center;">
<span id="fullpost"><a href="http://i1206.photobucket.com/albums/bb460/alukardev/2-1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="128" src="http://i1206.photobucket.com/albums/bb460/alukardev/2-1.jpg" width="320" /></a></span></div>
<span id="fullpost"><br />
</span><br />
<div style="text-align: justify;">
<span id="fullpost"> Создадим новую таблицу в которой будем хранить имя пользователя и набранные очки. В поле <b>«Имя»</b> введите название таблицы, например <b>«scores»</b>, в поле <b>«Количество столбцов» </b>введите<b> «2»,</b> и нажмите <b>«Ок»</b>. Появится окно где нужно заполнить названия столбцов и тип хранимых данных. В первом столбце будем хранить имя пользователя: поле - <b>name</b>, тип - <b>varchar</b>, длинна - <b>20.</b> Второй столбец: поле – <b>score</b>, тип <b>int.</b> Нажимае <b>«Сохранить»</b>, таблица создана. Теперь выберите созданную таблицу, у вас появится окно со структурой таблицы, и внизу будет надпись <span class="Apple-style-span" style="color: red;">«Индекс не определен»</span>. Напротив столбца <b>«Name»</b> нажмите<b> «ещё»</b> и выберите<b> "добавить индекс".</b></span></div>
<span id="fullpost"><br />
</span><br />
<div class="separator" style="clear: both; text-align: center;">
<span id="fullpost"><a href="http://i1206.photobucket.com/albums/bb460/alukardev/3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="175" src="http://i1206.photobucket.com/albums/bb460/alukardev/3.jpg" width="320" /></a></span></div>
<span id="fullpost"><br />
<div style="text-align: justify;">
База данных создана, теперь необходимо осуществить доступ к ней. Так как на сервере <b>порт 3306 закрыт для внешнего доступа</b>, по которому осуществляется связь с<b> MySQL</b>, мы не можем удаленно, из нашего приложения осуществлять доступ к базе данных. По этому мы создадим<b> php </b>скрипт в котором будет осуществляться доступ к нашей БД, чтение и запись данных и расположим его на сервере, а из приложения уже будем получать данные через этот скрипт.</div>
<div style="text-align: justify;">
И так создайте следующий php-скрипт:</div>
<br />
<pre class="brush:xml">?PHP
// Connect to Database
$link = mysql_connect( "hostname", "username", "password" ) or die( mysql_error() );
mysql_select_db( "databasename" ) or die( mysql_error() );
// Get Data
$name = $_POST['name']; //Get name from Unity
$score = $_POST['score']; //Get score from Unity
$action = $_POST[ 'action' ]; //Get request action from Unity
$unityHash = $_POST[ 'hash' ]; //Get hash key from Unity
//Секретный ключ для шифрования данных при передаче
$secretKey="BRIGHTWORLDGAMES";
$phpHash = md5($name."-".$score."-".$secretKey);
switch ( $action )
{
case "GetScore":
GetScores();
break;
case "PostScore":
if( $phpHash == $unityHash ) {
PostScore();
}
break;
default:
GetScores();
break;
}
////////////////////////////////////////////////////////////////////////////////////////
function PostScore()
{
$score = $_POST[ 'score' ]; //score pass from Unity
$name = $_POST[ 'name' ]; //name pass from Unity
//scores = имя вашей БД
//name = Первый столбец
//score = второй столбец
$query = "INSERT INTO scores ( name, score ) VALUES ( '" . $name . "', '" . $score . "')";
mysql_query( $query ) or die( mysql_error() );
}
////////////////////////////////////////////////////////////////////////////////////////
function GetScores()
{
if( $_POST[ 'size' ] != "" ) {
$size = $_POST[ 'size' ];
} else {
$size = 10;
}
$query = "SELECT * FROM scores ORDER BY score DESC LIMIT " . $size;
$results = mysql_query( $query ) or die( mysql_error() );
//Return XML String to Unity
echo "\n";
echo "<scores>\n";
if( mysql_num_rows( $results ) > 0 )
{
while( $line = mysql_fetch_array( $results ) ) {
echo " <user "="" "\"="" "score="\""" $line["name"]="" $line["score"]="" .="" name="\""">\n";
}
}
else {
echo "No entries yet.";
}
echo "</user></scores>\n";
}
////////////////////////////////////////////////////////////////////////////////////////
// Close mySQL Connection
mysql_close($link);
?>
</pre>
<br />
<div style="text-align: justify;">
<b>Hostname</b> вы можете посмотреть на панели слева, имя пользователя и пароль к БД должны были прийти вам на почту. Назовите данный скрипт <b>HiScore</b>, и залейте его на сервер через <b>ftp </b><i>(адрес ftp также можно увидеть на панели слева)</i>, в папку <b>“htdocs”</b>. На этом работа с сервером закончена, и можно переходить к клиентской части приложения.</div>
<br />
</span></div>alukardevhttp://www.blogger.com/profile/12265214722107366401noreply@blogger.com1tag:blogger.com,1999:blog-3823206117807081130.post-56172583206578291942010-10-06T13:24:00.000+07:002010-10-06T13:37:04.624+07:00Использование Google Maps в Android Google Maps API позволяет добавлять в Android приложения возможность работы с картами Google. Чтобы подключить карты к вашему проекту, вам необходимо выполнить следующие шаги:<br />
<ol><li>Создать новый проект Android на базе библиотек Google API; </li>
<li>Соз<span class="Apple-style-span" style="font-family: inherit;">дать н</span>овый Android Virtual Device - c возможностью работы с Google API;</li>
<li>Получить Map API Key;</li>
<li>Подключить к проекту необходимые библиотеки и использовать классы Google Maps.</li>
</ol><span id="fullpost"><br />
<span id="fullpost"></span></span><br />
<span id="fullpost"><span id="fullpost"><div style="text-align: center;"><span class="Apple-style-span" style="color: #99cc00; font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; line-height: 18px;"><b><span class="Apple-style-span" style="font-size: x-large;">Шаг первый:</span></b></span><br />
<span class="Apple-style-span" style="color: #99cc00; font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; line-height: 18px;"><b><span class="Apple-style-span" style="font-size: x-large;"><br />
</span></b></span></div><div style="text-align: left;"><span class="Apple-style-span" style="color: #99cc00; font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; line-height: 18px;"><b> <span class="Apple-style-span" style="font-family: inherit;"> </span></b></span><span class="Apple-style-span" style="font-family: inherit;">Запустите Eclipse, создайте новый Android Project, можете назвать его HelloMap, и в поле </span><b><span class="Apple-style-span" style="font-family: inherit;">Build Target</span></b><span class="Apple-style-span" style="font-family: inherit;"> выберете Google APIs. Если у вас в Build Target нет Google APIs, значит у вас не установлен пакет с данным API. Пройдите </span><b><span class="Apple-style-span" style="font-family: inherit;">Windows->Android SDK and AVD Manager->Installed Pakages</span></b><span class="Apple-style-span" style="font-family: inherit;">, нажмите </span><b><span class="Apple-style-span" style="font-family: inherit;">Update All...</span></b><span class="Apple-style-span" style="font-family: inherit;"> и установите пакет с Google API.</span></div><div style="text-align: left;"><br />
</div><div style="text-align: left;"><div style="text-align: center;"><span class="Apple-style-span" style="color: #99cc00; font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; line-height: 18px;"><b><span class="Apple-style-span" style="font-size: x-large;">Шаг второй:</span></b></span><br />
<span class="Apple-style-span" style="color: #99cc00; font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; line-height: 18px;"><b><span class="Apple-style-span" style="font-size: x-large;"><br />
</span></b></span></div><div style="text-align: left;"><span class="Apple-style-span" style="color: #99cc00; font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; line-height: 18px;"><b><span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-weight: normal; line-height: normal;"> </span><span class="Apple-style-span" style="color: black; font-weight: normal; line-height: normal;"><span class="Apple-style-span" style="font-family: inherit;">Теперь нужно создать Android Virtual Device который имеет возможность работы с Google API. Пройдите </span></span><span class="Apple-style-span" style="color: black; line-height: normal;"><span class="Apple-style-span" style="font-family: inherit;">Windows->Android SDK and AVD Manager->Virtual Devices</span></span><span class="Apple-style-span" style="color: black; font-weight: normal; line-height: normal;"><span class="Apple-style-span" style="font-family: inherit;">. Нажмите </span></span><span class="Apple-style-span" style="color: black; line-height: normal;"><span class="Apple-style-span" style="font-family: inherit;">New</span></span><span class="Apple-style-span" style="color: black; font-weight: normal; line-height: normal;"><span class="Apple-style-span" style="font-family: inherit;"> и в поле </span></span><span class="Apple-style-span" style="color: black; line-height: normal;"><span class="Apple-style-span" style="font-family: inherit;">Target</span></span><span class="Apple-style-span" style="color: black; font-weight: normal; line-height: normal;"><span class="Apple-style-span" style="font-family: inherit;"> выберете Google APIs. Теперь можете запустите созданный эмулятор.</span></span></b></span></div><div style="text-align: left;"><span class="Apple-style-span" style="color: #99cc00; font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; line-height: 18px;"><b><span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-weight: normal; line-height: normal;"><br />
</span></b></span></div><div style="text-align: center;"><span class="Apple-style-span" style="color: #99cc00; font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif;"><span class="Apple-style-span" style="line-height: 18px;"><b><span class="Apple-style-span" style="font-size: x-large;">Шаг третий:</span></b></span></span><br />
<span class="Apple-style-span" style="color: #99cc00; font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif;"><span class="Apple-style-span" style="line-height: 18px;"><b><span class="Apple-style-span" style="font-size: x-large;"><br />
</span></b></span></span></div><div style="text-align: left;"><span class="Apple-style-span" style="color: #99cc00; font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif;"><span class="Apple-style-span" style="line-height: 18px;"><b><span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-weight: normal; line-height: normal;"> </span><span class="Apple-style-span" style="color: black; line-height: normal;"><span class="Apple-style-span" style="font-family: inherit;">Получение Map API Key.</span></span><span class="Apple-style-span" style="color: black; font-weight: normal; line-height: normal;"><span class="Apple-style-span" style="font-family: inherit;"> Для того чтобы иметь возможность отображать Google карты, вам необходимо использовать бесплатный Google Map API Key. Чтобы получить ключ необходимо выполнить следующие шаги:</span></span></b></span></span></div><div style="text-align: left;"></div><ol><li><span class="Apple-style-span" style="font-family: inherit;">Найдите файл </span><b><span class="Apple-style-span" style="font-family: inherit;">debug.keystore</span></b><span class="Apple-style-span" style="font-family: inherit;">, он располагается в папке </span><b><span class="Apple-style-span" style="font-family: inherit;">"C:\Documents and Settings\<User Name>\.android"</span></b><span class="Apple-style-span" style="font-family: inherit;">. Скопируйте данный файл в папку C:\(к примеру можете создать папку Android "C:\Android").</span></li>
<li><span class="Apple-style-span" style="font-family: inherit;">Из данного keystore необходимо получить </span><b><span class="Apple-style-span" style="font-family: inherit;">MD5</span></b><span class="Apple-style-span" style="font-family: inherit;"> код. Для этого используйте утилиту </span><b><span class="Apple-style-span" style="font-family: inherit;">keytool.exe</span></b><span class="Apple-style-span" style="font-family: inherit;"> которая поставляется вместе с </span><b><span class="Apple-style-span" style="font-family: inherit;">JDK</span></b><span class="Apple-style-span" style="font-family: inherit;"> и располагается в папке </span><b><span class="Apple-style-span" style="font-family: inherit;">"C:\Program Files\Java\<jdk using version>\bin".</span></b></li>
<li><span class="Apple-style-span" style="font-family: inherit;">Запустите командную строку </span><b><span class="Apple-style-span" style="font-family: inherit;">Пуск->Все программы->стандартные->командная строка. </span></b><span class="Apple-style-span" style="font-family: inherit;">Перейдите в папку с keytool (</span><b><span class="Apple-style-span" style="font-family: inherit;">"cd C:\Program Files\Java\<jdk uses version>\bin"</span></b><span class="Apple-style-span" style="font-family: inherit;">) и выполните следующую команду:</span></li>
<pre class="brush:xml">keytool.exe -list -alias androiddebugkey -keystore "C:\android\debug.keystore" -storepass android -keypass android
</pre><span class="Apple-style-span" style="font-family: inherit;">После выполнения данный команды вы должны увидеть на экране свой MD5 код. </span>
<div class="separator" style="clear: both; text-align: center;"><a href="http://i1206.photobucket.com/albums/bb460/alukardev/md5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="80" src="http://i1206.photobucket.com/albums/bb460/alukardev/md5.jpg" width="480" /></a></div>
<li><span class="Apple-style-span" style="font-family: inherit;">Скопируйте полученный MD5 и пройдите по ссылке </span><a href="http://code.google.com/intl/ru-RU/android/maps-api-signup.html"><span class="Apple-style-span" style="font-family: inherit;">http://code.google.com/intl/ru-RU/android/maps-api-signup.html</span></a><span class="Apple-style-span" style="font-family: inherit;">. Следуйте инструкциям и получите свой API Key.</span></li>
</ol><span class="Apple-style-span" style="color: #99cc00; font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; line-height: 18px;"></span><br />
<span class="Apple-style-span" style="color: #99cc00; font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; line-height: 18px;"></span><br />
<span class="Apple-style-span" style="color: #99cc00; font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; line-height: 18px;"></span><br />
<span class="Apple-style-span" style="color: #99cc00; font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; line-height: 18px;"><div style="text-align: center;"><b><span class="Apple-style-span" style="font-size: x-large;">Шаг четвёртый:</span></b><br />
<b><span class="Apple-style-span" style="font-size: x-large;"><br />
</span></b></div><div style="text-align: left;"><b> <span class="Apple-style-span" style="font-family: inherit;"> </span></b><span class="Apple-style-span" style="color: black; line-height: normal;"><span class="Apple-style-span" style="font-family: inherit;">Для того чтобы использовать Google Maps API необходимо подключить библиотеку для работы с картами </span><b><span class="Apple-style-span" style="font-family: inherit;"><uses-library android:name="com.google.android.maps"></span></b><span class="Apple-style-span" style="font-family: inherit;"> и так как наше приложение будет загружать карты через интернет нужно позволить ему работать с интернетом </span><b><span class="Apple-style-span" style="font-family: inherit;">INTERNET permission</span></b><span class="Apple-style-span" style="font-family: inherit;">. </span></span></div><div style="text-align: left;"><span class="Apple-style-span" style="color: black; line-height: normal;"><span class="Apple-style-span" style="font-family: inherit;"> Откройте </span><b><span class="Apple-style-span" style="font-family: inherit;">AndroidManifest.xml</span></b><span class="Apple-style-span" style="font-family: inherit;"> и добавьте в него </span><b><span class="Apple-style-span" style="font-family: inherit;"><uses-library> </span></b><span class="Apple-style-span" style="font-family: inherit;">и </span><b><span class="Apple-style-span" style="font-family: inherit;">INTERNET permission</span></b><span class="Apple-style-span" style="font-family: inherit;">:</span></span></div><div style="text-align: left;"><span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; line-height: normal;"><pre class="brush:xml"><manifest android:versioncode="1" android:versionname="1.0" package="com.alukardev.hellomap2" xmlns:android="http://schemas.android.com/apk/res/android">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:label="@string/app_name" android:name=".HelloMapActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN">
<category android:name="android.intent.category.LAUNCHER">
</category></action></intent-filter>
</activity>
<uses-library android:name="com.google.android.maps">
</uses-library></application>
<uses-sdk android:minsdkversion="7">
<uses-permission android:name="android.permission.INTERNET">
</uses-permission></uses-sdk></manifest>
</pre></span></div></span><br />
<span class="Apple-style-span" style="font-family: inherit;"><b><span class="Apple-style-span" style="font-size: x-large;">Отображение карты.</span></b></span><br />
<span class="Apple-style-span" style="font-family: inherit;"> для того чтобы отобразить карты измените </span><b><span class="Apple-style-span" style="font-family: inherit;">main.xml</span></b><span class="Apple-style-span" style="font-family: inherit;"> из папке</span><b><span class="Apple-style-span" style="font-family: inherit;"> res\layout</span></b><span class="Apple-style-span" style="font-family: inherit;">. Вы должны использовать </span><span class="Apple-style-span" style="line-height: 15px; white-space: pre;"><b><span class="Apple-style-span" style="font-family: inherit;"><com.google.android.maps.MapView></span></b><span class="Apple-style-span" style="font-family: inherit;"> </span></span><span class="Apple-style-span" style="font-family: inherit;">элемент, чтобы отобразить карту в вашем Activity.</span><br />
<pre class="brush:xml"><?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.google.android.maps.MapView
android:id="@+id/mapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:enabled="true"
android:clickable="true"
android:apiKey="Ваш API Key"
/>
</RelativeLayout>
</pre></div></span><span id="fullpost"><br />
</span><br />
<span id="fullpost"> Теперь откройте <b>HelloMap.Activity</b>, данный класс должен быть унаследован от <b>MapActivity</b>. При наследовании от класса MapActivity необходимо переопределить метод <b>isRoyteDisplayed()</b>:</span><br />
<span id="fullpost"><br />
</span><br />
<span id="fullpost"><pre class="brush:xml">package com.alukardev.hellomap2;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import android.os.Bundle;
public class HelloMapActivity extends MapActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}
</pre></span><span id="fullpost"><br />
</span><br />
<span id="fullpost"> Всё готово! Теперь можете запустить проект и посмотреть результат.</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://i1206.photobucket.com/albums/bb460/alukardev/map.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="281" src="http://i1206.photobucket.com/albums/bb460/alukardev/map.jpg" width="400" /></a></div><div class="separator" style="clear: both; text-align: center;"><br />
</div><div class="separator" style="clear: both; text-align: left;"><b><span class="Apple-style-span" style="font-size: x-large;">Масштабирование.</span></b></div><div class="separator" style="clear: both; text-align: left;"> Добавим в наш проект возможность масштабировать карту.</div><div class="separator" style="clear: both; text-align: left;"> Откройте<b> main.xml</b> и добавьте в него <b><LinearLayout>:</b></div><div class="separator" style="clear: both; text-align: left;"></div><pre class="brush:xml"><?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.google.android.maps.MapView
android:id="@+id/mapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:enabled="true"
android:clickable="true"
android:apiKey="0oJHawmPUco4Y2eJDV8r5cKv4kUseLVglm4-e0g"
/>
<LinearLayout android:id="@+id/zoom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
/>
</RelativeLayout></pre><b><LinearLayout></b> элемент нужен чтобы отобразить на нем кнопки масштабирования.<br />
<br />
Теперь откройте <b>HelloMapActivity.java</b>. Импортируйте следующие библиотеки:<br />
<br />
<pre class="brush:java">import com.google.android.maps.MapView.LayoutParams;
import android.view.View;
import android.widget.LinearLayout;
</pre> Добавьте следующий код после строчки setContentView(R.layout.main);<br />
<br />
<pre class="brush:java">mapView = (MapView) findViewById(R.id.mapView);
LinearLayout zoomLayout = (LinearLayout)findViewById(R.id.zoom);
View zoomView = mapView.getZoomControls();
zoomLayout.addView(zoomView,
new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
mapView.displayZoomControls(true);
</pre><br />
Файл <b>HelloMapActivity.java</b> полностью:<br />
<br />
<pre class="brush:java">package com.alukardev.hellomap2;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import android.os.Bundle;
import com.google.android.maps.MapView.LayoutParams;
import android.view.View;
import android.widget.LinearLayout;
public class HelloMapActivity extends MapActivity
{
MapView mapView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mapView = (MapView) findViewById(R.id.mapView);
LinearLayout zoomLayout = (LinearLayout)findViewById(R.id.zoom);
View zoomView = mapView.getZoomControls();
zoomLayout.addView(zoomView,
new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
mapView.displayZoomControls(true);
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}
</pre><br />
Теперь можете запустить проект и посмотреть результат.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://i1206.photobucket.com/albums/bb460/alukardev/mapZoom.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="281" src="http://i1206.photobucket.com/albums/bb460/alukardev/mapZoom.jpg" width="400" /></a></div><div class="separator" style="clear: both; text-align: center;"><br />
</div><div class="separator" style="clear: both; text-align: left;"> В качестве альтернативного решения можно использовать клавиши для масштабирования, для этого нужно вызывать методы <b>zoomIn() </b>и <b>zoouOut()</b> класса <b>MapController</b>:</div><div class="separator" style="clear: both; text-align: left;"></div><pre class="brush:java">package com.alukardev.hellomap2;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import android.os.Bundle;
import com.google.android.maps.MapView.LayoutParams;
import android.view.KeyEvent;
import android.view.View;
import android.widget.LinearLayout;
public class HelloMapActivity extends MapActivity
{
MapView mapView;
public boolean onKeyDown(int keyCode, KeyEvent event)
{
MapController mc = mapView.getController();
switch (keyCode)
{
case KeyEvent.KEYCODE_3:
mc.zoomIn();
break;
case KeyEvent.KEYCODE_1:
mc.zoomOut();
break;
}
return super.onKeyDown(keyCode, event);
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mapView = (MapView) findViewById(R.id.mapView);
LinearLayout zoomLayout = (LinearLayout)findViewById(R.id.zoom);
View zoomView = mapView.getZoomControls();
zoomLayout.addView(zoomView,
new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
mapView.displayZoomControls(true);
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}
</pre><br />
<br />
<div style="text-align: right;"><a href="http://mobiforge.com/developing/story/using-google-maps-android">Источник</a></div></span>alukardevhttp://www.blogger.com/profile/12265214722107366401noreply@blogger.com8tag:blogger.com,1999:blog-3823206117807081130.post-15138944127728321812010-09-30T14:10:00.002+07:002012-02-13T23:27:13.028+07:00... <a href="http://moneyking.ru/motivaciya/10-work-songs/">...</a>.<br />
...<br />
<span id="fullpost"><br />
<span class="Apple-style-span" style="font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif;"><span class="Apple-style-span" style="line-height: 18px;"><b>Survivor - Eye of the Tiger </b></span></span><br />
<object data="http://junglebook2007.narod.ru/audio/player.swf" height="16" id="audioplayer1" type="application/x-shockwave-flash" width="180" wmode="transparent"> <param value="http://junglebook2007.narod.ru/audio/player.swf" name="movie"><param value="playerID=1&bg=0xffffff&leftbg=0x99cc00&lefticon=0x000000&rightbg=0x99cc00&rightbghover=0x999999&rightcon=0xoooooo&righticonhover=0xffffff&text=0x666666&slider=0x000000&track=0xffffff&border=0x666666&loader=0x99cc00&loop=no&autostart=no&soundFile=http://file2.podfm.ru/14/145/1456/14569/mp3/myzuka.ru_01_eye_of_the_tiger.mp3
&" name="FlashVars"><param value="high" name="quality"><param value="false" name="menu"><param value="transparent" name="wmode"></object><br />
<br />
<span class="Apple-style-span" style="font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif;"><span class="Apple-style-span" style="line-height: 18px;"><b>Journey - Don't Stop Belivien </b></span></span><br />
<object data="http://junglebook2007.narod.ru/audio/player.swf" height="16" id="audioplayer2" type="application/x-shockwave-flash" width="180" wmode="transparent"> <param value="http://junglebook2007.narod.ru/audio/player.swf" name="movie"><param value="playerID=1&bg=0xffffff&leftbg=0x99cc00&lefticon=0x000000&rightbg=0x99cc00&rightbghover=0x999999&rightcon=0xoooooo&righticonhover=0xffffff&text=0x666666&slider=0x000000&track=0xffffff&border=0x666666&loader=0x99cc00&loop=no&autostart=no&soundFile=http://file2.podfm.ru/14/145/1456/14569/mp3/laguna_beach_soundtrack_-_journey_-_dont_stop_believing.mp3
&" name="FlashVars"><param value="high" name="quality"><param value="false" name="menu"><param value="transparent" name="wmode"></object><br />
<br />
<span class="Apple-style-span" style="font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif;"><span class="Apple-style-span" style="line-height: 18px;"><b>Mark Ronson - Ooh Wee (feat. Ghostface Kilah, Nate Dogg, Trife Da God & Saigon)</b></span></span><br />
<object data="http://junglebook2007.narod.ru/audio/player.swf" height="16" id="audioplayer3" type="application/x-shockwave-flash" width="180" wmode="transparent"> <param value="http://junglebook2007.narod.ru/audio/player.swf" name="movie"><param value="playerID=1&bg=0xffffff&leftbg=0x99cc00&lefticon=0x000000&rightbg=0x99cc00&rightbghover=0x999999&rightcon=0xoooooo&righticonhover=0xffffff&text=0x666666&slider=0x000000&track=0xffffff&border=0x666666&loader=0x99cc00&loop=no&autostart=no&soundFile=http://file2.podfm.ru/14/145/1456/14569/mp3/myzuka.ru_4._Mark_Ronson_-_Pravila_sjoma_Metod_Hitcha_-_Saundtrek_-_Ooh_Wee_feat._Ghostface_Killah_N.mp3
&" name="FlashVars"><param value="high" name="quality"><param value="false" name="menu"><param value="transparent" name="wmode"></object><br />
<br />
<span class="Apple-style-span" style="font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif;"><span class="Apple-style-span" style="line-height: 18px;"><b>Heavy D & The Boyz - Now That We Found Love</b></span></span><br />
<object data="http://junglebook2007.narod.ru/audio/player.swf" height="16" id="audioplayer4" type="application/x-shockwave-flash" width="180" wmode="transparent"> <param value="http://junglebook2007.narod.ru/audio/player.swf" name="movie"><param value="playerID=1&bg=0xffffff&leftbg=0x99cc00&lefticon=0x000000&rightbg=0x99cc00&rightbghover=0x999999&rightcon=0xoooooo&righticonhover=0xffffff&text=0x666666&slider=0x000000&track=0xffffff&border=0x666666&loader=0x99cc00&loop=no&autostart=no&soundFile=http://file2.podfm.ru/14/145/1456/14569/mp3/myzuka.ru_5._Heavy_D__The_Boyz_-_Pravila_sjoma_Metod_Hitcha_-_Saundtrek_-_Now_That_We_Found_Love.mp3
&" name="FlashVars"><param value="high" name="quality"><param value="false" name="menu"><param value="transparent" name="wmode"></object><br />
<br />
<span class="Apple-style-span" style="font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; line-height: 18px;"><b>Dave Lichens - Blue</b></span><br />
<object data="http://junglebook2007.narod.ru/audio/player.swf" height="16" id="audioplayer5" type="application/x-shockwave-flash" width="180" wmode="transparent"> <param value="http://junglebook2007.narod.ru/audio/player.swf" name="movie"><param value="playerID=1&bg=0xffffff&leftbg=0x99cc00&lefticon=0x000000&rightbg=0x99cc00&rightbghover=0x999999&rightcon=0xoooooo&righticonhover=0xffffff&text=0x666666&slider=0x000000&track=0xffffff&border=0x666666&loader=0x99cc00&loop=no&autostart=no&soundFile=http://file2.podfm.ru/14/145/1456/14569/mp3/Dave_Lichens_blue.mp3
&" name="FlashVars"><param value="high" name="quality"><param value="false" name="menu"><param value="transparent" name="wmode"></object><br />
<br />
<span class="Apple-style-span" style="font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif;"><span class="Apple-style-span" style="line-height: 18px;"><b>Elvis Presley - Jailhouse Rock</b></span></span><br />
<object data="http://junglebook2007.narod.ru/audio/player.swf" height="16" id="audioplayer6" type="application/x-shockwave-flash" width="180" wmode="transparent"> <param value="http://junglebook2007.narod.ru/audio/player.swf" name="movie"><param value="playerID=1&bg=0xffffff&leftbg=0x99cc00&lefticon=0x000000&rightbg=0x99cc00&rightbghover=0x999999&rightcon=0xoooooo&righticonhover=0xffffff&text=0x666666&slider=0x000000&track=0xffffff&border=0x666666&loader=0x99cc00&loop=no&autostart=no&soundFile=http://file2.podfm.ru/14/145/1456/14569/mp3/Jailhouse_Rock.mp3
&" name="FlashVars"><param value="high" name="quality"><param value="false" name="menu"><param value="transparent" name="wmode"></object><br />
<br />
<span class="Apple-style-span" style="font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; line-height: 18px;"><b>Ray Collins - Barefoot</b></span><br />
<object data="http://junglebook2007.narod.ru/audio/player.swf" height="16" id="audioplayer7" type="application/x-shockwave-flash" width="180" wmode="transparent"> <param value="http://junglebook2007.narod.ru/audio/player.swf" name="movie"><param value="playerID=1&bg=0xffffff&leftbg=0x99cc00&lefticon=0x000000&rightbg=0x99cc00&rightbghover=0x999999&rightcon=0xoooooo&righticonhover=0xffffff&text=0x666666&slider=0x000000&track=0xffffff&border=0x666666&loader=0x99cc00&loop=no&autostart=no&soundFile=http://file2.podfm.ru/14/145/1456/14569/mp3/Ray_Collins_-_Barefoot.mp3
&" name="FlashVars"><param value="high" name="quality"><param value="false" name="menu"><param value="transparent" name="wmode"></object><br />
</span>alukardevhttp://www.blogger.com/profile/12265214722107366401noreply@blogger.com1tag:blogger.com,1999:blog-3823206117807081130.post-49451155930927548662010-09-25T19:25:00.000+07:002010-10-01T23:47:27.050+07:00Настраиваем свой блог на Blogger.com. Локализация Всем привет! В этом посте я расскажу, как выполнить локализацию вашего блога на Blogger.com с помощью Google Translate.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://i1206.photobucket.com/albums/bb460/alukardev/loc.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="46" src="http://i1206.photobucket.com/albums/bb460/alukardev/loc.jpg" width="400" /></a></div><span id="fullpost"><span id="fullpost"><div style="text-align: center;"><span class="Apple-style-span" style="color: #99cc00; font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif;"><span class="Apple-style-span" style="font-size: x-large; line-height: 18px;"><b><br />
</b></span></span><br />
<span class="Apple-style-span" style="color: #99cc00; font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif;"><span class="Apple-style-span" style="font-size: x-large; line-height: 18px;"><b>Локализация:</b></span></span> </div></span><br />
<ol><li>Перейдите на вкладку <b>"Дизайн"->"Элементы страницы"</b>, и выберете добавить гаджет. В списке гаджетов выберете <b>"HTML/JavaScript"</b>.</li>
<div class="separator" style="clear: both; text-align: center;"><a href="http://i1206.photobucket.com/albums/bb460/alukardev/2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="291" src="http://i1206.photobucket.com/albums/bb460/alukardev/2.jpg" width="400" /></a></div>
<li>В данном гаджете, в поле <b>"Содержание"</b> вставьте следующий код: </li>
<pre class="brush:xml"><style>
.google_translate img {
filter:alpha(opacity=100);
-moz-opacity: 1.0;
opacity: 1.0;
border:0;
}
.google_translate:hover img {
filter:alpha(opacity=30);
-moz-opacity: 0.30;
opacity: 0.30;
border:0;
}
.google_translatextra:hover img {
filter:alpha(opacity=0.30);
-moz-opacity: 0.30;
opacity: 0.30;
border:0;
}
</style>
<div>
<a class="google_translate" href="#" target="_blank" rel="nofollow" title="English" onclick="window.open('http://translate.google.com/translate?u='+encodeURIComponent(location.href)+'&langpair=ru%7Cen&hl=en'); return false;"><img alt="English" border="0" align="absbottom" title="English" height="32" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-zMDySZ5XeGIgo73_EKjKEaFT1f66s1ICZvWo1lO2QRpZj9Rc13ehIrPgp3pFpegRBF7dFtKI_B8av_TvmgXgCaRskpCZOrXMCS_Jcm9wSSP3qXsGRjabuIDOd_HG4s4r3EgfkRMSDIo/?imgmax=800" style="cursor: pointer;margin-right:13px" width="24" /></a>
<a class="google_translate" href="#" target="_blank" rel="nofollow" title="French" onclick="window.open('http://translate.google.com/translate?u='+encodeURIComponent(location.href)+'&langpair=ru%7Cfr&hl=en'); return false;"><img alt="French" border="0" align="absbottom" title="French" height="32" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnYV1-x0QdM84dTDlqMMO0vxFMmsnuuoqenyjfmKk9qZa-lnHl8xZEHdidPB5XqvcEm7hPeAUocarJD6k-kKy8skKXxSiSVTXGQdqUH5SCxuqr42xZu62zwD3GX5a0ri3Du03xClyvrTs/?imgmax=800" style="cursor: pointer;margin-right:13px" width="24" /></a>
<a class="google_translate" href="#" target="_blank" rel="nofollow" title="German" onclick="window.open('http://translate.google.com/translate?u='+encodeURIComponent(location.href)+'&langpair=ru%7Cde&hl=en'); return false;"><img alt="German" border="0" align="absbottom" title="German" height="32" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgR94afT2pyeg-nmMgp-s_lv7gXHr4XF2qJ7QkgB2Pmu9QlzPOoM0MJ9ry5lJszEsjV4bCJ5yuaKd4h4VqLbkK9tFFSn0lY0C9hyphenhyphenXlkSV-joHSNYx_LvkgoUSfBp8_NQv6uHSdS6wMzCsMx/?imgmax=800" style="cursor: pointer;margin-right:13px" width="24" /></a>
<a class="google_translate" href="#" target="_blank" rel="nofollow" title="Spain" onclick="window.open('http://translate.google.com/translate?u='+encodeURIComponent(location.href)+'&langpair=ru%7Ces&hl=en'); return false;"><img alt="Spain" border="0" align="absbottom" title="Spain" height="32" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiruv0kzpMkGHQE9AaBXW1BTH30ByeN4njJ2l40XIEtpsG8oZUZgz1l4GQaWIWzdTBT9W0RE0M6FjbIUt-1RfFpfZKXZTmyMKP9JLWBd7lsKOSnOTpLs6rk80qyalamAb4R18Lwg3PddMNE/?imgmax=800" style="cursor: pointer;margin-right:13px" width="24" /></a>
<a class="google_translate" href="#" target="_blank" rel="nofollow" title="Italian" onclick="window.open('http://translate.google.com/translate?u='+encodeURIComponent(location.href)+'&langpair=ru%7Cit&hl=en'); return false;"><img alt="Italian" border="0" align="absbottom" title="Italian" height="32" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilvtYX8N5y1wFoSQGVeAlIf4C34W-d9qCtwMrceIyfFWgzTnJqYkbbN8qz77iJISQqzHk2MAZDm7O1hQ2m3XnFkTlmyrPuzxJ9HlOpGIVZ6pqDj6jTSi3j9FFUtmWKQwPvjkMZG3semm8/?imgmax=800" style="cursor: pointer;margin-right:13px" width="24" /></a>
<a class="google_translate" href="#" target="_blank" rel="nofollow" title="Dutch" onclick="window.open('http://translate.google.com/translate?u='+encodeURIComponent(location.href)+'&langpair=ru%7Cnl&hl=en'); return false;"><img alt="Dutch" border="0" align="absbottom" title="Dutch" height="32" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh72rt6mNeVM2HLZ76Ei5BQr17AHdwSqFv0LgBh-PnWuEEuOMQtcZ4fA45RTSEYQLQMFPu4fgCotKyE2XekhFKkdA5W2kOIQCyi7MoNI27WbLMA9R_oO8JsojWS2845KFJ2FasQXlBWupo/?imgmax=800" style="cursor: pointer;margin-right:13px" width="24" /></a>
<a class="google_translate" href="#" target="_blank" rel="nofollow" title="Russian" onclick="window.open('http://translate.google.com/translate?u='+encodeURIComponent(location.href)+'&langpair=ru%7Cru&hl=en'); return false;"><img alt="Russian" border="0" align="absbottom" title="Russian" height="32" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzUPGjIzKlWDmOR1MysWOnjMmKi_Zaj7um2rfunXp6isZkCOhVl3hA2GaM7R7DIzhiGOL_j2TYJXA_vqf3xJJtV6Zq2GI15s7rGLyhSofWTmlbT1awOA4R-vDZsOrx_BOYffqMEZyKDno/?imgmax=800" style="cursor: pointer;margin-right:13px" width="24" /></a>
<a class="google_translate" href="#" target="_blank" rel="nofollow" title="Portuguese" onclick="window.open('http://translate.google.com/translate?u='+encodeURIComponent(location.href)+'&langpair=ru%7Cpt&hl=en'); return false;"><img alt="Portuguese" border="0" align="absbottom" title="Portuguese" height="32" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiK4CR5HZdL9OZGnIFpWWKs9c2OD_WjFusGlGeWZTa_iXo82VkL-pR1E7NLL9R_2Ble94RhQtFIkhaSDxCwLLzmPpis6YxEikIzU1HQDODJVi6-NV7zoobENtG-5rK15qhm0I9RH5E5pvY/?imgmax=800" style="cursor: pointer;margin-right:13px" width="24" /></a>
<a class="google_translate" href="#" target="_blank" rel="nofollow" title="Japanese" onclick="window.open('http://translate.google.com/translate?u='+encodeURIComponent(location.href)+'&langpair=ru%7Cja&hl=en'); return false;"><img alt="Japanese" border="0" align="absbottom" title="Japanese" height="32" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibDCZSL_DlW-UEnUn2gAOXzmN3WJt8gOUVr0qrt2GqGS486uTc8H4VY5eByh38B-b-jpBfKXLNQ9nKVyroplwB7FYfZ976sdzmf9H3nxVZ0-JnHQFxiiRUKX9mVhOb-w-ZciLHXiBTi7zG/?imgmax=800" style="cursor: pointer;margin-right:13px" width="24" /></a>
<a class="google_translate" href="#" target="_blank" rel="nofollow" title="Korean" onclick="window.open('http://translate.google.com/translate?u='+encodeURIComponent(location.href)+'&langpair=id%7Cko&hl=en'); return false;"><img alt="Korean" border="0" align="absbottom" title="Korean" height="32" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7N_5aCJNdVrd3d8bzjDyYqtEDoNDqRrDxEKGlbcyh78VHdsHkNr96H9dOtj0cfGvuaUkfbHtol5QI6iAVfoRQrTqf2LIPqlleA5SV_1CdO5oG2U770tKg_gS3t0C1NFQsQp4RlhfWOws/?imgmax=800" style="cursor: pointer;margin-right:13px" width="24" /></a>
<a class="google_translate" href="#" target="_blank" rel="nofollow" title="Arabic" onclick="window.open('http://translate.google.com/translate?u='+encodeURIComponent(location.href)+'&langpair=ru%7Car&hl=en'); return false;"><img alt="Arabic" border="0" align="absbottom" title="Arabic" height="32" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhwXwmCebqk5UlGR05uOWeaM_KGv6KYzpXWXSadfZfu3AtKlIVl1r_NzyCfQqF5f5DTdVBqb8Ix42WQ6SACHqSWr0r84Kj74LSoInFnNsB2sU0y_AyA93K-3GvGzQLlGz2b6Gknc0957g/?imgmax=800" style="cursor: pointer;margin-right:13px" width="24" /></a>
<a class="google_translate" href="#" target="_blank" rel="nofollow" title="Chinese Simplified" onclick="window.open('http://translate.google.com/translate?u='+encodeURIComponent(location.href)+'&langpair=ru%7Czh-CN&hl=en'); return false;"><img alt="Chinese Simplified" border="0" align="absbottom" title="Chinese Simplified" height="32" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEii8mILXMCMlQotU2ZmOR_jOrJM7ROU_mxPgdZnbtHFaHg4nE86C_lVR973o8N9x8nTIqE7LODNyfGZofrXF_Z-t0Ywpqi1nL6p8H6kOnCWa-5TGIqHStWITBs2R9iaLiQkfUBzprRRIL4/?imgmax=800"
style="cursor: pointer;margin-right:13px" width="24" /></a></div>
</pre>
<li>Нажмите <b>"сохранить"</b> в гаджете и на вкладке <b>"Элементы страницы"</b>. </li>
</ol>Теперь у вас в блоге должна появиться панелька с флагами разных стран. Щелкайте на флаг страны, на язык которой вы хотите перевести свой блог, и Google Translite выполнит перевод.<br />
<div style="text-align: right;"><a href="http://www.blogspottutorial.com/2009/01/installing-google-translate-widget-2.html"><span class="Apple-style-span" style="font-size: small;">Источник</span></a><span class="Apple-style-span" style="font-size: small;">.</span></div><ol></ol></span>alukardevhttp://www.blogger.com/profile/12265214722107366401noreply@blogger.com2tag:blogger.com,1999:blog-3823206117807081130.post-67947614737101445212010-09-25T00:04:00.000+07:002010-10-01T23:47:27.051+07:00Настраиваем свой блог на Blogger.com. Подсветка кода.Всем привет! В этом посте я расскажу, как сделать подсветку синтаксиса вставляемого кода в ваш блог на Blogger.<br />
5JGRS3JHEN2V<br />
<span id="fullpost"><br />
<span id="fullpost"></span></span><br />
<span id="fullpost"><span id="fullpost"><div style="text-align: center;"><span id="fullpost"><span class="Apple-style-span" style="color: #99cc00; font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif;"><span class="Apple-style-span" style="font-size: x-large; line-height: 18px;"><b>Подсветка синтаксиса в Blogger:</b></span></span></span></div></span><br />
<span id="fullpost">В этом методе будет использоваться opne-source проект Alexa Gorbatcheva - <a href="http://alexgorbatchev.com/SyntaxHighlighter/">SyntaxHighlighter</a>.</span><br />
<br />
<ol><li>Войдите в свой аккаунт на Blogger.com, Перейдите <b>"Дизайн" -> "Изменить HTML"</b><a href="http://i1206.photobucket.com/albums/bb460/alukardev/BloggerEdit/1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="267" src="http://i1206.photobucket.com/albums/bb460/alukardev/BloggerEdit/1.jpg" style="cursor: move;" width="400" /></a></li>
<li>Выберете <b>"загрузить весь шаблон"</b>, чтобы сохранить текущую версию шаблона. Это нужно для того чтобы если что-то пойдет не так, вы всегда могли восстановить старую версию шаблона. </li>
<li>Нажмите <b>Ctrl-F</b>, чтобы открыть поисковик, и найдите тег <b></head></b>. Перед этим тегом вставьте следующий код:</li>
<pre class="brush:xml"><link href='http://alexgorbatchev.com/pub/sh/current/styles/shCore.css' rel='stylesheet' type='text/css'/>
<link href='http://alexgorbatchev.com/pub/sh/current/styles/shThemeDefault.css' rel='stylesheet' type='text/css'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js' type='text/javascript'/>
<!-- добавляйте языки сюда -->
<script type='text/javascript'>
SyntaxHighlighter.config.bloggerMode = true;
SyntaxHighlighter.all();
</script>
</pre><li>После комментариев <b>"Добавляйте языки сюда"</b>, вставьте языки которые вы собираетесь использовать. Допустим вы собираетесь использовать языки: <b>JavaScript, Java, SQL, XML, C++, C#,</b> тогда вам нужно вставить следующий код:</li>
<pre class="brush:xml"><script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJava.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushSql.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCpp.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCSharp.js' type='text/javascript'/>
</pre><b>Ознакомьтесь также с </b><a href="http://alexgorbatchev.com/SyntaxHighlighter/manual/brushes/"><b>полным списком языков</b></a><b>. </b>
<li>Сохраните изменения, нажмите <b>"сохранить шаблон".</b></li>
<li>Теперь вы можете использовать подсветку синтаксиса в ваших постах. Для этого вставляйте код между тегами <b><pre class="brush:язык"> </pre></b>. Приведу пример с языком <b>SQL</b>. Допусти нам надо вставить следующий код: <b>SELECT * FROM users WHERE userID = 1:</b></li>
</ol> <pre class="brush:sql"><br />
<div> SELECT *</div><div> FROM users</div><div> WHERE userId = 1;<br />
<div> </pre><br />
<br />
<pre class="brush:sql">SELECT *
FROM users
WHERE userId = 1;
</pre> И напоследок если так получается, что ваш код вставляется в одну строчку, или вообще редактор выдает ошибки на вставляемый код, воспользуйтесь <a href="http://mlawire.blogspot.com/2009/07/html-encoder-encode-html-entities.html"><b>HTML Encoder</b></a>.<br />
<ol></ol><br />
</div></div></span>alukardevhttp://www.blogger.com/profile/12265214722107366401noreply@blogger.com0tag:blogger.com,1999:blog-3823206117807081130.post-13808159687329863012010-09-25T00:03:00.000+07:002010-10-01T23:47:27.052+07:00Настраиваем свой блог на Blogger.com. Пишем статьи под катом. Всем привет, в этом посте я расскажу, как скрывать часть вашего сообщения в блоге под катом.<br />
Так как на Blogger.com отсутствуют стандартные методы реализующие данную возможность, придется сделать несколько не сложных действий.<br />
<span id="fullpost"> <br />
<span class="Apple-style-span" style="color: #99cc00; font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif;"><span class="Apple-style-span" style="line-height: 18px;"><b><span class="Apple-style-span"><span class="Apple-style-span" style="font-size: x-large;">Добавляем возможность писать статьи под катом:</span></span></b></span></span><span class="Apple-style-span" style="font-size: x-large;"> </span><br />
</span><br />
<span id="fullpost"><ol><li><span class="Apple-style-span" style="color: #343434; font-family: Georgia, Utopia, 'Palatino Linotype', Palatino, serif; font-size: 14px; line-height: 21px;">Войдите в свой аккаунт на Blogger.com, Перейдите на вкладку </span><span class="Apple-style-span" style="color: #343434; font-family: Georgia, Utopia, 'Palatino Linotype', Palatino, serif; font-size: 14px; line-height: 21px;"><b>"Дизайн" -> "Изменить HTML".</b></span></li>
<li><span class="Apple-style-span" style="color: #343434; font-family: Georgia, Utopia, 'Palatino Linotype', Palatino, serif; font-size: 14px; line-height: 21px;"><b><span class="Apple-style-span" style="font-weight: normal;">Выберете <b>"загрузить весь шаблон"</b>, чтобы сохранить текущую версию шаблона. Это нужно для того чтобы если что-то пойдет не так, вы всегда могли восстановить старую версию шаблона.</span></b></span></li>
<li><span class="Apple-style-span" style="color: #343434; font-family: Georgia, Utopia, 'Palatino Linotype', Palatino, serif; font-size: 14px; line-height: 21px;"><b><span class="Apple-style-span" style="font-weight: normal;">Поставьте галочку напротив </span><span class="Apple-style-span">"Расширить шаблоны виджета"</span><span class="Apple-style-span" style="font-weight: normal;">. Найдите в коде закрывающийся тег </span><span class="Apple-style-span"></head></span><span class="Apple-style-span" style="font-weight: normal;"> и прямо перед ним вставьте следующий код:</span></b></span></li>
<pre class="brush:xml"><b:if cond='data:blog.pageType != "item"'>
<script type="text/javascript">
var fade = false;
function showFull(id) {
var post = document.getElementById(id);
var spans = post.getElementsByTagName('span');
for (var i = 0; i &lt; spans.length; i++) {
if (spans[i].id == "fullpost") {
if (fade) {
spans[i].style.background = peekaboo_bgcolor;
Effect.Appear(spans[i]);
} else spans[i].style.display = 'inline';
}
if (spans[i].id == "showlink")
spans[i].style.display = 'none';
if (spans[i].id == "hidelink")
spans[i].style.display = 'inline';
}
}
function hideFull(id) {
var post = document.getElementById(id);
var spans = post.getElementsByTagName('span');
for (var i = 0; i &lt; spans.length; i++) {
if (spans[i].id == "fullpost") {
if (fade) {
spans[i].style.background = peekaboo_bgcolor;
Effect.Fade(spans[i]);
} else spans[i].style.display = 'none';
}
if (spans[i].id == "showlink")
spans[i].style.display = 'inline';
if (spans[i].id == "hidelink")
spans[i].style.display = 'none';
}
post.scrollIntoView(true);
}
function checkFull(id) {
var post = document.getElementById(id);
var spans = post.getElementsByTagName('span');
var found = 0;
for (var i = 0; i &lt; spans.length; i++) {
if (spans[i].id == "fullpost") {
spans[i].style.display = 'none';
found = 1;
}
if ((spans[i].id == "showlink") &amp;&amp; (found == 0))
spans[i].style.display = 'none';
}
}
</script>
</b:if>
</pre><li><span class="Apple-style-span" style="color: #343434; font-family: Georgia, Utopia, 'Palatino Linotype', Palatino, serif; font-size: medium;"><span class="Apple-style-span" style="font-size: 14px; line-height: 21px;">Теперь найдите тег </span></span><span class="Apple-style-span" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"><b><data:post.body/>, </b>чуть выше него будет тег<b> <div class='post-body entry-content'/>, </b>измените его следующим образом:</span></li>
<pre class="brush:xml"><div class='post-body entry-content' expr:id='&quot;post-&quot; + data:post.id'>
</pre>и сразу за ним вставьте код: <pre class="brush:xml"><b:if cond='data:blog.pageType == "item"'>
<style>#fullpost{display:inline;}</style>
<p><data:post.body/></p>
<b:else/>
<style>#fullpost{display:none;}</style>
<p><data:post.body/></p> <!-- это уже есть -->
<span id='showlink'>
<a expr:href='data:post.url'>Читать дальше......</a>
</span>
<script type='text/javascript'>
checkFull("post-" + "<data:post.id/>");
</script>
</b:if>
</pre><li>Сохраните изменения. Теперь перейдите на вкладку <b>"Настройки"->"Форматирование" </b>и в поле<b> "Шаблон сообщения"</b> вставьте код: </li>
<pre class="brush:xml">Превью поста
<span id="fullpost">
То, что скрыто под катом
</span>
</pre>Сохраните настройки. </ol></span><span id="fullpost"> Теперь при создании нового сообщения у вас будет появляться данный шаблон. То что вы будете писать до тега <b><span></b> будет отображать в превью поста, а содержимое заключенное в тег <b><span id="fullpost"> </span></b> будет скрыто под катом.</span><br />
<span id="fullpost"> На этом всё, удачного вам написания статей.<br />
</span><br />
<span id="fullpost"><div style="text-align: right;"><a href="http://hackosphere.blogspot.com/2006/11/selective-expandable-posts.html"><span class="Apple-style-span" style="font-size: small;">Источник</span></a>.</div></span>alukardevhttp://www.blogger.com/profile/12265214722107366401noreply@blogger.com1tag:blogger.com,1999:blog-3823206117807081130.post-49601871660835163752010-09-24T23:58:00.000+07:002010-10-01T23:47:27.052+07:00Настраиваем свой блог на Blogger.com. Создаем облако тегов. Всем привет!!! В этой статье я расскажу как добавить облако тегов в ваш блог на Blogger.com.<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://i1206.photobucket.com/albums/bb460/alukardev/54f6d990.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="121" src="http://i1206.photobucket.com/albums/bb460/alukardev/54f6d990.jpg" width="200" /></a></div><div class="separator" style="clear: both; text-align: center;"><br />
</div><span id="fullpost"><br />
<span id="fullpost"></span><br />
<span id="fullpost"><div style="text-align: center;"><span class="Apple-style-span" style="color: #99cc00; font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; font-size: x-large; line-height: 18px;"><b>Добавляем облако тегов:</b></span></div></span><br />
<ol><li><span class="Apple-style-span" style="color: #343434; font-family: Georgia, Utopia, 'Palatino Linotype', Palatino, serif; font-size: 14px; line-height: 21px;">Войдите в свой аккаунт на Blogger.com, Перейдите на вкладку </span><span class="Apple-style-span" style="color: #343434; font-family: Georgia, Utopia, 'Palatino Linotype', Palatino, serif; font-size: 14px; line-height: 21px;"><b>"Дизайн" -> "Элементы страницы". </b>Нажмите <b>"Добавить гаджет"</b> и в списке гаджетов выберите "Ярлыки". Добавьте данный гаджет в свой блог без всяких изменений.</span> </li>
<li><span class="Apple-style-span" style="color: #343434; font-family: Georgia, Utopia, 'Palatino Linotype', Palatino, serif; font-size: 14px; line-height: 21px;">Перейдите на вкладку <b>"Изменить HTML"</b>. </span><span class="Apple-style-span" style="color: #343434; font-family: Georgia, Utopia, 'Palatino Linotype', Palatino, serif; font-size: 14px; line-height: 21px;"><b><span class="Apple-style-span" style="font-weight: normal;">Выберете <b>"загрузить весь шаблон"</b>, чтобы сохранить текущую версию шаблона. Это нужно для того чтобы если что-то пойдет не так, вы всегда могли восстановить старую версию шаблона.</span></b></span></li>
<li><span class="Apple-style-span" style="color: #343434; font-family: Georgia, Utopia, 'Palatino Linotype', Palatino, serif; font-size: medium;"><span class="Apple-style-span" style="font-size: 14px; line-height: 21px;">Найдите в шаблоне следующий тег "<span class="Apple-style-span" style="color: #333333; font-family: Arial, Verdana, sans-serif; font-size: 12px; font-weight: bold; line-height: 20px;">]]></span>" и прямо перед ним вставьте следующий код:</span></span></li>
<pre class="brush:xml">#labelCloud {text-align:center;font-family:arial,sans-serif;}
#labelCloud .label-cloud li{display:inline;background-image:none !important;padding:0 5px;margin:0;vertical-align:baseline !important;border:0 !important;}
#labelCloud ul{list-style-type:none;margin:0 auto;padding:0;}
#labelCloud a img{border:0;display:inline;margin:0 0 0 3px;padding:0}
#labelCloud a{text-decoration:none}
#labelCloud a:hover{text-decoration:underline}
#labelCloud li a{}
#labelCloud .label-cloud {}
#labelCloud .label-count {padding-left:0.2em;font-size:9px;color:#000}
#labelCloud .label-cloud li:before{content:"" !important}
</pre>
<li><span class="Apple-style-span" style="color: #343434; font-family: Georgia, Utopia, 'Palatino Linotype', Palatino, serif; font-size: medium;"><span class="Apple-style-span" style="font-size: 14px; line-height: 21px;">Следующий код настраивает параметры облака тегов, его необходимо вставить после тегов </span></span><span class="Apple-style-span" style="color: #343434; font-family: Georgia, Utopia, 'Palatino Linotype', Palatino, serif; font-size: 14px; line-height: 21px;"><b>"</b><span class="Apple-style-span" style="color: #333333; font-family: Arial, Verdana, sans-serif; font-size: 12px; line-height: 20px;"><b>]]></b></span><b>"</b> <b>"</b:skin>":</b></span></li>
<pre class="brush:xml"><script type='text/javascript'>
// Пользовательские настройки облака тегов
var cloudMin = 1;
var maxFontSize = 21;
var maxColor = [79,148,205];
var minFontSize = 11;
var minColor = [180,205,205];
var lcShowCount = false;
</script>
</pre>
<li><span class="Apple-style-span" style="color: #343434; font-family: Georgia, Utopia, 'Palatino Linotype', Palatino, serif; font-size: medium;"><span class="Apple-style-span" style="font-size: 14px; line-height: 21px;">Теперь нужно изменить гаджет <b>"Ярлыки"</b>. Для этого найдите в коде объявление данного гаджета, это строка примерно такого вида:</span></span></li>
<pre class="brush:xml"><b:widget id='Label2' locked='false' title='Ярлыки' type='Label'/>
</pre>И замените данную строку следующим кодом:
<pre class="brush:xml"><b:widget id='Label1' locked='false' title='Label Cloud' type='Label'>
<b:includable id='main'>
<b:if cond='data:title'>
<h2><data:title/></h2>
</b:if>
<div class='widget-content'>
<div id='labelCloud'/>
<script type='text/javascript'>
// Don't change anything past this point -----------------
// Cloud function s() ripped from del.icio.us
function s(a,b,i,x){
if(a&gt;b){
var m=(a-b)/Math.log(x),v=a-Math.floor(Math.log(i)*m)
}
else{
var m=(b-a)/Math.log(x),v=Math.floor(Math.log(i)*m+a)
}
return v
}
var c=[];
var labelCount = new Array();
var ts = new Object;
<b:loop values='data:labels' var='label'>
var theName = &quot;<data:label.name/>&quot;;
ts[theName] = <data:label.count/>;
</b:loop>
for (t in ts){
if (!labelCount[ts[t]]){
labelCount[ts[t]] = new Array(ts[t])
}
}
var ta=cloudMin-1;
tz = labelCount.length - cloudMin;
lc2 = document.getElementById('labelCloud');
ul = document.createElement('ul');
ul.className = 'label-cloud';
for(var t in ts){
if(ts[t] &lt; cloudMin){
continue;
}
for (var i=0;3 &gt; i;i++) {
c[i]=s(minColor[i],maxColor[i],ts[t]-ta,tz)
}
var fs = s(minFontSize,maxFontSize,ts[t]-ta,tz);
li = document.createElement('li');
li.style.fontSize = fs+'px';
li.style.lineHeight = '1';
a = document.createElement('a');
a.title = ts[t]+' Posts in '+t;
a.style.color = 'rgb('+c[0]+','+c[1]+','+c[2]+')';
a.href = '/search/label/'+encodeURIComponent(t);
if (lcShowCount){
span = document.createElement('span');
span.innerHTML = '('+ts[t]+') ';
span.className = 'label-count';
a.appendChild(document.createTextNode(t));
li.appendChild(a);
li.appendChild(span);
}
else {
a.appendChild(document.createTextNode(t));
li.appendChild(a);
}
ul.appendChild(li);
abnk = document.createTextNode(' ');
ul.appendChild(abnk);
}
lc2.appendChild(ul);
</script>
<noscript>
<ul>
<b:loop values='data:labels' var='label'>
<li>
<b:if cond='data:blog.url == data:label.url'>
<data:label.name/>
<b:else/>
<a expr:href='data:label.url'><data:label.name/></a>
</b:if>
(<data:label.count/>)
</li>
</b:loop>
</ul>
</noscript>
<b:include name='quickedit'/>
</div>
</b:includable>
</b:widget>
</pre>
<li><span class="Apple-style-span" style="color: #343434; font-family: Georgia, Utopia, 'Palatino Linotype', Palatino, serif; font-size: medium;"><span class="Apple-style-span" style="font-size: 14px; line-height: 21px;">Теперь сохраните изменения и просмотрите полученный результат. Если облако тегов не появилось, то скорее всего вы где-то допустили ошибку, попробуйте проделать данные шаги ещё раз.</span></span></li>
</ol><span class="Apple-style-span" style="color: #343434; font-family: Georgia, Utopia, 'Palatino Linotype', Palatino, serif; font-size: medium;"></span><br />
<span class="Apple-style-span" style="color: #343434; font-family: Georgia, Utopia, 'Palatino Linotype', Palatino, serif; font-size: medium;"><div style="text-align: center;"><span class="Apple-style-span" style="color: #99cc00; font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; font-size: x-large; line-height: 18px;"><b><span class="Apple-style-span" style="font-size: medium;">Описание параметров облака тегов:</span></b></span></div></span><span id="fullpost"></span><br />
<div><ul><li><span class="Apple-style-span" style="font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif;"><span class="Apple-style-span" style="line-height: 18px;"><b><span class="Apple-style-span" style="font-size: small;">cloudMin = 1;</span></b></span></span><span class="Apple-style-span" style="font-family: monospace; white-space: pre;"> - количество повторений ярлыка в статьях, требуемых чтобы включить данный ярлык в облако тегов. В данном случае в облако включаются все ярлыки которые использовались хотя бы в одной статье.</span></li>
<li><span class="Apple-style-span" style="font-family: monospace;"><span class="Apple-style-span" style="white-space: pre;"><b>maxFontSize и maxColor</b> - задают цвет и размер соответственно, для ярлыков которые повторяются чаще всего.</span></span></li>
<li><span class="Apple-style-span" style="font-family: monospace;"><span class="Apple-style-span" style="white-space: pre;"><b>minFontSize и minColor</b> - задают цвет и размер соответственно, для ярлыков которые повторяются реже всего. Все остальные ярлыки принимают промежуточное значение между этими цветами и размерами, в зависимости от количества их повторений.</span></span></li>
<li><span class="Apple-style-span" style="font-family: monospace;"><span class="Apple-style-span" style="white-space: pre;"><b>lcShowCount = false;</b> - если значение = "false" - то количество повторений каждого ярлыка не отображается в облаке тегов, если = "true", то отображается.</span></span></li>
</ul><span class="Apple-style-span" style="font-family: monospace; white-space: pre;">На этом всё, и до встречи в следующих постах</span><span class="Apple-style-span" style="color: #99cc00; font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; font-size: x-large; line-height: 18px;"><b><span class="Apple-style-span" style="font-size: medium;">:)</span></b></span></div><div style="text-align: right;"><span class="Apple-style-span" style="color: #99cc00; font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; font-size: x-large; line-height: 18px;"><b><span class="Apple-style-span" style="font-size: medium;"></span></b></span><span class="Apple-style-span" style="font-family: monospace; white-space: pre;"><a href="http://phy3blog.googlepages.com/Beta-Blogger-Label-Cloud.html">Источник</a> </span></div></span>alukardevhttp://www.blogger.com/profile/12265214722107366401noreply@blogger.com0tag:blogger.com,1999:blog-3823206117807081130.post-20942104686821830672010-09-23T15:18:00.000+07:002010-09-25T00:05:29.214+07:00Обзор структуры проекта под Android<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"> Всем привет!!! В этой статье я расскажу об основных файлах проекта под Android и их назначении.</div><div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;"><a href="http://i1206.photobucket.com/albums/bb460/alukardev/StructuredProject/View.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://i1206.photobucket.com/albums/bb460/alukardev/StructuredProject/View.jpg" style="cursor: move;" /></a></div><div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;"><br />
</div><div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;"><br />
</div><div style="text-align: center;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="color: #99cc00; font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif;"><span class="Apple-style-span" style="font-size: x-large; line-height: 18px;"><b><br />
</b></span></span></div></div><span id="fullpost"></span><br />
<span id="fullpost"><div style="text-align: center;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="color: #99cc00; font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; font-size: x-large; line-height: 18px;"><strong>Основные файлы: </strong></span></div></div></div><div style="text-align: center;"></div><ul><li style="text-align: justify;"><b>AndroidManifest.xm</b>l - главный конфигурационный файл приложения;</li>
<li style="text-align: justify;"><b>/src</b> - каталог в котором хранятся все исходные коды приложения;</li>
<li style="text-align: justify;"><b>/src/com.alukardev.hellowworld/MainActivity.java</b> - точка входа в приложение (объявляется в Android Manifest).</li>
<li style="text-align: justify;"><b>/res </b>- здесь хранятся все все внешние ресурсы, такие как анимация, картинки, видео, строковые переменные и прочее.</li>
<li style="text-align: justify;"><b>/res/drawable</b> - здесь хранятся графические ресурсы. При создании нового проекта, можно видеть, что создается три папки drawable - hdpi, ldpi и mdpi, это нужно чтобы хранить в каждой из них одинаковые рисунки, но с различным качеством. На первых парах, можно удалить все эти папки и создать одну папку drawable и в нее помещать графические объекты.</li>
<li style="text-align: justify;"><b>/res/layout/main.xml</b> - данный файл содержит описание интерфейса вашего Activity. В этом файле вы создаете внешний вид Activity. Делать это можно как в ручную, в xml файле, так и в графическом редакторе.</li>
</ul><blockquote><a href="http://i1206.photobucket.com/albums/bb460/alukardev/StructuredProject/main.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span class="Apple-style-span" style="color: black;"><img border="0" height="308" src="http://i1206.photobucket.com/albums/bb460/alukardev/StructuredProject/main.jpg" width="400" /></span></a> </blockquote><div style="text-align: left;"><ul><li><b>/res/values/strings.xml</b> - здесь хранятся строковые значения.</li>
</ul><br />
<ul></ul></div><div style="text-align: left;"><div style="text-align: center;"><span class="Apple-style-span" style="color: #99cc00; font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; line-height: 18px;"><strong><span class="Apple-style-span" style="font-size: x-large;">Подробнее об AndroidManifest:</span></strong></span></div></div><div style="text-align: left;"><br />
</div><div style="text-align: left;"> Кликните два раза по файлу AndroidManifest.xml вашего проекта и откроется редактор.<br />
<br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="http://i1206.photobucket.com/albums/bb460/alukardev/StructuredProject/manifest.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="http://i1206.photobucket.com/albums/bb460/alukardev/StructuredProject/manifest.jpg" width="320" /></a></div><div style="text-align: left;"><br />
</div><div style="text-align: left;"> Вся информация файла Manifest расположена на 5 вкладках:</div><div style="text-align: left;"><ul><li><b>Manifest</b> - на этой вкладке хранится информация о пространстве имен (Pakage), версии проекта, версии кода, и минимальной используемой SDK.</li>
<li><b>Application</b> - содержит такую информацию, как имя проекта, используемая иконка, и т.д. Особое внимание здесь стоит обратить на раздел Application Nodes, именно здесь определяются Activity (классы которые имеют интерфейс и должны отображаться как окно). </li>
</ul><b><span class="Apple-style-span" style="color: #99cc00; font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif;"><span class="Apple-style-span" style="color: black; font-family: 'Times New Roman';"> </span><span class="Apple-style-span" style="line-height: 18px;">Приведу пример чтобы стало все понятно:</span></span></b></div><div style="text-align: left;"> И так у вас создан новый проект, с главным файлом Activity (в моем случае он называется MainActivity). Теперь создайте новый класс, для этого щёлкните правой кнопкой мыши по вашему пространству имен (в моем случае это com.alukardev.helloworld), и выберете <b>New->Class</b>, должно появиться вот такое окно:</div><div class="separator" style="clear: both; text-align: center;"><a href="http://i1206.photobucket.com/albums/bb460/alukardev/StructuredProject/newClass.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://i1206.photobucket.com/albums/bb460/alukardev/StructuredProject/newClass.jpg" width="266" /></a></div><div style="text-align: left;"><br />
</div><ul></ul></span><br />
<div><span id="fullpost"> В поле <b>Name</b> введите, скажем TwoActivity, а в поле <b>Superclass</b> нажмите <b>Browse </b>и введите android.app.Activity, тем самым мы указываем, что наш класс наследуется от класса Activity, и нажмите кнопку <b>Finish</b>. Можно сделать проще скопировав файл MainActivity и переименовав его.<br />
<br />
<span id="fullpost"> Класс создан теперь нужно создать файл с описанием интерфейса. Перейдите в директорию /res/layout и сделайте копию файла main, и переименуйте эту копию в two.xml например.</span><br />
<span id="fullpost"> </span><br />
<span id="fullpost"> Теперь нужно связать класс с интерфейсом. Если посмотреть на класс MainActivity, то можно увидеть, что там переопределяться метод <b>onCreate</b> и в нем связывается класс с layout: setContentView(R.layout.main). Сделаем тоже самое и для вновь созданного класса. </span><br />
<span id="fullpost"> Выберете класс TwoActivity, на вкладке Outline щелкните правой кнопкой мыши по TwoActivity и выберете <b>Source->Override/Implement Methods...</b></span></span><br />
<span id="fullpost"><div class="separator" style="clear: both; text-align: center;"><a href="http://i1206.photobucket.com/albums/bb460/alukardev/StructuredProject/OverrideMethods.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://i1206.photobucket.com/albums/bb460/alukardev/StructuredProject/OverrideMethods.jpg" width="400" /></a></div><div class="separator" style="clear: both; text-align: center;"><br />
</div><div class="separator" style="clear: both; text-align: left;"> В появившемся окне найдите метод <b>onCreate</b>, поставьте напротив него галочку и нажмите <b>OK</b>. Теперь добавьте в данный метод следующий код: <b>setContentView(R.layout.</b><span class="Apple-style-span" style="color: red;"><b>two</b></span><b>); </b></div><div class="separator" style="clear: both; text-align: left;"> Новый Activity создан, теперь нужно объявить его в Manifest файле. Откройте AndroidManifest.xml, перейдите на вкладку <b>Application</b>, в <b>Application Nodes</b> нажмите <b>Add..</b>. Если в появившемся окне у вас выбрано <b>Create a new element in the selected element</b>, то выберете <b>Create a new element at the top level, in Application</b>. Выберете <b>Activity</b> и нажмите <b>ОК</b>. Теперь на вкладке <b>Attributes for Activity</b> нажмите <b>Browse...</b> напротив <b>Name</b>, в появившемся окне введите свое пространство имен сверху (в моем случае это com.alukardev) и в нижнем окне выберете <b>TwoActivity</b>, нажмите <b>ОК</b> и <b>Ctrl-S</b>. Всё новый Activity создан.</div><div class="separator" style="clear: both; text-align: left;"></div><ul><li><b>Permissions</b> - на этой вкладке определяются права доступа вашего приложения к различным функциям. Например если вашему приложению требуется считать список контактов из телефона, тогда ваш нужно зарегистрировать <b>Uses-Permissions</b> с именем android.permission.READ_CONTACTS. Для этого на вкладке <b>Permissions</b> нажмите кнопку <b>Add...</b>, выберете <b>Uses_Permissions </b>и на вкладке <b>Atributes for Uses Permissions</b> выберете android.permission.READ_CONTACTS.</li>
<li><b>AndroidManifest.xml</b> - на этой вкладке можно редактировать Manifest файл вручную в xml разметке.</li>
</ul><br />
<pre class="brush:xml"><?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.alukardev.helloworld"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="TwoActivity"></activity>
</application>
<uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.permission.BLUETOOTH"></uses-permission>
<uses-permission></uses-permission>
<instrumentation></instrumentation>
</manifest>
</pre><div class="separator" style="clear: both; text-align: left;"> Обратите внимание на тег <intent-fliter>, эти тегом помечается Activity, который является точкой входа в приложение.</div><div class="separator" style="clear: both; text-align: left;"></div><div class="separator" style="clear: both; text-align: left;"> Ну вот пожалуй и всё что я хотел написать в этой статье, надеюсь она вам оказалась полезной, и до встречи в следующих постах<b><span class="Apple-style-span" style="color: #99cc00; font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif;"><span class="Apple-style-span" style="line-height: 18px;">:)</span></span></b></div></span></div>alukardevhttp://www.blogger.com/profile/12265214722107366401noreply@blogger.com1tag:blogger.com,1999:blog-3823206117807081130.post-18503592420207170232010-09-22T15:44:00.000+07:002010-09-25T00:05:46.777+07:00Hello Android. Пишем Hello World под ОС Android.Всем доброго времени суток! В этой статье мы сделаем первые шаги в увлекательном деле - программирование под Android:)<br />
Ну что же, от слов к делу, приступим.<br />
<span id="fullpost"> <br />
<span class="Apple-style-span" style="color: #343434; font-family: Arial; font-size: small; line-height: 21px;"><span class="Apple-style-span" style="font-size: 13px;"><span class="Apple-style-span" style="color: #333333; font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; line-height: 18px;"><span style="font-size: large;"><span style="color: #99cc00;"><strong>Установка IDE, необходимого для программирования под Android.</strong></span></span><br />
<br />
И так если вы решили писать программы под Android, первым делом надо скачать и установить необходимое ПО:</span></span></span><br />
<span class="Apple-style-span" style="font-family: Arial; font-size: small;"><span class="Apple-style-span" style="font-size: 13px;"><span class="Apple-style-span" style="color: #333333; font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; line-height: 18px;"></span></span></span></span><br />
<span id="fullpost"></span><br />
<span id="fullpost"><ul style="background-repeat: no-repeat repeat; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 1em; font-weight: normal; line-height: 1.4; list-style-image: initial; list-style-position: outside; list-style-type: disc; margin-bottom: 0.75em; margin-left: 20px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 20px; padding-right: 0px; padding-top: 0px;"><li style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-color: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-style: initial; border-top-style: none; border-top-width: 0px; border-width: initial; font-size: 1em; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 0px;">Sun Java SE Development KIT (JDK) 6 <a href="http://www.oracle.com/technetwork/java/javase/downloads/jdk6-jsp-136632.html" style="color: #679fd3; text-decoration: underline;">www.oracle.com/technetwork/java/javase/d<wbr></wbr>ownloads/jdk6-jsp-136632.html</a> Нажмите кнопку Download и выберете нужную платформу(в моем случае это Windows).</li>
<li style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-color: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-style: initial; border-top-style: none; border-top-width: 0px; border-width: initial; font-size: 1em; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 0px;">Eclipse Classic Version 3.6 (Helios) <a href="http://www.eclipse.org/downloads/packages/eclipse-classic-360/heliosr" style="color: #679fd3; text-decoration: underline;">www.eclipse.org/downloads/packages/eclip<wbr></wbr>se-classic-360/heliosr</a> </li>
<li style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-color: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-style: initial; border-top-style: none; border-top-width: 0px; border-width: initial; font-size: 1em; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 0px;">Android SDK <a href="http://developer.android.com/sdk/index.html" style="color: #679fd3; text-decoration: underline;">developer.android.com/sdk/index.html</a></li>
</ul></span><span id="fullpost"><span class="Apple-style-span" style="font-family: Arial; font-size: small;"><span class="Apple-style-span" style="font-size: 13px;"><span class="Apple-style-span" style="color: #333333; font-family: arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; line-height: 18px;"><strong> Следующий шаг - установка.</strong><br />
Первым делом установите JDK. После этого извлеките архив Eclipse Helios в удобное для вас место, в моем случае это "C:\eclipse". На этом установка Eclipse завершена.<br />
<strong> Установка Android SDK.</strong> Запустите Eclipse, в меню выберете <strong>Help->Install New Software...</strong>, в появившемся окне кликните <strong>Add</strong>, в появившемся окне в поле <strong>Name</strong> введите любое название (например Android), а в поле<strong>Location </strong>адрес: https://dl-ssl.google.com/android/e<wbr></wbr>clipse/ . Нажимаем <strong>ОК</strong> и через некоторое время появиться<strong>Development Tools</strong>, ставим напротив него галочку и нажимаем<strong> Next</strong>, потом ещё раз <strong>Next,</strong> после чего начнется загрузка и установка<strong> ADT</strong> (Android Development Tools). По окончании установки перезагрузите Eclipse.<br />
Теперь извлеките архив с Android SDK<strong> </strong>в папку с Eclipse (в моем случае это "C:\eclipse"). Итак все установлено осталось только обновить Android SDK (в моем случае это заняло больше всего времени:). В Eclipse выберете<strong>Windows->Android SDK and AVD Manager</strong>, перейдите на вкладку <strong>Installed Packages</strong>, нажмите кнопку <strong>Update All...</strong> После того как будет выведен список обновлений, вы можете выбрать <strong>Accept All </strong>(в этом случае установятся все существующие версии библиотек), или выбрать только нужные вам, после чего нажмите кнопку <strong>Install</strong> и ждите. На этом установка необходимого IDE закончена и можно приступать непосредственно к программированию.<br />
<strong>Примечание</strong>: Если так получилось что Eclipse не видит Android SDK, выберете<strong> Windows->Preferences->Android</strong>, и в<strong> SDK Location</strong> укажите путь к Android SDK.<br />
<br />
<a href="http://www.blogger.com/post-edit.g?blogID=3823206117807081130&postID=8146078111631783530" name="cutid2-end" style="color: #679fd3; text-decoration: underline;"></a><span style="font-size: medium;"><a href="http://www.blogger.com/post-edit.g?blogID=3823206117807081130&postID=8146078111631783530" name="cutid3" style="color: #679fd3; text-decoration: underline;"></a><span style="color: #99cc00;"> </span><a href="http://www.blogger.com/post-edit.g?blogID=3823206117807081130&postID=8146078111631783530" name="cutid3-end" style="color: #679fd3; text-decoration: underline;"></a></span><span style="font-size: large;"><a href="http://www.blogger.com/post-edit.g?blogID=3823206117807081130&postID=8146078111631783530" name="cutid4" style="color: #679fd3; text-decoration: underline;"></a><span style="color: #99cc00;"><strong> Пишем "Hello World".</strong></span><a href="http://www.blogger.com/post-edit.g?blogID=3823206117807081130&postID=8146078111631783530" name="cutid4-end" style="color: #679fd3; text-decoration: underline;"></a></span><br />
<br />
<span style="font-size: small;"> <span style="font-size: medium;"> <strong>Создание AVD (Android Virtual Device).</strong></span></span><br />
<br />
Прежде чем создавать и запускать новые проекты, необходимо создать эмулятор девайса, на котором можно будет тестировать проекты. Для этого выберете <strong>Windows->Android SDK and AVD Manager->Virtual Devices</strong>, нажмите <strong>New..</strong>. В появившемся окне в поле <strong>Name </strong>введите любое имя, в поле <strong>Target </strong>выберете версию платформы, в поле <strong>Size</strong> размер карты (например 1024), в поле Skin можно выбрать размер экрана, после чего нажмите <strong>Create AVD</strong>.<br />
<br />
<img align="absMiddle" alt="" height="386" hspace="20%" src="http://i1206.photobucket.com/albums/bb460/alukardev/AVD.jpg" style="-webkit-box-shadow: rgba(0, 0, 0, 0.496094) 1px 1px 5px; background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; padding-bottom: 8px; padding-left: 8px; padding-right: 8px; padding-top: 8px;" width="300" /><br />
<br />
Эмулятор создан, теперь можно его запустить, нажмите <strong>Start->Launch</strong>. Учтите, что загрузка ОС в эмуляторе может занять продолжительное время (всё зависит от того на сколько мощный у вас ПК), так что наберитесь терпения и ждите:)<br />
<br />
<span style="font-size: medium;"> <strong>Создание нового проекта.</strong></span><br />
Ну что же вот наконец-то и пришло время создать наш первый проект под Android.<br />
Выберете <strong>File->New->Project...</strong>, в появившемся окне выберете <strong>Android->Android Project</strong>, нажмите <strong>Next</strong>, в следующей вкладке в поле <strong>Project Name</strong> введите имя проекта, в <strong>Build Target</strong> выберете версию платформы для которой собираетесь писать проект.<br />
На вкладке <strong>Properties</strong> в поле <strong>Application Name </strong>введите имя главного окна приложения, в поле <strong>Pacage Name</strong>путь по которому будет храниться ваш проект, например (com.alukardev.helloworld), в поле <strong>Create Activity</strong> название вашего главного файла проекта (например MainActivity) и наконец в поле <strong>Min SDK Version </strong>минимальную версию API для которых пишется проект (если платформа версии 2.2, то версия API - 8).<br />
<br />
<img align="middle" alt="" height="563" hspace="15%" src="http://i1206.photobucket.com/albums/bb460/alukardev/NewProject.jpg" style="-webkit-box-shadow: rgba(0, 0, 0, 0.496094) 1px 1px 5px; background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; padding-bottom: 8px; padding-left: 8px; padding-right: 8px; padding-top: 8px;" width="400" /><br />
<br />
После чего нажмите <strong>Finish.</strong><br />
Ну вот в общем и все, вам осталось нажать кнопку <strong>Run </strong>(или <strong>Debug</strong>) в Eclipse и увидеть на эмуляторе заветные слова.<br />
<br />
<img align="middle" alt="" height="300" hspace="20%" src="http://i1206.photobucket.com/albums/bb460/alukardev/hello_world.png" style="-webkit-box-shadow: rgba(0, 0, 0, 0.496094) 1px 1px 5px; background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; padding-bottom: 8px; padding-left: 8px; padding-right: 8px; padding-top: 8px;" width="200" /><br />
<br />
В следующей статье я подробно расскажу о структуре проекта.</span></span></span><br />
</span>alukardevhttp://www.blogger.com/profile/12265214722107366401noreply@blogger.com7