ソース掲示板




すべてから検索

キーワード   条件 表示 現行ログ 過去ログ トピックス 名前 本文
Android Studio で tools.jar を使用して基本的なアクションを簡単に実装する
日時: 2016/05/10 15:21
名前: lightbox



ダウンロード
tools.jar

▼ ソースコードと簡単な説明
Android Studio のテストの時間を短縮する為のいくつかの static メソッドをまとめた Tools クラス



プロジェクトを Empty Activity で作成する


ステータスバー( 一番下 )を見て Gradle の処理が終わるまで待つ
メンテナンス

tools.jar を使えるようにする ( No.1 )
日時: 2016/05/08 19:02
名前: lightbox


日時: 2016/05/08 19:02
名前: lightbox
プロジェクトツリーに変更する


libs を選択して右クリックから『Show in Explorer』


Show in Explorer で開いた場所から libs に入り、その場所のファイルのパスをアドレスバーでコピーして、ダウンロードのウインドウで貼り付けてダウンロードします。ダウンロードできたら、Android Studio に戻ってクリックしてツリーフォーカスを戻すと、tools.jar 1が表示されるます。
右クリックで 『Add As Library』
ここに表示されるのは最初の登録の時のみです。後からのメンテナンスや直接の登録は 『ファイル』メニューの 『Project Structure』から


『app』から 『Dependencies』



※ app はデフォルトのキーワードで変更可能です
※ 実際は app フォルダにある build.gradle に書き込まれています
build.gradle
apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "lightbox.may.toolstest"
        minSdkVersion 19
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:22.2.1'
    compile files('libs/tools.jar')
}
このアーティクルの参照用URLをクリップボードにコピー メンテナンス
インターネットにアクセスするので、AndroidManifest を変更 ( No.2 )
日時: 2016/05/08 19:28
名前: lightbox
左サイドのツリーを Android に戻して、AndroidManifest を開きます



<u と入力すると候補が表示されます( CTRL + SPACE でも表示されます )



uses-permission を選択すると、次は属性値の候補( android.permission.INTERNET を選択します )



終了タグ無しで閉じたい( つまり入力の完了 )は、CTRL + SHIFT + ENTER です。




入力が完了しました


▼ AndroidManifest
<?xml version="1.0" encoding="utf-8"?>
<manifest package="lightbox.may.toolstest"
          xmlns:android="http://schemas.android.com/apk/res/android">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>

                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>
    <uses-permission android:name="android.permission.INTERNET"/>

</manifest>
このアーティクルの参照用URLをクリップボードにコピー メンテナンス
画面を作成する ( No.3 )
日時: 2016/05/08 19:50
名前: lightbox
まず、インターネットからテキストデータを取得して、TextView に表示する為の画面を作成します



▼ activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="lightbox.may.toolstest.MainActivity">

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true"
        android:id="@+id/linearLayout">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button1"
            android:id="@+id/button"
            android:layout_weight="1"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button2"
            android:id="@+id/button2"
            android:layout_weight="1"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button3"
            android:id="@+id/button3"
            android:layout_weight="1"/>

    </LinearLayout>

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/scrollView"
        android:layout_below="@+id/linearLayout"
        android:layout_alignParentStart="true"
        android:layout_marginTop="10dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/textView"/>
    </ScrollView>

</RelativeLayout>
ボタンを横に3つ均等に並べる為に LinearLayout(horizontal) を使用しています。
※ 均等に配置しているのは android:layout_weight="1" です。

ScrollView は、RelativeLayout 内で、LinearLayout より、10dp 下に配置して、残りのスペースを全て使用しています ※ スペース一杯は android:layout_width="match_parent" と android:layout_height="match_parent"
このアーティクルの参照用URLをクリップボードにコピー メンテナンス
Button1 をクリックしたら、TextView にインターネットから取得したテキストを表示する ( No.4 )
日時: 2016/05/08 20:18
名前: lightbox
対象となる URL はどこでもいいのですが、ここでは Textt サービスに登録した URL を使用しています

http://textt.net/sworc/20160508091416.txt

ボタンのイベント登録は、最も単純な記述方法で行い、その場でイベント処理を行います

package lightbox.may.toolstest;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.TextView;

import jp.android.work.Tools;

public class MainActivity extends AppCompatActivity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		// ボタンのイベントを登録
		MainActivity.this.findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {

				String url = "http://textt.net/sworc/20160508091416.txt";
				Tools.callHttpGet(url, "utf-8", new Tools.OnAsyncTaskListener() {
					@Override
					public void onAsyncTaskListener(String s) {
						TextView tv = (TextView) MainActivity.this.findViewById(R.id.textView);
						tv.setText(s);

						if ( !s.equals("") ) {
							Log.i("lightbox", "テキストを取得しました");
						}
						else {
							Log.i("lightbox", "テキストを取得できませんでした");
						}
					}
				});

			}

		});

	}
}
このアーティクルの参照用URLをクリップボードにコピー メンテナンス