<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Kubiczek devblog</title>
	<atom:link href="http://blog.kubiczek.eu/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.kubiczek.eu</link>
	<description>I&#039;m lovin&#039; it ;)</description>
	<lastBuildDate>Fri, 20 Aug 2010 21:29:43 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Pot i kreff.. Nowy program lojalnościowy SUPER-PHARM Apteka!</title>
		<link>http://blog.kubiczek.eu/2010/08/pot-i-kreff-nowy-program-lojalnosciowy-super-pharm-apteka/</link>
		<comments>http://blog.kubiczek.eu/2010/08/pot-i-kreff-nowy-program-lojalnosciowy-super-pharm-apteka/#comments</comments>
		<pubDate>Fri, 20 Aug 2010 21:27:33 +0000</pubDate>
		<dc:creator>Adam Kubiczek</dc:creator>
				<category><![CDATA[Praca, projekty, portfolio]]></category>

		<guid isPermaLink="false">http://blog.kubiczek.eu/?p=374</guid>
		<description><![CDATA[W trudzie i znoju, ale ostatecznie z sukcesem uruchomiliśmy nowy program lojalnościowy dla SUPER-PHARMu. Cały projekt składał się z kilku warstw i pracowało przy nim, oprócz S4, także kilka innych firm. 
Ja sam w tym projekcie byłem odpowiedzialny za stworzenie serwisu WWW programu, jego wersji dla kiosków multimedialnych oraz mechanizmów wymieniających dane z bazą sklepu, [...]]]></description>
			<content:encoded><![CDATA[<p>W trudzie i znoju, ale ostatecznie z sukcesem uruchomiliśmy nowy program lojalnościowy dla SUPER-PHARMu. Cały projekt składał się z kilku warstw i pracowało przy nim, oprócz S4, także kilka innych firm. </p>
<p>Ja sam w tym projekcie byłem odpowiedzialny za stworzenie serwisu WWW programu, jego wersji dla kiosków multimedialnych oraz mechanizmów wymieniających dane z bazą sklepu, hostowaną w &#8220;zasobach zewnętrznych&#8221;.</p>
<p><a href="http://www.klublifestyle.pl/" target="_blank"><img src="http://blog.kubiczek.eu/wp-content/uploads/2010/08/lifestyle.jpg" alt="lifestyle" title="lifestyle" width="510" height="334" class="aligncenter size-full wp-image-375" /></a></p>
<p>Projekt, od strony technicznej można określić jako średnio-skomplikowany, ale od strony organizacyjnej.. cóż, mnóstwo zdobytego doświadczenia :)<br />
Przy okazji zdobywania &#8211; zdobyłem również wiele ciekawej wiedzy na temat oferowanych w Polsce hostingów, przez tzw. &#8220;wiodących dostawców usług internetowych&#8221; i ich zapatrywania się na klientów. Ale to już temat na oddzielny post.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kubiczek.eu/2010/08/pot-i-kreff-nowy-program-lojalnosciowy-super-pharm-apteka/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Androida zabawy z wibratorem</title>
		<link>http://blog.kubiczek.eu/2010/07/androida-zabawy-z-wibratorem/</link>
		<comments>http://blog.kubiczek.eu/2010/07/androida-zabawy-z-wibratorem/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 21:17:53 +0000</pubDate>
		<dc:creator>Adam Kubiczek</dc:creator>
				<category><![CDATA[Porady i solucje]]></category>
		<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://blog.kubiczek.eu/?p=370</guid>
		<description><![CDATA[Zagadka. Jak w naszym programie dostać się do sterowania wibratorem? Krótkie poszukiwania i znajdujemy klasę android.os.Vibrator, ale nie ma ona publicznego konstruktora, a więc utworzenie obiektu w ten sposób:

Vibrator v = new Vibrator&#40;&#41;;

się nie powiedzie. Aby otrzymać obiekt Vibrator, potrzebujemy użyć metody getSystemService, którą znajdziemy w klasie android.content.Context.

Vibrator v = &#40;Vibrator&#41; context.getSystemService&#40;Context.VIBRATOR_SERVICE&#41;;

Ale to nie wszystko, [...]]]></description>
			<content:encoded><![CDATA[<p>Zagadka. Jak w naszym programie dostać się do sterowania wibratorem? Krótkie poszukiwania i znajdujemy klasę <code>android.os.Vibrator</code>, ale nie ma ona publicznego konstruktora, a więc utworzenie obiektu w ten sposób:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">Vibrator v <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Vibrator<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>się nie powiedzie. Aby otrzymać obiekt Vibrator, potrzebujemy użyć metody <code>getSystemService</code>, którą znajdziemy w klasie <a href="http://developer.android.com/reference/android/content/Context.html">android.content.Context</a>.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">Vibrator v <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>Vibrator<span style="color: #009900;">&#41;</span> context.<span style="color: #006633;">getSystemService</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">Context</span>.<span style="color: #006633;">VIBRATOR_SERVICE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Ale to nie wszystko, jeżeli nie chcemy otrzymać wyjątku na klatę, powinniśmy w pliku AndroidManifest.xml zaznaczyć, że aplikacja będzie używała wibratora. W tym celu do tego pliku dopisujemy:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;uses-permission</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;android.permission.VIBRATE&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span></pre></div></div>

<p>Dla jasności cały przykładowy plik AndroidManifest.xml:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;manifest</span> <span style="color: #000066;">xmlns:android</span>=<span style="color: #ff0000;">&quot;http://schemas.android.com/apk/res/android&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">package</span>=<span style="color: #ff0000;">&quot;kubik.game.antris&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:versionCode</span>=<span style="color: #ff0000;">&quot;1&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:versionName</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;uses-permission</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;android.permission.VIBRATE&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;application</span> <span style="color: #000066;">android:icon</span>=<span style="color: #ff0000;">&quot;@drawable/icon&quot;</span> <span style="color: #000066;">android:label</span>=<span style="color: #ff0000;">&quot;@string/app_name&quot;</span> <span style="color: #000066;">android:debuggable</span>=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;activity</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;.Antris&quot;</span></span>
<span style="color: #009900;">                  <span style="color: #000066;">android:label</span>=<span style="color: #ff0000;">&quot;@string/app_name&quot;</span></span>
<span style="color: #009900;">				  <span style="color: #000066;">android:theme</span>=<span style="color: #ff0000;">&quot;@android:style/Theme.NoTitleBar.Fullscreen&quot;</span></span>
<span style="color: #009900;">				  <span style="color: #000000; font-weight: bold;">&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;intent-filter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;action</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;android.intent.action.MAIN&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;category</span> <span style="color: #000066;">android:name</span>=<span style="color: #ff0000;">&quot;android.intent.category.LAUNCHER&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/intent-filter<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/activity<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/application<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;uses-sdk</span> <span style="color: #000066;">android:minSdkVersion</span>=<span style="color: #ff0000;">&quot;7&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/uses-sdk<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/manifest<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Zrobione. Teraz już możemy wibrować:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">Vibrator v <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>Vibrator<span style="color: #009900;">&#41;</span> context.<span style="color: #006633;">getSystemService</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">Context</span>.<span style="color: #006633;">VIBRATOR_SERVICE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
v.<span style="color: #006633;">vibrate</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">500</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//wibruj pół sekundy</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.kubiczek.eu/2010/07/androida-zabawy-z-wibratorem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debugowanie na emulatorze&#8230;</title>
		<link>http://blog.kubiczek.eu/2010/07/debugowanie-na-emulatorze/</link>
		<comments>http://blog.kubiczek.eu/2010/07/debugowanie-na-emulatorze/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 15:23:15 +0000</pubDate>
		<dc:creator>Adam Kubiczek</dc:creator>
				<category><![CDATA[Porady i solucje]]></category>

		<guid isPermaLink="false">http://blog.kubiczek.eu/?p=366</guid>
		<description><![CDATA[..to nie to, co wilki lubią najbardziej. Przesiadłem się na prawdziwie sprzętowe rozwiązanie i komfort tworzenia aplikacji wzrósł wielokrotnie. Wybrałem Samsunga i5700 &#8211; niedrogi telefon, a przy tym z Androidem 2.1 oraz oferujący bezproblemową współpracę z eclipse. Jak ta współpraca wygląda w praktyce? Bajecznie &#8211; wybiera się w Eclipse opcję Run, a pisany program w [...]]]></description>
			<content:encoded><![CDATA[<p>..to nie to, co wilki lubią najbardziej. Przesiadłem się na prawdziwie sprzętowe rozwiązanie i komfort tworzenia aplikacji wzrósł wielokrotnie. Wybrałem Samsunga i5700 &#8211; niedrogi telefon, a przy tym z Androidem 2.1 oraz oferujący bezproblemową współpracę z eclipse. Jak ta współpraca wygląda w praktyce? Bajecznie &#8211; wybiera się w Eclipse opcję <code>Run</code>, a pisany program w kilka sekund instaluje się i uruchamia na komórce. Genialne :)</p>
<p>No, teraz emulator służyć będzie tylko do testowania programów na innych konfiguracjach.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kubiczek.eu/2010/07/debugowanie-na-emulatorze/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cykliczne wywoływanie metody w klasie</title>
		<link>http://blog.kubiczek.eu/2010/07/cykliczne-wywolywanie-metody-w-klasie/</link>
		<comments>http://blog.kubiczek.eu/2010/07/cykliczne-wywolywanie-metody-w-klasie/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 19:38:06 +0000</pubDate>
		<dc:creator>Adam Kubiczek</dc:creator>
				<category><![CDATA[Porady i solucje]]></category>
		<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://blog.kubiczek.eu/?p=362</guid>
		<description><![CDATA[Ponieważ piszę dynamiczną grę, więc nie obejdzie się bez cyklicznego wywoływania jakiejś metody, która będzie chociażby przesuwała klocki na ekranie, wyświetlała animacje, odgrywała dźwięki czy robiła inne fascynujące rzeczy. Jak na razie odkryłem dwa sposoby na cykliczne uruchamianie wskazanej metody.
Pierwszy z nich to stworzenie własnego handlera do komunikatów:

class RefreshHandler extends android.os.Handler &#123;
&#160;
    [...]]]></description>
			<content:encoded><![CDATA[<p>Ponieważ piszę dynamiczną grę, więc nie obejdzie się bez cyklicznego wywoływania jakiejś metody, która będzie chociażby przesuwała klocki na ekranie, wyświetlała animacje, odgrywała dźwięki czy robiła inne fascynujące rzeczy. Jak na razie odkryłem dwa sposoby na cykliczne uruchamianie wskazanej metody.</p>
<p>Pierwszy z nich to stworzenie własnego handlera do komunikatów:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> RefreshHandler <span style="color: #000000; font-weight: bold;">extends</span> android.<span style="color: #006633;">os</span>.<span style="color: #006633;">Handler</span> <span style="color: #009900;">&#123;</span>
&nbsp;
       @Override
       <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> handleMessage<span style="color: #009900;">&#40;</span>Message msg<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
           NaszaKlasa.<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">update</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
       <span style="color: #009900;">&#125;</span>
&nbsp;
       <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> sleep<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">long</span> delayMillis<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
           <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">removeMessages</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
           sendMessageDelayed<span style="color: #009900;">&#40;</span>obtainMessage<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span>, delayMillis<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
       <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

<p>oraz w NaszaKlasa (nie mylić z nk.pl) odpowiedniej metody, którą handler będzie wywoływał:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> NaszaKlasa extend <span style="color: #003399;">View</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">private</span> RefreshHandler mRedrawHandler <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> RefreshHandler<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> update<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
       mRedrawHandler.<span style="color: #006633;">sleep</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Aby zainicjować cykliczne wykonywanie się metody update() należy ją pierwszy raz wywołać “ręcznie”; następnie będzie ona wywoływana co zadany interwał czasu (w przykładzie co 100ms) z poziomu klasy RefreshHandler.</p>
<p>Drugi, to użycie klasy java.util.Timer &#8211; ten sposób wydaje się początkowy bardziej oczywisty, jednak jest o tyle niewygodny, że wymaga rozszerzenia naszej klasy o TimerTask. Do mojej aplikacji wybrałem więc pierwsze rozwiązanie, jednak wcale nie będę zaskoczony, gdy okaże się, że istnieje inne, lepsze rozwiązanie. Z jednej strony dokumentacja androida mówi, że jednym z głównych celów, do których są używane handlery, jest “wykonywanie pewnych zdarzeń w przyszłości”, a ponieważ jest to klasa z API androida, więc powinna być odpowiednio zoptymalizowana do zadań, które wykonuje. Z drugiej strony, do takich celów zwykle używało się właśnie klas podobnych do klasy Timer, ale może pora na zmianę przyzwyczajeń. :)</p>
<p>O handlerach poczytacie więcej w dokumentacji: <a href="http://developer.android.com/reference/android/os/Handler.html">http://developer.android.com/reference/android/os/Handler.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kubiczek.eu/2010/07/cykliczne-wywolywanie-metody-w-klasie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Co to jest za obiekt R i dlaczego R cannot be resolve</title>
		<link>http://blog.kubiczek.eu/2010/07/co-to-jest-za-obiekt-r-i-dlaczego-r-cannot-be-resolve/</link>
		<comments>http://blog.kubiczek.eu/2010/07/co-to-jest-za-obiekt-r-i-dlaczego-r-cannot-be-resolve/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 17:54:02 +0000</pubDate>
		<dc:creator>Adam Kubiczek</dc:creator>
				<category><![CDATA[Porady i solucje]]></category>
		<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://blog.kubiczek.eu/?p=357</guid>
		<description><![CDATA[Gdy utworzymy w eclipse nowy projekt na androida, w głównej klasie zostanie wygenerowana metoda onCreate, która będzie wyglądała podobnie do tego co poniżej:

public void onCreate&#40;Bundle savedInstanceState&#41; &#123;
       super.onCreate&#40;savedInstanceState&#41;;
       setContentView&#40;R.layout.main&#41;;
&#125;

Niepokoić może odwołanie do obiektu R i wyświetlany na starcie błąd R cannot be resolve. [...]]]></description>
			<content:encoded><![CDATA[<p>Gdy utworzymy w eclipse nowy projekt na androida, w głównej klasie zostanie wygenerowana metoda <code>onCreate</code>, która będzie wyglądała podobnie do tego co poniżej:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onCreate<span style="color: #009900;">&#40;</span>Bundle savedInstanceState<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
       <span style="color: #000000; font-weight: bold;">super</span>.<span style="color: #006633;">onCreate</span><span style="color: #009900;">&#40;</span>savedInstanceState<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
       setContentView<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">layout</span>.<span style="color: #006633;">main</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Niepokoić może odwołanie do obiektu R i wyświetlany na starcie błąd <code>R cannot be resolve</code>. Kilka minut zajęło mi rozwiązanie tej zagadki, a więc teraz w kilka minut spróbuję napisać jej wyjaśnienie :)</p>
<p>Otóż, podczas budowania projektu, automatycznie w folderze gen/ tworzona jest klasa R, zawierające statyczne definicje wszystkich obiektów, które umieścimy w folderze <code>res/</code>. Ponieważ dopiero co utworzyliśmy nowy projekt, więc klasa R nie została jeszcze wygenerowana i stąd na ekranie widzimy błąd. Wystarczy jednak zbudować projekt i po problemie.</p>
<p>Do czego służy ta klasa? Otóż dzięki niej, możemy odwoływać się do obiektów umieszczonych w folderze <code>res/</code>. Dajmy na to, że do folderu <code>res/drawable/</code> mamy wrzucony obrazek <code>ball1.png</code> &#8211; wtedy w klasie R zostanie utworzony odpowiedni wpis:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">final</span> <span style="color: #000000; font-weight: bold;">class</span> R <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000000; font-weight: bold;">final</span> <span style="color: #000000; font-weight: bold;">class</span> drawable <span style="color: #009900;">&#123;</span>
           <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000000; font-weight: bold;">final</span> <span style="color: #000066; font-weight: bold;">int</span> ball1<span style="color: #339933;">=</span>0x7f020000<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Teraz, aby użyć gdzieś w kodzie nasz obrazek, wystarczy odwołać się do obiektu <code>R.drawable.ball1</code>, np. w taki sposób:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">ImageView i <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ImageView<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
i.<span style="color: #006633;">setImageResource</span><span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">drawable</span>.<span style="color: #006633;">ball1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>No, to było takie wytłumaczenie totalnego laika dla laików :) Więcej o zasobach można poczytać pod adresem <a href="http://developer.android.com/guide/topics/resources/index.html">http://developer.android.com/guide/topics/resources/index.html</a> oraz w dokumentacji <a href="http://developer.android.com/reference/android/content/res/package-summary.html">http://developer.android.com/reference/android/content/res/package-summary.html</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kubiczek.eu/2010/07/co-to-jest-za-obiekt-r-i-dlaczego-r-cannot-be-resolve/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>java.lang.OutOfMemoryError: PermGen space</title>
		<link>http://blog.kubiczek.eu/2010/07/java-lang-outofmemoryerror-permgen-space/</link>
		<comments>http://blog.kubiczek.eu/2010/07/java-lang-outofmemoryerror-permgen-space/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 05:33:56 +0000</pubDate>
		<dc:creator>Adam Kubiczek</dc:creator>
				<category><![CDATA[Porady i solucje]]></category>
		<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://blog.kubiczek.eu/?p=354</guid>
		<description><![CDATA[Kolejny problem z jakim przyszło mi się zmierzyć już na starcie zabawy z androidem, był kolejny błąd, jakim raczył mnie Eclipse. W losowych momentach wyskakiwał komunikat java.lang.OutOfMemoryError: PermGen space i całe środowisko albo się wieszało, albo eclipse się zamykał.
Jak na razie pomogło dopisania do eclipse.ini (znajdujący się w głównym katalogu, w którym zainstalowano eclipse) ustawienia:
-XX:MaxPermSize=256m
tak [...]]]></description>
			<content:encoded><![CDATA[<p>Kolejny problem z jakim przyszło mi się zmierzyć już na starcie zabawy z androidem, był kolejny błąd, jakim raczył mnie Eclipse. W losowych momentach wyskakiwał komunikat <code>java.lang.OutOfMemoryError: PermGen space</code> i całe środowisko albo się wieszało, albo eclipse się zamykał.</p>
<p>Jak na razie pomogło dopisania do eclipse.ini (znajdujący się w głównym katalogu, w którym zainstalowano eclipse) ustawienia:</p>
<p><code>-XX:MaxPermSize=256m</code></p>
<p>tak wygląda obecnie u mnie cały plik eclipse.ini:</p>
<p><code>-startup<br />
plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar<br />
--launcher.library<br />
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519<br />
-product<br />
org.eclipse.epp.package.jee.product<br />
--launcher.XXMaxPermSize<br />
256M<br />
-showsplash<br />
org.eclipse.platform<br />
--launcher.XXMaxPermSize<br />
256m<br />
-vmargs<br />
-Dosgi.requiredJavaVersion=1.5<br />
-XX:MaxPermSize=256m<br />
-Xms40m<br />
-Xmx512m</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kubiczek.eu/2010/07/java-lang-outofmemoryerror-permgen-space/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Project is missing required source folder: &#8216;gen&#8217;</title>
		<link>http://blog.kubiczek.eu/2010/07/project-is-missing-required-source-folder-gen/</link>
		<comments>http://blog.kubiczek.eu/2010/07/project-is-missing-required-source-folder-gen/#comments</comments>
		<pubDate>Sun, 11 Jul 2010 16:31:52 +0000</pubDate>
		<dc:creator>Adam Kubiczek</dc:creator>
				<category><![CDATA[Porady i solucje]]></category>
		<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://blog.kubiczek.eu/?p=351</guid>
		<description><![CDATA[Jest to często spotykany w Eclipse problem, podczas próby zbudowania projektu na androida &#8211; pojawiający się komunikat “Project is missing required source folder: 'gen'” pomimo tego, że taki folder na dysku istnieje. Czasami na taki błąd pomaga rzeczywiste usunięcie tego folderu z dysku i wykonanie Project -> Clean.
Jednak skutecznym rozwiązaniem, które pozwoli zapomnieć o tym [...]]]></description>
			<content:encoded><![CDATA[<p>Jest to często spotykany w Eclipse problem, podczas próby zbudowania projektu na androida &#8211; pojawiający się komunikat <code>“Project is missing required source folder: 'gen'”</code> pomimo tego, że taki folder na dysku istnieje. Czasami na taki błąd pomaga rzeczywiste usunięcie tego folderu z dysku i wykonanie <code>Project -> Clean</code>.</p>
<p>Jednak skutecznym rozwiązaniem, które pozwoli zapomnieć o tym komunikacie jest ustawienie wersji kompilatora Javy dla projektu: <code>Project -> Properties</code>, wybieramy zakładkę <code>Java Compiler</code> i włączamy opcję <code>Enable project specific settings</code> oraz odpowiednio ustawiamy <code>Compiler compliance level</code>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kubiczek.eu/2010/07/project-is-missing-required-source-folder-gen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programowanie Androida</title>
		<link>http://blog.kubiczek.eu/2010/07/programowanie-androida/</link>
		<comments>http://blog.kubiczek.eu/2010/07/programowanie-androida/#comments</comments>
		<pubDate>Sun, 11 Jul 2010 07:30:38 +0000</pubDate>
		<dc:creator>Adam Kubiczek</dc:creator>
				<category><![CDATA[Praca, projekty, portfolio]]></category>
		<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://blog.kubiczek.eu/2010/07/programowanie-androida/</guid>
		<description><![CDATA[Postanowiłem poszerzyć horyzonty i zaczynam zabawę z programowaniem na androida. Powinno pójść łatwo, zważywszy że odnośnie Javy &#8211; to znam podstawową składnię języką i nic więcej :) A uczyć się, to najlepiej podczas programowania konkretnej aplikacji a nie tam jakiegoś przerabiania tutoriali. Pominę więc wszelkie nieśmiertelne “hello wordy” i zaczynam od zaprogramowania mojej ulubionej gry [...]]]></description>
			<content:encoded><![CDATA[<p>Postanowiłem poszerzyć horyzonty i zaczynam zabawę z programowaniem na androida. Powinno pójść łatwo, zważywszy że odnośnie Javy &#8211; to znam podstawową składnię języką i nic więcej :) A uczyć się, to najlepiej podczas programowania konkretnej aplikacji a nie tam jakiegoś przerabiania tutoriali. Pominę więc wszelkie nieśmiertelne “hello wordy” i zaczynam od zaprogramowania mojej ulubionej gry &#8211; tetrisa.</p>
<p>Eclipse zainstalowany, SDK zainstalowane, no to jazda.</p>
<p>Dokładną instrukcję instalacji środowiska znajdziecie pod adresem <a href="http://developer.android.com/sdk/index.html">http://developer.android.com/sdk/index.html</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kubiczek.eu/2010/07/programowanie-androida/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Konwersja zapisu wykładniczego do liczby całkowitej w PHP</title>
		<link>http://blog.kubiczek.eu/2010/06/konwersja-zapisu-wykladniczego-do-liczby-calkowitej-w-php/</link>
		<comments>http://blog.kubiczek.eu/2010/06/konwersja-zapisu-wykladniczego-do-liczby-calkowitej-w-php/#comments</comments>
		<pubDate>Tue, 29 Jun 2010 10:15:16 +0000</pubDate>
		<dc:creator>Adam Kubiczek</dc:creator>
				<category><![CDATA[Porady i solucje]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.kubiczek.eu/?p=346</guid>
		<description><![CDATA[W jaki najprostszy sposób skonwertować liczbę zapisaną w formacie wykładniczym (naukowym), np.:
3.625e+8
do postaci liczby całkowitej? Tu, podobnie jak w starym dobrym języku C, przychodzi nam na pomoc funkcja sscanf(), która parsuje parametr wejściowy zgodnie z podanym formatem. Rozwiązanie dla naszego przypadku jest:

$number = '3.625e+8';
$result = sscanf($number, '%e');
print $result[0]; //wyświetla 362500000

]]></description>
			<content:encoded><![CDATA[<p>W jaki najprostszy sposób skonwertować liczbę zapisaną w formacie wykładniczym (naukowym), np.:</p>
<p><code>3.625e+8</code></p>
<p>do postaci liczby całkowitej? Tu, podobnie jak w starym dobrym języku C, przychodzi nam na pomoc funkcja sscanf(), która parsuje parametr wejściowy zgodnie z podanym formatem. Rozwiązanie dla naszego przypadku jest:</p>
<p><code><br />
$number = '3.625e+8';<br />
$result = sscanf($number, '%e');<br />
print $result[0]; //wyświetla 362500000<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kubiczek.eu/2010/06/konwersja-zapisu-wykladniczego-do-liczby-calkowitej-w-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Inniliving by Kubiczek</title>
		<link>http://blog.kubiczek.eu/2010/04/inniliving-by-kubiczek/</link>
		<comments>http://blog.kubiczek.eu/2010/04/inniliving-by-kubiczek/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 19:34:05 +0000</pubDate>
		<dc:creator>Adam Kubiczek</dc:creator>
				<category><![CDATA[Praca, projekty, portfolio]]></category>

		<guid isPermaLink="false">http://blog.kubiczek.eu/?p=342</guid>
		<description><![CDATA[Najfajniejszy i najładniejszy sklep jaki miałem okazję programować &#8211; Inniliving.pl. Co tu dużo pisać, to trzeba zobaczyć:

Sklep został stworzony na moim nowym silniku happytrade&#174; cosmo edition &#8211; jeżeli i Ty chciałbyś zbudować swój mocno zindywidualizowany sklep internetowy, to zapraszam :)
]]></description>
			<content:encoded><![CDATA[<p>Najfajniejszy i najładniejszy sklep jaki miałem okazję programować &#8211; <a href="http://inniliving.pl">Inniliving.pl</a>. Co tu dużo pisać, to trzeba zobaczyć:</p>
<p><a href="http://inniliving.pl"><img src="http://blog.kubiczek.eu/wp-content/uploads/2010/04/Bez-nazwy-1.jpg" alt="Inniliving" title="Inniliving" width="504" height="431" class="aligncenter size-full wp-image-343" /></a></p>
<p>Sklep został stworzony na moim nowym silniku <i>happytrade&reg; cosmo edition</i> &#8211; jeżeli i Ty chciałbyś zbudować swój mocno zindywidualizowany sklep internetowy, to zapraszam :)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kubiczek.eu/2010/04/inniliving-by-kubiczek/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
