<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>バンコクでアンドロイドアプリを作ってみる</title>
<link>https://ameblo.jp/okako-jp/</link>
<atom:link href="https://rssblog.ameba.jp/okako-jp/rss20.xml" rel="self" type="application/rss+xml" />
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com" />
<description>暇な時間を使って開発。個人的メモ。</description>
<language>ja</language>
<item>
<title>Les Misérables</title>
<description>
<![CDATA[ バンコクで映画をよく観ますが、<br>すべての台詞を理解できるようになりたいです<img src="https://stat.ameba.jp/blog/ucs/img/char/char2/037.gif" alt="メラメラ"><br><br>Les Misérablesの映画はとてもよかったのだけど、<br>ところどころ歌詞の意味が理解できなくて残念でした<img src="https://stat.ameba.jp/blog/ucs/img/char/char2/144.gif" alt="しょぼん"><br>これを機に英語の勉強がんばります！<br><br><br><iframe width="560" height="315" src="https://www.youtube.com/embed/dmHcDWrMH-8" frameborder="0" allowfullscreen></iframe><br><br><iframe width="420" height="315" src="https://www.youtube.com/embed/X4gUFUpZI0E" frameborder="0" allowfullscreen></iframe><br><br><iframe width="560" height="315" src="https://www.youtube.com/embed/PTLwzuQuRsw" frameborder="0" allowfullscreen></iframe><br><br><iframe width="560" height="315" src="https://www.youtube.com/embed/2WQqjDIpQvs" frameborder="0" allowfullscreen></iframe>
]]>
</description>
<link>https://ameblo.jp/okako-jp/entry-11504364765.html</link>
<pubDate>Wed, 03 Apr 2013 23:54:20 +0900</pubDate>
</item>
<item>
<title>GNUstepでobjective-c</title>
<description>
<![CDATA[ <p>あちこちのサイトを参考に、<br>環境を作ってみました。<br>まだあまりよくわかっていないのですが<br>GNUstepというソフトをインストールすると<br>objective-cをwindowsでできるとのことだったので入れてみました。</p><br><p>---</p><br><p>１．GNUstepのWindows版の<br></p><p>　　GNUstep MSYS System(0.30.0)、GNUstep Core(0.30.0)、GNUstep Devel(1.4.0)をインストール<br>　　<a href="http://www.gnustep.org/experience/Windows.html">http://www.gnustep.org/experience/Windows.html</a></p><br><p>２．システム環境変数を設定</p><p><br>　　INCLUDE   /GNUstep/System/Library/Headers<br>　　LIB   /GNUstep/System/Library/Libraries<br>　　CFLAGS   -fconstant-string-class=NSConstantString -enable-auto-import</p><br><p>３．テストファイルを作成<br></p><p>　　C:\GNUstep\msys\1.0\test\helloworld.m</p><br><p>　　helloworld.m(全角スペースいなってるところは半角スペースで)</p><br><p>　　#import &lt;Foundation/Foundation.h&gt;</p><p>　　@interface HelloWorld : NSObject<br>　　- (void) hello;<br>　　@end</p><p>　　@implementation HelloWorld<br>　　- (void) hello<br>　　{<br>　　　　NSLog(@"Hello world!");<br>　　}<br>　　@end<br>　　<br>　　int main(void)<br>　　{<br>　　　　HelloWorld *hw = [[HelloWorld alloc] init];<br>　　　　[hw hello];<br>　　　　[hw release];<br>　　}</p><br><p>４．実行する</p><br><p>　　C:\GNUstep\msys\1.0\msys.batを起動<br>　　C:\GNUstep\msys\1.0\testへ移動<br>　　gcc -o helloworld helloworld.m -lobjc -lgnustep-base -I $INCLUDE -L $LIB $CFLAGS</p><br><p>５．できたexeを実行<br></p><p>　　./helloworld.exe</p><br><p>---</p><br><p><br>一応、プログラムは実行されました<img alt="ニコニコ" src="https://stat.ameba.jp/blog/ucs/img/char/char2/139.gif" width="16" height="16"><br>まだ文字を表示しただけですが・・・</p>
]]>
</description>
<link>https://ameblo.jp/okako-jp/entry-11497312748.html</link>
<pubDate>Sun, 24 Mar 2013 21:27:37 +0900</pubDate>
</item>
<item>
<title>objective-cって？</title>
<description>
<![CDATA[ <p>設計したアンドロイドアプリはプログラム自体はシンプルだけど、<br>材料を集めるのに時間がかかるため、<br>もっと簡単にできるものを考え中<img alt="ロボット" src="https://stat.ameba.jp/blog/ucs/img/char/char2/287.gif" width="16" height="16"></p><br><p>そもそも周りがiphoneユーザばかりなので<br>平行してiphoneアプリも開発したいと思っています。<br>まずはobject-cのお勉強からはじめます。<br>今月はipad miniを購入したので、<br>すぐにmacPCを買うというわけにはいかず<img alt="しょぼん" src="https://stat.ameba.jp/blog/ucs/img/char/char2/144.gif" width="16" height="16"><br>windowsでobjective-cを学んでいこうと思います<img alt="アップ" src="https://stat.ameba.jp/blog/ucs/img/char/char2/173.gif" width="16" height="16"><br></p>
]]>
</description>
<link>https://ameblo.jp/okako-jp/entry-11496794465.html</link>
<pubDate>Sun, 24 Mar 2013 01:32:51 +0900</pubDate>
</item>
<item>
<title>アニマル時計　その１</title>
<description>
<![CDATA[ <p>プログラムは３日間ぐらいでできたけど・・・<br>単語リスト部分は制限をかけていないので、<br>調整は必要だとは思いますが。</p><br><p>肝心の写真が200枚ぐらいしか・・・<img alt="しょぼん" src="https://stat.ameba.jp/blog/ucs/img/char/char2/144.gif" width="16" height="16"><br>なので猫時計ではなく、アニマル時計にしようと思います<img alt="ブタネコ" src="https://stat.ameba.jp/blog/ucs/img/char/char2/019.gif" width="16" height="16"><img alt="ウサギ" src="https://stat.ameba.jp/blog/ucs/img/char/char2/013.gif" width="16" height="16"><img alt="しっぽフリフリ" src="https://stat.ameba.jp/blog/ucs/img/char/char2/004.gif" width="16" height="16"><img alt="おうし座" src="https://stat.ameba.jp/blog/ucs/img/char/char2/213.gif" width="16" height="16"><img alt="うお座" src="https://stat.ameba.jp/blog/ucs/img/char/char2/223.gif" width="16" height="16"><br>それでも400枚ぐらいにしかなりません・・・<br>とはいえ、タイだからこれだけの写真を撮れました<img alt="得意げ" src="https://stat.ameba.jp/blog/ucs/img/char/char2/189.gif" width="16" height="16"><br>３分で切り替えるようにしようか悩み中・・・</p><br><p>それと、<br>タイ語と英語を1440、リストにするのに時間がかかりそうです。<br>でも、勉強だと思って、単語帳を作りたいと思います<img alt="メラメラ" src="https://stat.ameba.jp/blog/ucs/img/char/char2/037.gif" width="16" height="16"></p><br><p><br><a href="http://stat.ameba.jp/user_images/20130321/00/okako-jp/5f/c4/p/o0488035812466180163.png"><img border="0" alt="バンコクでアンドロイドアプリを作ってみる-andoroid7" src="https://stat.ameba.jp/user_images/20130321/00/okako-jp/5f/c4/p/t02200161_0488035812466180163.png"></a></p><p><br><a href="http://stat.ameba.jp/user_images/20130321/00/okako-jp/c2/6c/p/o0488035812466180165.png"><img border="0" alt="バンコクでアンドロイドアプリを作ってみる-andoroid8" src="https://stat.ameba.jp/user_images/20130321/00/okako-jp/c2/6c/p/t02200161_0488035812466180165.png"></a></p><p><br><a href="http://stat.ameba.jp/user_images/20130321/00/okako-jp/0e/8d/p/o0488035812466180164.png"><img border="0" alt="バンコクでアンドロイドアプリを作ってみる-andoroid6" src="https://stat.ameba.jp/user_images/20130321/00/okako-jp/0e/8d/p/t02200161_0488035812466180164.png"></a><br></p><br><br><br><br>
]]>
</description>
<link>https://ameblo.jp/okako-jp/entry-11494743087.html</link>
<pubDate>Thu, 21 Mar 2013 00:13:53 +0900</pubDate>
</item>
<item>
<title>課題</title>
<description>
<![CDATA[ <p>アンドロイド開発方法がざっくりわかったので<br>実際公開するアプリを作っていこうと思います。<br>いろいろ考えすぎてしまうと公開までにあきらめてしまうと思うので、<br>まずは流れをつかむために簡単なアプリを作成し、<br>早めに公開してみようと思います<img alt="アップ" src="https://stat.ameba.jp/blog/ucs/img/char/char2/173.gif" width="16" height="16"></p><br><p>■どのような形で作成するか？<br>・無料（広告を出す）<br>・まずは簡単に作れるもの<br>・アプリのファイルサイズが50MB以上あり、かつ起動までに30秒以上かかる場合を避ける</p><br><p>■なにを作成するか？<br>（猫時計＋単語帳）<br>・１分ごとに猫写真が変わる。<br>・英語、タイ語を同時に覚えられる。<br>・余力があれば、わからなかった単語を登録できるリストを作成して<br>　覚えたら削除できるような機能をつける。</p><br><p>今のところ懸念事項として、画像を1440枚使って大丈夫か、<br>結局50MB以上になりそう・・でも最近は容量がもっと大きくても大丈夫？<br>実機を持っていないので、テストが不十分になってしまうかも<br>といったところです<img alt="あせる" src="https://stat.ameba.jp/blog/ucs/img/char/char2/029.gif" width="16" height="16"></p><br><br><br>
]]>
</description>
<link>https://ameblo.jp/okako-jp/entry-11489158751.html</link>
<pubDate>Tue, 12 Mar 2013 23:16:48 +0900</pubDate>
</item>
<item>
<title>絵を描く(3)</title>
<description>
<![CDATA[ <p><strong>・メニューボタンに色(ピンク・ブルー・イエロー)指定を追加</strong></p><p><br><a href="http://stat.ameba.jp/user_images/20130301/01/okako-jp/59/10/p/o0488035812438766677.png"><img border="0" alt="バンコクでアンドロイドアプリを作ってみる-アンドロイド６" src="https://stat.ameba.jp/user_images/20130301/01/okako-jp/59/10/p/t02200161_0488035812438766677.png"></a><br><br><a href="http://stat.ameba.jp/user_images/20130301/01/okako-jp/a7/38/j/o0240028212438755555.jpg"><img border="0" alt="バンコクでアンドロイドアプリを作ってみる-アンドロイド５" src="https://stat.ameba.jp/user_images/20130301/01/okako-jp/a7/38/j/t02200259_0240028212438755555.jpg"></a></p><p><br><br></p><p>　・res/menu/activity_main.xmlにitemタグを追加<br>　　※赤字部分を追加(絵を描く(2)から変更した部分)↓</p><br><p>　　&lt;menu xmlns:android="<a href="http://schemas.android.com/apk/res/android">http://schemas.android.com/apk/res/android</a> " &gt;<br>　　　　&lt;item <br>　　　　　　android:id="@+id/item1"<br>　　　　　　android:title="@string/clean" /&gt;<br>　　　　&lt;item <br>　　　　　　android:id="@+id/item2"<br>　　　　　　android:title="@string/save" /&gt;<br>　　　　&lt;item <br>　　　　　　android:id="@+id/item3"<br>　　　　　　android:title="@string/finish" /&gt;<br><font color="#ff0000">　　　　&lt;item <br>　　　　　　android:id="@+id/item4"<br>　　　　　　android:title="@string/pink" /&gt;<br>　　　　&lt;item <br>　　　　　　android:id="@+id/item5"<br>　　　　　　android:title="@string/blue" /&gt;<br>　　　　&lt;item <br>　　　　　　android:id="@+id/item6"<br>　　　　　　android:title="@string/yellow" /&gt;<br></font>　　&lt;/menu&gt;</p><br><p>　・res/value/strings.xmlにstring nameタグを追加<br>　　※赤字部分を追加(絵を描く(2)から変更した部分)↓</p><br><p>　　&lt;?xml version="1.0" encoding="utf-8"?&gt;<br>　　&lt;resources&gt;<br>　　　　&lt;string name="app_name"&gt;Hello&lt;/string&gt;<br>　　　　&lt;string name="hello_world"&gt;Hello world!&lt;/string&gt;<br>　　　　&lt;string name="menu_settings"&gt;Settings&lt;/string&gt;<br>　　　　&lt;string name="clean"&gt;DELETE&lt;/string&gt;<br>　　　　&lt;string name="save"&gt;SAVE&lt;/string&gt;<br>　　　　&lt;string name="finish"&gt;FINISH&lt;/string&gt;<br><font color="#ff0000">　　　　&lt;string name="pink"&gt;PINK&lt;/string&gt;<br>　　　　&lt;string name="blue"&gt;BLUE&lt;/string&gt;<br>　　　　&lt;string name="yellow"&gt;YELLOW&lt;/string&gt;</font><br>　　&lt;/resources&gt;</p><br><p>　・src/com.example.hello/MainActivity.javaに追加or変更<br>　　※赤字部分を追加(絵を描く(2)から変更した部分)↓</p><br><p>　　package com.example.hello;<br>　　<br>　　import android.os.Bundle;<br>　　import android.app.Activity;<br>　　import android.view.Menu;<br>　　import android.view.MenuItem;<br>　　<br>　　public class MainActivity extends Activity {<br>　　<br>　　　　PictView pictview;<br>　　<br>　　　　@Override<br>　　　　protected void onCreate(Bundle savedInstanceState) {<br>　　　　　　super.onCreate(savedInstanceState);<br>　　　　　　pictview= new PictView(this);<br>　　　　　　setContentView(pictview);<br>　　　　}<br>　　　　<br>　　　　@Override<br>　　　　public boolean onCreateOptionsMenu(Menu menu) {<br>　　　　　　super.onCreateOptionsMenu(menu);<br>　　　　　　getMenuInflater().inflate(R.menu.activity_main,menu);　<br>　　　　　　return true;<br>　　　　}<br>　　　　 <br>　　　　/** selected each item */<br>　　　　@Override<br>　　　　public boolean onOptionsItemSelected(MenuItem item) {<br>　　　　　　switch ( item.getItemId() ) {<br>　　　　　　　　case R.id.item1:<br>　　　　　　　　　　pictview.clearDrawList(); <br>　　　　　　　　　　break;<br>　　　　　　　　case R.id.item2:<br>　　　　　　　　　　pictview.saveToFile();<br>　　　　　　　　　　break;<br>　　　　　　　　case R.id.item3:<br>　　　　　　　　　　finish();<br>　　　　　　　　　　break;<br><font color="#ff0000">　　　　　　　　case R.id.item4:<br>　　　　　　　　　　pictview.draw_pink();<br>　　　　　　　　　　break;<br>　　　　　　　　case R.id.item5:<br>　　　　　　　　　　pictview.draw_blue();<br>　　　　　　　　　　break;<br>　　　　　　　　case R.id.item6:<br>　　　　　　　　　　pictview.draw_yellow();<br>　　　　　　　　　　break;<br></font>　　　　　　}<br>　　　　　　return true;<br>　　　　}<br>　　<br>　　}</p><br><p>　・src/com.example.hello/PictView.javaに追加or変更<br>　　※赤字部分を追加(絵を描く(2)から変更した部分)↓</p><br><p>　　package com.example.hello;<br>　　<br>　　import android.content.Context;<br>　　import android.graphics.Bitmap;<br>　　import android.graphics.Canvas;<br>　　import android.graphics.Color;<br>　　import android.graphics.Paint;<br>　　import android.graphics.Path;<br>　　import android.util.Log;<br>　　import android.view.MotionEvent;<br>　　import android.view.View;<br>　　import android.view.View.OnTouchListener;<br>　　<br>　　import java.io.File;<br>　　import java.io.FileOutputStream;<br>　　import android.app.Activity;<br>　　import android.graphics.Bitmap.CompressFormat;<br>　　import android.os.Environment;<br>　　import android.widget.Toast;</p><br><p>　　public class PictView extends View implements OnTouchListener<br>　　{<br>　　　　private int type = 0; //event type<br>　　　　private float posx = 0.0f; //position X<br>　　　　private float posy = 0.0f; //position Y<br>　　　　private Path path = null; //path<br>　　　　private Bitmap bitmap = null; //bitmap for view status<br>　　　　<br>　　　　private Canvas bmpCanvas;<br>　　　　private Activity _context;</p><br><p><font color="#ff0000">　　　　//default pink<br>　　　　private int alpha = 255;<br>　　　　private int red = 255;<br>　　　　private int green = 20;<br>　　　　private int blue = 147;</font></p><br><p>　　　　public PictView(Context context)<br>　　　　{<br>　　　　　　super(context);<br>　　　　　　setOnTouchListener(this);<br>　　　　　　_context = (Activity)context;<br>　　　 }<br>　　　　<br>　　　　public boolean onTouch(View v, MotionEvent event)<br>　　　　{<br>　　　　　　try{<br>　　　　　　　　String act = "";<br>　　　　　　　　type = event.getAction(); //event type<br>　　　　　　　　posx = event.getX(); //position X<br>　　　　　　　　posy = event.getY(); //position Y<br>　　　　　　　　<br>　　　　　　　　//set the action according to type<br>　　　　　　　　switch(type){<br>　　　　　　　　case MotionEvent.ACTION_DOWN: //starting point<br>　　　　　　　　　　//initialize the pass<br>　　　　　　　　　　path = new Path();<br>　　　　　　　　　　//move to the starting point<br>　　　　　　　　　　path.moveTo(posx, posy);<br>　　　　　　　　　　<br>　　　　　　　　　　act = "down";<br>　　　　　　　　　　break;<br>　　　　　　　　case MotionEvent.ACTION_MOVE: // midstream point<br>　　　　　　　　　　//line from the previous point<br>　　　　　　　　　　path.lineTo(posx, posy);<br>　　　　　　　　　　<br>　　　　　　　　　　act = "move";<br>　　　　　　　　　　break;<br>　　　　　　　　case MotionEvent.ACTION_UP: //last point<br>　　　　　　　　　　//line from the previous point<br>　　　　　　　　　　path.lineTo(posx, posy);<br>　　　　　　　　　　<br>　　　　　　　　　　//reserve the current view to the bitmap<br>　　　　　　　　　　v.setDrawingCacheEnabled(true);<br>　　　　　　　　　　bitmap = Bitmap.createBitmap(v.getDrawingCache());<br>　　　　　　　　　　v.setDrawingCacheEnabled(false);<br>　　　　　　　　　　<br>　　　　　　　　　　act = "up";<br>　　　　　　　　}<br>　　　　　　　　//add to the log<br>　　　　　　　　Log.v("MotionEvent","action=" + act + "&amp;x=" + posx + "&amp;y=" + posy);<br>　　　　　　　　//update the view<br>　　　　　　　　v.invalidate();<br>　　　　　　　　<br>　　　　　　　　return true;<br>　　　　　　}catch(Exception e){<br>　　　　　　　　e.printStackTrace();<br>　　　　　　　　return false;<br>　　　　　　}<br>　　　　}<br>　　　　　　 <br>　　　　@Override<br>　　　　public void onDraw(Canvas canvas)<br>　　　　{<br>　　　　　　super.onDraw(canvas);<br>　　　　　　//draw the background in light gray<br>　　　　　　canvas.drawColor(Color.LTGRAY);<br>　　　　　　if(bitmap != null){<br>　　　　　　　　//draw reserved bitmap<br>　　　　　　　　canvas.drawBitmap(bitmap, 0, 0, null);<br>　　　　　　}<br>　　　　　　<br>　　　　　　Paint paint = new Paint();</p><p><br>　　　　　　//set true to alias<br>　　　　　　paint.setAntiAlias(true);<br></p><p><font color="#ff0000">　　　　　　//set color, transparent 255<br>　　　　　　paint.setColor(Color.argb(alpha, red, green, blue));</font><br></p><p>　　　　　　//set style as a line<br>　　　　　　paint.setStyle(Paint.Style.STROKE);<br></p><p>　　　　　　//line width 8<br>　　　　　　paint.setStrokeWidth(8);<br></p><p>　　　　　　//round the edge of a line<br>　　　　　　paint.setStrokeCap(Paint.Cap.ROUND);<br></p><p>　　　　　　//round the knot<br>　　　　　　paint.setStrokeJoin(Paint.Join.ROUND);<br>　　　　　　<br>　　　　　　if(path != null){<br>　　　　　　　　//draw the path<br>　　　　　　　　canvas.drawPath(path, paint);<br>　　　　　　}<br>　　　　}<br>　　　　<br>　　　　public void clearDrawList(){<br>　　　　　　bitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);<br>　　　　　　bmpCanvas = new Canvas(bitmap);<br>　　　　　　bmpCanvas.drawColor(Color.LTGRAY);<br>　　　　　　path = null;<br>　　　　　　invalidate();<br>　　　　}<br>　　　　<br>　　　　public void saveToFile(){<br>　　　　　　if(!sdcardWriteReady()){<br>　　　　　　　　 Toast.makeText(_context, "SDcard is not accepted..", Toast.LENGTH_SHORT).show();<br>　　　　　　　　 return;<br>　　　　　　}<br>　　　　　　 <br>　　　　　　File file = new File(Environment.getExternalStorageDirectory().getPath()+"/drawbm/");<br>　　　　　　 <br>　　　　　　try{<br>　　　　　　　　if(!file.exists()){<br>　　　　　　　　　　file.mkdir();<br>　　　　　　　　}<br>　　　　　　}catch(SecurityException e){}<br>　　　　　　 <br>　　　　　　String AttachName = file.getAbsolutePath() + "/";<br>　　　　　　AttachName += System.currentTimeMillis()+".jpg";<br>　　　　　　File saveFile = new File(AttachName);<br>　　　　　　while(saveFile.exists()) {<br>　　　　　　　　AttachName = file.getAbsolutePath() + "/" + System.currentTimeMillis() +".jpg";<br>　　　　　　　　saveFile = new File(AttachName);<br>　　　　　　}<br>　　　　　　try {<br>　　　　　　　　FileOutputStream out = new FileOutputStream(AttachName);<br>　　　　　　　　bitmap.compress(CompressFormat.JPEG, 100, out);<br>　　　　　　　　out.flush();<br>　　　　　　　　out.close();<br>　　　　　　　　Toast.makeText(_context, AttachName + " : saved", Toast.LENGTH_SHORT).show();<br>　　　　　　} catch(Exception e) {<br>　　　　　　　　Toast.makeText(_context, "exception", Toast.LENGTH_SHORT).show();<br>　　　　　　}<br>　　　　}</p><br><p>　　　　private boolean sdcardWriteReady(){<br>　　　　　　String state = Environment.getExternalStorageState();<br>　　　　　　return (Environment.MEDIA_MOUNTED.equals(state));<br>　　　　}</p><br><p><font color="#ff0000">　　　　public void draw_pink(){<br>　　　　　　alpha = 255;<br>　　　　　　red = 255;<br>　　　　　　green = 20;<br>　　　　　　blue = 147;<br>　　　　} <br><br>　　　　public void draw_blue(){<br>　　　　　　alpha = 255;<br>　　　　　　red = 0;<br>　　　　　　green = 0;<br>　　　　　　blue = 255;<br>　　　　} </font></p><p><font color="#ff0000"><br></font></p><p><font color="#ff0000">　　　　public void draw_yellow(){<br>　　　　　　alpha = 255;<br>　　　　　　red = 255;<br>　　　　　　green = 255;<br>　　　　　　blue = 0;<br>　　　　} </font></p><p>　　}<br></p><br>
]]>
</description>
<link>https://ameblo.jp/okako-jp/entry-11480798419.html</link>
<pubDate>Fri, 01 Mar 2013 00:59:23 +0900</pubDate>
</item>
<item>
<title>セルフネイル２</title>
<description>
<![CDATA[ <p>ドラえもん<img alt="ドラえもん" src="https://emoji.ameba.jp/img/user/an/ankology/707.gif">、カラフルバージョン<img alt="ドキドキ" src="https://stat.ameba.jp/blog/ucs/img/char/char2/031.gif" width="16" height="16"></p><br><p>やっぱりひげが難しい<img alt="あせる" src="https://stat.ameba.jp/blog/ucs/img/char/char2/029.gif" width="16" height="16"></p><p><br>私は左利きなので、<br>左手は夫に描いてもらいました。</p><p><br>うーん、ちょっと左右が違うかも・・・</p><p><br><a href="http://stat.ameba.jp/user_images/20130223/00/okako-jp/e2/58/j/o0800060012430637175.jpg"><img border="0" alt="バンコクでアンドロイドアプリを作ってみる-ドラえもん" src="https://stat.ameba.jp/user_images/20130223/00/okako-jp/e2/58/j/t02200165_0800060012430637175.jpg"></a></p><br><p><br></p><br>
]]>
</description>
<link>https://ameblo.jp/okako-jp/entry-11476415793.html</link>
<pubDate>Sat, 23 Feb 2013 00:08:45 +0900</pubDate>
</item>
<item>
<title>絵を描く(2)</title>
<description>
<![CDATA[ <p><strong>・メニューボタンによる<br>　クリア、保存、終了機能を追加</strong></p><p><br><a href="http://stat.ameba.jp/user_images/20130222/19/okako-jp/21/0a/p/o0488035812430197727.png"><img border="0" alt="バンコクでアンドロイドアプリを作ってみる-andoroid3" src="https://stat.ameba.jp/user_images/20130222/19/okako-jp/21/0a/p/t02200161_0488035812430197727.png"></a></p><br><br><p>保存されたmnt/sdcard/drawbm/1361373902500.jpg</p><p><br><a href="http://stat.ameba.jp/user_images/20130222/19/okako-jp/b6/14/j/o0240028212430196283.jpg"><img border="0" alt="バンコクでアンドロイドアプリを作ってみる-android4" src="https://stat.ameba.jp/user_images/20130222/19/okako-jp/b6/14/j/t02200259_0240028212430196283.jpg"></a><br></p><p><br></p><p>　・res/menu/activity_main.xmlにitemタグを追加</p><br><p>　　&lt;menu xmlns:android="<a href="http://schemas.android.com/apk/res/android">http://schemas.android.com/apk/res/android</a>" &gt;<br><font color="#ff0000">　　　　&lt;item <br>　　　　　　android:id="@+id/item1"<br>　　　　　　android:title="@string/clean" /&gt;<br>　　　　&lt;item <br>　　　　　　android:id="@+id/item2"<br>　　　　　　android:title="@string/save" /&gt;<br>　　　　&lt;item <br>　　　　　　android:id="@+id/item3"<br>　　　　　　android:title="@string/finish" /&gt;</font><br>　　&lt;/menu&gt;</p><br><p>　・res/value/strings.xmlにstring nameタグを追加</p><br><p>　　&lt;?xml version="1.0" encoding="utf-8"?&gt;<br>　　&lt;resources&gt;<br>　　　　&lt;string name="app_name"&gt;Hello&lt;/string&gt;<br>　　　　&lt;string name="hello_world"&gt;Hello world!&lt;/string&gt;<br>　　　　&lt;string name="menu_settings"&gt;Settings&lt;/string&gt;<br><font color="#ff0000">　　　　&lt;string name="clean"&gt;DELETE&lt;/string&gt;<br>　　　　&lt;string name="save"&gt;SAVE&lt;/string&gt;<br>　　　　&lt;string name="finish"&gt;FINISH&lt;/string&gt;</font><br>　　&lt;/resources&gt;</p><br><p>　・src/com.example.hello/MainActivity.javaに追加or変更<br>　　※赤字部分を追加 (絵を描く(1)から変更した部分)↓</p><br><p>　　package com.example.hello;<br>　　<br>　　import android.os.Bundle;<br>　　import android.app.Activity;<br><font color="#ff0000">　　import android.view.Menu;<br>　　import android.view.MenuItem;<br></font>　　<br>　　public class MainActivity extends Activity {<br>　　<br>　　　　PictView pictview;<br>　　<br>　　　　@Override<br>　　　　protected void onCreate(Bundle savedInstanceState) {<br>　　　　　　super.onCreate(savedInstanceState);<br>　　　　　　pictview= new PictView(this);<br>　　　　　　setContentView(pictview);<br>　　　　}<br>　　　　<br><font color="#ff0000">　　　　@Override<br>　　　　public boolean onCreateOptionsMenu(Menu menu) {<br>　　　　　　super.onCreateOptionsMenu(menu);<br>　　　　　　getMenuInflater().inflate(R.menu.activity_main,menu);　<br>　　　　　　return true;<br>　　　　}<br>　　　　 <br>　　　　/** selected each item */<br>　　　　@Override<br>　　　　public boolean onOptionsItemSelected(MenuItem item) {<br>　　　　　　switch ( item.getItemId() ) {<br>　　　　　　　　case R.id.item1:<br>　　　　　　　　　　pictview.clearDrawList(); <br>　　　　　　　　　　break;<br>　　　　　　　　case R.id.item2:<br>　　　　　　　　　　pictview.saveToFile();<br>　　　　　　　　　　break;<br>　　　　　　　　case R.id.item3:<br>　　　　　　　　　　finish();<br>　　　　　　　　　　break;<br>　　　　　　}<br>　　　　　　return true;<br>　　　　}<br></font>　　<br>　　}</p><br><p>　・src/com.example.hello/PictView.javaに追加or変更<br>　　※赤字部分を追加(絵を描く(1)から変更した部分)↓</p><br><p>　　package com.example.hello;<br>　　<br>　　import android.content.Context;<br>　　import android.graphics.Bitmap;<br>　　import android.graphics.Canvas;<br>　　import android.graphics.Color;<br>　　import android.graphics.Paint;<br>　　import android.graphics.Path;<br>　　import android.util.Log;<br>　　import android.view.MotionEvent;<br>　　import android.view.View;<br>　　import android.view.View.OnTouchListener;<br>　　<br><font color="#ff0000">　　import java.io.File;<br>　　import java.io.FileOutputStream;<br>　　import android.app.Activity;<br>　　import android.graphics.Bitmap.CompressFormat;<br>　　import android.os.Environment;<br>　　import android.widget.Toast;</font></p><br><p>　　public class PictView extends View implements OnTouchListener<br>　　{<br>　　　　private int type = 0; //event type<br>　　　　private float posx = 0.0f; //position X<br>　　　　private float posy = 0.0f; //position Y<br>　　　　private Path path = null; //path<br>　　　　private Bitmap bitmap = null; //bitmap for view status<br>　　　　<br><font color="#ff0000">　　　　private Canvas bmpCanvas;<br>　　　　private Activity _context;</font></p><br><p>　　　　public PictView(Context context)<br>　　　　{<br>　　　　　　super(context);<br>　　　　　　setOnTouchListener(this);<br>　<font color="#ff0000">　　　　　_context = (Activity)context;<br></font>　　　 }<br>　　　　<br>　　　　public boolean onTouch(View v, MotionEvent event)<br>　　　　{<br>　　　　　　try{<br>　　　　　　　　String act = "";<br>　　　　　　　　type = event.getAction(); //event type<br>　　　　　　　　posx = event.getX(); //position X<br>　　　　　　　　posy = event.getY(); //position Y<br>　　　　　　　　<br>　　　　　　　　//set the action according to type<br>　　　　　　　　switch(type){<br>　　　　　　　　case MotionEvent.ACTION_DOWN: //starting point<br>　　　　　　　　　　//initialize the pass<br>　　　　　　　　　　path = new Path();<br>　　　　　　　　　　//move to the starting point<br>　　　　　　　　　　path.moveTo(posx, posy);<br>　　　　　　　　　　<br>　　　　　　　　　　act = "down";<br>　　　　　　　　　　break;<br>　　　　　　　　case MotionEvent.ACTION_MOVE: // midstream point<br>　　　　　　　　　　//line from the previous point<br>　　　　　　　　　　path.lineTo(posx, posy);<br>　　　　　　　　　　<br>　　　　　　　　　　act = "move";<br>　　　　　　　　　　break;<br>　　　　　　　　case MotionEvent.ACTION_UP: //last point<br>　　　　　　　　　　//line from the previous point<br>　　　　　　　　　　path.lineTo(posx, posy);<br>　　　　　　　　　　<br>　　　　　　　　　　//reserve the current view to the bitmap<br>　　　　　　　　　　v.setDrawingCacheEnabled(true);<br>　　　　　　　　　　bitmap = Bitmap.createBitmap(v.getDrawingCache());<br>　　　　　　　　　　v.setDrawingCacheEnabled(false);<br>　　　　　　　　　　<br>　　　　　　　　　　act = "up";<br>　　　　　　　　}<br>　　　　　　　　//add to the log<br>　　　　　　　　Log.v("MotionEvent","action=" + act + "&amp;x=" + posx + "&amp;y=" + posy);<br>　　　　　　　　//update the view<br>　　　　　　　　v.invalidate();<br>　　　　　　　　<br>　　　　　　　　return true;<br>　　　　　　}catch(Exception e){<br>　　　　　　　　e.printStackTrace();<br>　　　　　　　　return false;<br>　　　　　　}<br>　　　　}<br>　　　　　　 <br>　　　　@Override<br>　　　　public void onDraw(Canvas canvas)<br>　　　　{<br>　　　　　　super.onDraw(canvas);<br>　　　　　　//draw the background in light gray<br>　　　　　　canvas.drawColor(Color.LTGRAY);<br>　　　　　　if(bitmap != null){<br>　　　　　　　　//draw reserved bitmap<br>　　　　　　　　canvas.drawBitmap(bitmap, 0, 0, null);<br>　　　　　　}<br>　　　　　　<br>　　　　　　Paint paint = new Paint();<br>　　　　　　//set true to alias<br>　　　　　　paint.setAntiAlias(true);<br>　　　　　　//set deep pink, transparent 255<br>　　　　　　paint.setColor(Color.argb(255, 255, 20, 147));<br>　　　　　　//set style as a line<br>　　　　　　paint.setStyle(Paint.Style.STROKE);<br>　　　　　　//line width 8<br>　　　　　　paint.setStrokeWidth(8);<br>　　　　　　//round the edge of a line<br>　　　　　　paint.setStrokeCap(Paint.Cap.ROUND);<br>　　　　　　//round the knot<br>　　　　　　paint.setStrokeJoin(Paint.Join.ROUND);<br>　　　　　　<br>　　　　　　if(path != null){<br>　　　　　　　　//draw the path<br>　　　　　　　　canvas.drawPath(path, paint);<br>　　　　　　}<br>　　　　}<br>　　　　<br><font color="#ff0000">　　　　public void clearDrawList(){<br>　　　　　　bitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);<br>　　　　　　bmpCanvas = new Canvas(bitmap);<br>　　　　　　bmpCanvas.drawColor(Color.LTGRAY);<br>　　　　　　path = null;<br>　　　　　　invalidate();<br>　　　　}<br>　　　　<br>　　　　public void saveToFile(){<br>　　　　　　if(!sdcardWriteReady()){<br>　　　　　　　　 Toast.makeText(_context, "SDcard is not accepted..", Toast.LENGTH_SHORT).show();<br>　　　　　　　　 return;<br>　　　　　　}<br>　　　　　　 <br>　　　　　　File file = new File(Environment.getExternalStorageDirectory().getPath()+"/drawbm/");<br>　　　　　　 <br>　　　　　　try{<br>　　　　　　　　if(!file.exists()){<br>　　　　　　　　　　file.mkdir();<br>　　　　　　　　}<br>　　　　　　}catch(SecurityException e){}<br>　　　　　　 <br>　　　　　　String AttachName = file.getAbsolutePath() + "/";<br>　　　　　　AttachName += System.currentTimeMillis()+".jpg";<br>　　　　　　File saveFile = new File(AttachName);<br>　　　　　　while(saveFile.exists()) {<br>　　　　　　　　AttachName = file.getAbsolutePath() + "/" + System.currentTimeMillis() +".jpg";<br>　　　　　　　　saveFile = new File(AttachName);<br>　　　　　　}<br>　　　　　　try {<br>　　　　　　　　FileOutputStream out = new FileOutputStream(AttachName);<br>　　　　　　　　bitmap.compress(CompressFormat.JPEG, 100, out);<br>　　　　　　　　out.flush();<br>　　　　　　　　out.close();<br>　　　　　　　　Toast.makeText(_context, AttachName + " : saved", Toast.LENGTH_SHORT).show();<br>　　　　　　} catch(Exception e) {<br>　　　　　　　　Toast.makeText(_context, "exception", Toast.LENGTH_SHORT).show();<br>　　　　　　}<br>　　　　}</font></p><p><font color="#ff0000">　　　　private boolean sdcardWriteReady(){<br>　　　　　　String state = Environment.getExternalStorageState();<br>　　　　　　return (Environment.MEDIA_MOUNTED.equals(state));<br>　　　　}<br></font>　　}</p><br><p>-----</p><br><p>■Activityクラス<br></p><p>　・onCreateOptionsMenuメソッド<br>　　オプションメニューを生成する</p><br><p>　・getMenuInflater()メソッド<br>　　MenuInflaterを取得する</p><br><p>　　・inflate()メソッド<br>　　　XMLファイルからメニューを作成する</p><br><p>　・onOptionsItemSelected()メソッド<br>　　選択されたアイテムを取得する</p><br><p>■Environmentクラス<br>　データ、キャッシュ、外部ストレージ、システムのパスを取得する</p><br><p>　・getExternalStorageState()メソッド<br>　　外部メディアにアクセスできるかの判定</p><br><p>-----</p><p><br>(保存したファイルの確認方法)<br>エミュレータを入れたところ<br>C:\Users\ユーザ名\android-sdks\tools</p><p>monitor.batを起動→Deviceメニュー→File Explorer・・・<br>→mnt/sdcard/drawbm/現在の時刻.jpg<br>→メニューのPull File from the Deviceをクリックして保存</p><br><br>
]]>
</description>
<link>https://ameblo.jp/okako-jp/entry-11476197006.html</link>
<pubDate>Fri, 22 Feb 2013 19:16:21 +0900</pubDate>
</item>
<item>
<title>絵を描く(1)</title>
<description>
<![CDATA[ <p><strong>・タッチイベントを利用して、絵を描く(1)</strong><br></p><p><br><a href="http://stat.ameba.jp/user_images/20130218/10/okako-jp/5a/e8/p/o0488035812424580471.png"><img border="0" alt="バンコクでアンドロイドアプリを作ってみる-アンドロイド２" src="https://stat.ameba.jp/user_images/20130218/10/okako-jp/5a/e8/p/t02200161_0488035812424580471.png"></a><br></p><p>　・src/com.example.hello/MainActivity.javaに追加or変更<br>　　※赤字部分を追加↓</p><br><p>　　package com.example.hello;<br>　　<br>　　import android.app.Activity;<br>　　import android.os.Bundle;<br>　　<br>　　public class MainActivity extends Activity {</p><p><br>　　　　/** Called when the activity is first created. */<br>　　　　@Override<br>　　　　public void onCreate(Bundle savedInstanceState) {<br>　　　　　　super.onCreate(savedInstanceState);<br><font color="#ff0000">　　　　　　setContentView(new PictView(this));</font><br>　　　　}<br>　　}</p><br><br><p>　・src/com.example.hello/PictView.javaを追加</p><br><p>　　package com.example.hello;<br>　　<br>　　import android.content.Context;<br>　　import android.graphics.Bitmap;<br>　　import android.graphics.Canvas;<br>　　import android.graphics.Color;<br>　　import android.graphics.Paint;<br>　　import android.graphics.Path;<br>　　import android.util.Log;<br>　　import android.view.MotionEvent;<br>　　import android.view.View;<br>　　import android.view.View.OnTouchListener;<br>　　<br>　　public class PictView extends View implements OnTouchListener<br>　　{<br>　　　　private int type = 0; //event type<br>　　　　private float posx = 0.0f; //position X<br>　　　　private float posy = 0.0f; //position Y<br>　　　　private Path path = null; //path<br>　　　　private Bitmap bitmap = null; //bitmap for view status<br>　　<br>　　　　public PictView(Context context)<br>　　　　{<br>　　　　　　super(context);<br>　　　　　　setOnTouchListener(this);<br>　　　　}<br>　　　　<br>　　　　public boolean onTouch(View v, MotionEvent event)<br>　　　　{<br>　　　　　　try{<br>　　　　　　　　String act = "";<br>　　　　　　　　type = event.getAction(); //event type<br>　　　　　　　　posx = event.getX(); //position X<br>　　　　　　　　posy = event.getY(); //position Y<br>　　　　　　　　<br>　　　　　　　　//set the action according to type<br>　　　　　　　　switch(type){<br>　　　　　　　　case MotionEvent.ACTION_DOWN: //starting point<br>　　　　　　　　　　//initialize the pass<br>　　　　　　　　　　path = new Path();<br>　　　　　　　　　　//move to the starting point<br>　　　　　　　　　　path.moveTo(posx, posy);<br>　　　　　　　　　　<br>　　　　　　　　　　act = "down";<br>　　　　　　　　　　break;<br>　　　　　　　　case MotionEvent.ACTION_MOVE: // midstream point<br>　　　　　　　　　　//line from the previous point<br>　　　　　　　　　　path.lineTo(posx, posy);<br>　　　　　　　　　　<br>　　　　　　　　　　act = "move";<br>　　　　　　　　　　break;<br>　　　　　　　　case MotionEvent.ACTION_UP: //last point<br>　　　　　　　　　　//line from the previous point<br>　　　　　　　　　　path.lineTo(posx, posy);<br>　　　　　　　　　　<br>　　　　　　　　　　//reserve the current view to the bitmap<br>　　　　　　　　　　v.setDrawingCacheEnabled(true);<br>　　　　　　　　　　　　　　bitmap = Bitmap.createBitmap(v.getDrawingCache());<br>　　　　　　　　　　　　　　v.setDrawingCacheEnabled(false);<br>　　　　　　　　　　<br>　　　　　　　　　　act = "up";<br>　　　　　　　　}<br>　　　　　　　　//add to the log<br>　　　　　　　　Log.v("MotionEvent","action=" + act + "&amp;x=" + posx + "&amp;y=" + posy);<br>　　　　　　　　//update the view<br>　　　　　　　　v.invalidate();<br>　　　　　　　　<br>　　　　　　　　return true;<br>　　　　　　}catch(Exception e){<br>　　　　　　　　e.printStackTrace();<br>　　　　　　　　return false;<br>　　　　　　}<br>　　　　}<br>　　<br>　　　　@Override<br>　　　　protected void onDraw(Canvas canvas)<br>　　　　{<br>　　　　　　super.onDraw(canvas);<br>　　　　　　//draw the background in light gray<br>　　　　　　canvas.drawColor(Color.LTGRAY);<br>　　　　　　if(bitmap != null){<br>　　　　　　　　//draw reserved bitmap<br>　　　　　　　　canvas.drawBitmap(bitmap, 0, 0, null);<br>　　　　　　}<br>　　　　　　<br>　　　　　　Paint paint = new Paint();<br>　　　　　　//set true to alias<br>　　　　　　paint.setAntiAlias(true);<br>　　　　　　//set deep pink, transparent 255<br>　　　　　　paint.setColor(Color.argb(255, 255, 20, 147));<br>　　　　　　//set style as a line<br>　　　　　　paint.setStyle(Paint.Style.STROKE);<br>　　　　　　//line width 8<br>　　　　　　paint.setStrokeWidth(8);<br>　　　　　　//round the edge of a line<br>　　　　　　paint.setStrokeCap(Paint.Cap.ROUND);<br>　　　　　　//round the knot<br>　　　　　　paint.setStrokeJoin(Paint.Join.ROUND);<br>　　　　　　<br>　　　　　　if(path != null){<br>　　　　　　　　//draw the path<br>　　　　　　　　canvas.drawPath(path, paint);<br>　　　　　　}<br>　　　　}<br>　　}</p><br><p>-----</p><br><p>■Pathクラス<br>　複数の頂点座標(XY座標)を保持する</p><br><p>　・moveTo()メソッド<br>　　パスの開始位置(x,y座標)を指定</p><br><p>　・lineTo()メソッド<br>　　ラインの追加</p><br><p>■Paintクラス</p><br><p>　・setAntiAlias()メソッド<br>　　アンチエイリアスの有効・無効を設定</p><br><p>■Viewクラス</p><br><p>　・setDrawingCacheEnabled()メソッド<br>　　キャッシュの有効・無効を設定</p><br><p>　・OnTouchListenerインターフェイス<br>　　タッチイベントを検出するインターフェース</p><br><p>　　・onTouch()メソッド<br>　　　タッチされた場合の処理を記述</p><br><p>　　・onDraw()コールバックメソッド<br>　　　描画のための処理を記述</p><br><p>　　・invalidate()メソッド<br>　　　再描画する</p><br><p>■Logクラス<br>　ログの出力</p><br><br>
]]>
</description>
<link>https://ameblo.jp/okako-jp/entry-11473077228.html</link>
<pubDate>Mon, 18 Feb 2013 09:55:36 +0900</pubDate>
</item>
<item>
<title>アナログ時計(タイ数字バージョン)</title>
<description>
<![CDATA[ <p><strong>・アナログ時計(タイ数字バージョン)の表示</strong></p><br><p>　・resフォルダの下にdrawableフォルダを作成<br>　　この中にthai_clock.png画像を保存<br>　　※ペイントで時計の針を除いた部分を作成しました。</p><br><p>　・res/layout/activity_main.xmlにAnalogClockタグの追加<br>　　&lt;AnalogClock<br>　　　　android:dial="@drawable/thai_clock"<br>　　　　android:layout_width="wrap_content"<br>　　　　android:layout_height="wrap_content"  /&gt;</p><br><p>今ちょうどタイ文字習っているので、自己満足ですが・・<br><br><a href="http://stat.ameba.jp/user_images/20130215/12/okako-jp/cb/55/p/o0371028612420378342.png"><img border="0" alt="バンコクでアンドロイドアプリを作ってみる-アンドロイド１" src="https://stat.ameba.jp/user_images/20130215/12/okako-jp/cb/55/p/t02200170_0371028612420378342.png"></a><br></p>
]]>
</description>
<link>https://ameblo.jp/okako-jp/entry-11471234429.html</link>
<pubDate>Fri, 15 Feb 2013 17:24:17 +0900</pubDate>
</item>
</channel>
</rss>
