・ このブログの記事(テキスト・画像)について

2011年12月9日金曜日

【swing】Eclipse3.7の「WindowBuilder 」でSwingでレッツアプリ開発!! その4

前回の続き
プログレスバーを使用してみる。

1.追加ソース
 /**
  * Initialize the contents of the frame.
  */
 private void initialize() {
  frame = new JFrame();
  frame.setBounds(100, 100, 450, 300);
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.getContentPane().setLayout(new BorderLayout(0, 0));
  JButton btnNewButton = new JButton("開始");
  frame.getContentPane().add(btnNewButton, BorderLayout.SOUTH);


  progressBar = new JProgressBar(0 , 100);

  frame.getContentPane().add(progressBar, BorderLayout.NORTH);
  btnNewButton.addActionListener(this);
  timer = new Timer(100 , this);
  timer.start();


 }

 /**
  * 汎用String格納用メンバ変数
  * メモリ効率を考えてStringBuilderを使用する。
  * */
 StringBuilder mStringBuilder = new StringBuilder();
 /* (非 Javadoc)
  * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
  */
 public void actionPerformed(ActionEvent e) {
  if(mStringBuilder !=null){
   mStringBuilder.delete(0, mStringBuilder.length());
  }
  mStringBuilder.append(e.getActionCommand());
  //開始のボタンイベントかどうか
  if(mStringBuilder.toString().equals("開始")){
   //警告ダイアログを表示する。
      JLabel label = new JLabel("Message");
      label.setForeground(Color.RED);
      JOptionPane.showMessageDialog(frame, label);



  }else{
   //ActionEventがクリックボタンではない場合,プログレスバーの値変更処理開始
   int value = progressBar.getValue();
   if (value == 100) {
    timer.stop();
    return;
   }else{
    progressBar.setValue(value + 1);
   }
  }
 } 
 
 2.プログレスバーが表示された。
プログレスダイアログが表示された。
 

3.プロジェクトについて
ここのサイトに格納しております。何かのお役に立てたら幸いです。


 

2011年12月8日木曜日

【swing】Eclipse3.7の「WindowBuilder 」でSwingでレッツアプリ開発!! その3

前回の続きです。

前回作成した、Buttonにクリックイベントを追加してみます。
下記がソースです。色を変更しているところが追加したところです。


package jp.co.hanatann.swing_hello;

import java.awt.Color;
import java.awt.EventQueue;

import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;

import javax.swing.JButton;

public class Swing_Hello implements ActionListener{
 private JFrame frame;

 /**
  * Launch the application.
  */
 public static void main(String[] args) {
  EventQueue.invokeLater(new Runnable() {
   public void run() {
    try {
     Swing_Hello window = new Swing_Hello();
     window.frame.setVisible(true);
    } catch (Exception e) {
     e.printStackTrace();
    }
   }
  });
 }

 /**
  * Create the application.
  */
 public Swing_Hello() {
  initialize();
 }

 /**
  * Initialize the contents of the frame.
  */
 private void initialize() {
  frame = new JFrame();
  frame.setBounds(100, 100, 450, 300);
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.getContentPane().setLayout(new BorderLayout(0, 0));


  JButton btnNewButton = new JButton("開始");
  btnNewButton.addActionListener(this);
  frame.getContentPane().add(btnNewButton, BorderLayout.SOUTH);

 }

 /* (非 Javadoc)
  * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
  */
 public void actionPerformed(ActionEvent e) {
  //開始のボタンイベントかどうか
  if(e.getActionCommand().equals("開始")){
   //警告ダイアログを表示する。
      JLabel label = new JLabel("Message");
      label.setForeground(Color.RED);
      JOptionPane.showMessageDialog(frame, label);



  }

 }

}

アプリの使用としては、開始ボタンを押して警告ダイアログを表示させる仕様です。

開始ボタン押下

警告ダイアログが表示される。
簡単ですね ^^











2011年12月7日水曜日

【swing】Eclipse3.7の「WindowBuilder 」でSwingでレッツアプリ開発!! その2

前回の続きです。
前回は、swingのベースとなるframeを作成しました。
今回は、ボタンを追加してみました。

1.frameにBorderLayoutを追加する。
これを追加すると、レイアウトが綺麗になるっぽいので追加しますww

frameへBoarderLayoutを追加
 2.Buttonを追加
frameへButtonを追加する。

 3.Buttonのプロパティをいじってみる。
Buttonのプロパティ:textを変更してみる。
 4.アプリを実行してみる。


アプリの下部にButtonが追加されたことが確認できる。



2011年12月6日火曜日

【swing】Eclipse3.7の「WindowBuilder 」でSwingでレッツアプリ開発!! その1

eclipse3.7からWindowBuilderというプラグインが追加されて用です!!!

swingについては、耳にした程度で・・・・具体的にこれで開発したことはありません。

このswingは、
ぱっとみ、マルチスレッド向きでは、無い?って印象です。
シングルスレッド向きのアプリは、作成しやすいのかな?



百聞は一見にしかず!!!
何かアプリを作成してみます。



eclipse3.7のWindowBuilderプラグインはデフォルトでは、無効になっているので、有効にする。




WindowBuilderのプラグインをインストールする。


新規->その他を押下
javaプロジェクトを選択

プロジェクトが生成された
新規->その他->WindowBuilder->Application Windowを選択


パッケージ名と名前を入力する。
swingで必要なフレーム類がプロジェクトへ生成された
プロジェクトをJavaアプリとして起動する。

アプリが起動した。

下記は、生成されたソースの貼り付け

package jp.co.hanatann.swing_hello;

import java.awt.EventQueue;

public class Swing_Hello {

 private JFrame frame;

 /**
  * Launch the application.
  */
 public static void main(String[] args) {
  EventQueue.invokeLater(new Runnable() {
   public void run() {
    try {
     Swing_Hello window = new Swing_Hello();
     window.frame.setVisible(true);
    } catch (Exception e) {
     e.printStackTrace();
    }
   }
  });
 }

 /**
  * Create the application.
  */
 public Swing_Hello() {
  initialize();
 }

 /**
  * Initialize the contents of the frame.
  */
 private void initialize() {
  frame = new JFrame();
  frame.setBounds(100, 100, 450, 300);
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 }

}


ほほー、
あっという間に作成できました ^^


2011年12月5日月曜日

【Android】Androidのapkをデコンパイルやeclipseへデバック用にプロジェクトを読み込みしてみる。その2

前回のapkをデコンパイルする方法について・・・・・その2です。

1.環境
WindowsXP
Android開発環境
著作権上問題のないAndroidnoapkファイル
 ecilpse環境
dex2jarをダウンロード
jad をダウンロード
003SH 端末


2.手順~
手順の流れは下記になります。
  1. apkを解凍
  2. 解凍後、classes.dexの取り出し
  3. jarファイルを取り出すため、dex2.jarを使ってみる
  4. 生成されたclasses_dex2jar.jarを解凍して、classファイルを取得してみる
  5. classファイルから javaファイルを取得するため、jad というソフトを使ってみる。
  6. javaファイルゲット!!

 となります。
2.1 apkを解凍
 apkは、実質zip形式ファイルなので、zip解凍ソフトで解凍する。
zip解凍ソフトで解凍する。
zip解凍完了
 

2.2 classes.dexの取り出し
解凍されたclasses.dexを取り出す。
classes.dexを取り出す

2.3 jarファイルを取り出すため、dex2.jarを使ってみる
コマンドをポチット
 classes_dex2jar.jarが生成されます。

2.4 生成されたclasses_dex2jar.jarを解凍して、classファイルを取得してみる
解凍して、classファイルを取得する。
2.5 classファイルから javaファイルを取得するため、jad というソフトを使ってみる。
jadを実行して、javaファイルを生成する。

2.6 javaファイルゲット!!
javaファイルが生成された




でも、これって、Eclipse用にプロジェクトを読み込む場合・・すんなりとはいきません

うーん、javaファイルにデコンパイルできるのは、おいしいですね^^

2011年12月4日日曜日

【Android】Androidのapkをデコンパイルやeclipseへデバック用にプロジェクトを読み込みしてみる。

もし、自分のプロジェクトを紛失して、apkのみしか無い場合の事を考えて、プロジェクト作成できるか、ちょっと調べてみました。


ただ・・・・いろいろありますが2通りあることがわかりました。


1.環境
WindowsXP
Android開発環境
著作権上問題のないAndroidnoapkファイル
 ecilpse環境
apktooldex2jarをダウンロード (dex2.jarについては後日)
003SH 端末

2011年12月3日土曜日

【Android】画面解像度と画面密度~

Android開発をしていると画面解像度と画面密度の対処?がメンドクサイので自分的なメモをw
1.画面解像度
画面解像度とは、横x縦の総画素数の事と理解してます。
ですので、HVGAだとしても、横と縦が異なる場合があります。
そのため、見積もりの前提条件には、HVGA(320x480)と記載するようにしてます ^^

参考サイト



2.画面密度
これ・・・テコヅッタのでいろいろありますが・・・
minSdkVersionの記載を3から4にしたらレイアウトが劇的に崩れた ^^; 時のメモ
(1)まず、AndroidManifest.xmlの

の記述でxmlレイアウトをpx 単位で設定し、アプリを作成する。
(2)この状態で、アスペクト比が同じで画面密度が違う端末でレイアウト確認
->旨く表示されます。px 単位に設定したレイアウトが画面密度が異なる端末でも旨く同じように表示されます。
(3)に変更してアプリを起動すると
画面密度が異なる端末では、レイアウトが崩れます。
(4)対応としては、pxをdpに直しました。
また、動的に座標値を設定している処理については、画面密度のスケール分だけ調整値を入れて修正しました。

これらのことから・・・・
minSdkVersionを3にしていると(Android OS 1.5互換記述だと)pxをdp代わりに解釈するようです。
minSdkVersionを4にしていると(Android OS 1.6互換記述だと)pxはpxとして、dpはdpとして解釈するようです。


っと当時の私は結論にいたりましたww





2011年12月2日金曜日

【Android】CPU使用率について

最近、寒くてお腹をくだして・・・・トイレに篭った花水木です。 ^^;

さてさて
AndroidのCPU使用率について、メモして置きます。

1.環境
Windows
Androidの開発環境を設定済み
003SH端末やemulator

2.Android端末orEmulatorで、CPU使用率を調べる
Android端末orEmulatorのCPU使用率を調べた。
その結果、2通りを試すことができました。


2.1カーネルレベルでCPU使用率やメモリ消費容量を取得


adb shell vmstatによる、全プロセスの総合CPU使用率表示
このコマンドは仮想メモリの統計をレポートするためのに使用します。
参考サイト

上記サイトよりvmstatのヘッダパラメータ一覧抜粋、
1行目 2行目 説明
procs r CPUを割り当て中もしくは割り当て可能なプロセスの数。CPUの個数以下であることが望ましい。

b 割り込みを禁止しているプロセスの数。I/O待ちなどで割り込み不可能なときに発生。ゼロであることが望ましい。
memory swpd 使用している仮想メモリの量(KB)

free 空きメモリの量(KB)

buff バッファキャッシュに使用されているメモリ量(KB)

cache ページキャッシュに使用されているメモリ量(KB)
swap si ディスクからページインされるメモリの量(KB/秒)

so ディスクにページアウトしているメモリの量(KB/秒)
io bi ブロックデバイスから受け取ったブロック数(blocks/秒)

bo ブロックデバイスに送られたブロック数(blocks/秒)
system in 1秒あたりの割り込み回数。クロック割り込みも含む。

cs 1秒あたりのコンテキストスイッチの回数
cpu us ユーザー時間

sy システム時間

id アイドル時間。I/O待ちは含まない。

wa I/O待ち時間

あれ・・・Android端末へvmstatした場合のヘッダパラメータと違う・・・・
Androidにあるvmstatは通常のvmstatと違うということでしょうか?

謎です・・・^^;

何かご存知の方や参考サイトがありましたら教えてください ^^

2.2特定のプロセスIDの使用率を調べる
特定のプロセスIDの使用率を調べる処理をするバッチファイルを作成しました ^^
exeファイルとして公開します。
公開さきはここです。



2.2.1 command_check_cpu_log_on.exe
同階層にlog.txtファイルを生成して、そのファイルへログを追加していくexeファイルです。

起動時の画面

検索するパッケージ名に「sample」が含まれるプロセスのデータをlog.txtファイルへ追加します。

同階層にlog.txtファイルが作成された事を確認できます。

 このlog.txtファイルに検索するパッケージ名に対応する結果が追加されています。



2.2.2command_check_cpulog_off.exe
コマンドプロンプト上にログを出力するexeファイルです。

起動時の画面
コマンドプロンプト上にCPUの計測値が出力されます。




普段、これを使ってCPU使用率を調べています。

2011年12月1日木曜日

【寄付】Grow!がありました

Grow!
という日本初?の寄付サイトがありました。

なんか、FaceBookとTwitterと連携ができるようです。


ふむ・・・・

これベータ版ってかいてあるので・・・・・・まだお試し版ってことでしょうか?





不明ですが ^^;
今後が楽しみです ^^