heikyoのblog

[Android] Button(ボタン)をPushで、そのボタンが消え、新しいViewを表示させる方法

「PUSH!!」ボタンをクリックすると、「PUSH!!」ボタンボタンが消え、別のViewが表示され、
その別のViewのボタンをクリックすると、最初のViewを表示させたいと思います。

device-2011-08-08-220952device-2011-08-08-221006





















SampleView.java

package com.sample.buttonview;

import android.app.Activity;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.TextView;

public class SampleViewActivity extends Activity implements OnClickListener {


private Button pushButton;

private Button backButton;

private TextView textView1;

private TextView textView2;

private TextView textView3;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

textView1 = (TextView)findViewById(R.id.textview1);

textView2 = (TextView)findViewById(R.id.textview2);

textView3 = (TextView)findViewById(R.id.textview3);

pushButton = (Button)findViewById(R.id.btnpush);

backButton = (Button)findViewById(R.id.btnback);

pushButton.setOnClickListener(this);

backButton.setOnClickListener(this);

}

@Override

public void onClick(View v) {

switch(v.getId()) {

case R.id.btnpush:

if(pushButton.getVisibility() == View.VISIBLE) {

pushButton.setVisibility(View.GONE);

textView1.setVisibility(View.VISIBLE);

textView2.setVisibility(View.VISIBLE);

textView3.setVisibility(View.VISIBLE);

backButton.setVisibility(View.VISIBLE);

}

break;

case R.id.btnback:

if(backButton.getVisibility() == View.VISIBLE) {

pushButton.setVisibility(View.VISIBLE);

textView1.setVisibility(View.GONE);

textView2.setVisibility(View.GONE);

textView3.setVisibility(View.GONE);

backButton.setVisibility(View.GONE);

}

break;

}

}

}


main.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<FrameLayout 
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<LinearLayout 
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<TextView 
android:id="@+id/textview1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="サンプル1"
android:visibility="gone"
/>
<TextView
android:id="@+id/textview2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="サンプル2"
android:visibility="gone"
/>
<TextView 
android:id="@+id/textview3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="サンプル3"
android:visibility="gone"
/>
<Button 
android:id="@+id/btnback"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="BACK!!!"
android:visibility="gone"
/>
</LinearLayout>
<Button 
android:id="@+id/btnpush"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="PUSH!!"
android:visibility="visible"
/>
</FrameLayout
</LinearLayout>

android:visibility="gone"」がViewを表示させない設定になっています。

[Android] 電話帳アプリを呼び出し、選択したアドレスをメーラを起動したときにセットする

Aボタンを押すと、電話帳アプリを呼び出し、TextViewにアドレスをセットして、
Bボタンを押すと、メーラーを起動して、選択したアドレスを宛先にセットします。
※注意:  Android1.xだと「ContactsContract」が使えないみたいなんで、Android2.x以上で使ってください。

device-2011-07-24-011901device-2011-07-24-012031

Sample.java

public class Samole extends Activity implements OnClickListener {


private static final int PICK_CONTACT = 0;

private Button selectButton;
private Button sendButton;

private TextView addressText;

private String id;

private String uri;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.personal);
 

selectButton = (Button)findViewById(R.id.selectbtn);

sendButton = (Button)findViewById(R.id.sendbtn);

addressText = (TextView)findViewById(R.id.textview);

selectButton.setOnClickListener(this);

sendButton.setOnClickListener(this);
}


@Override

public void onClick(View v) {

switch(v.getId()) {

case R.id.selectbtn:

Intent pickIntent = new Intent(Intent.ACTION_PICK,
ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(pickIntent, PICK_CONTACT);

break;

case R.id.sendbtn:

Intent sendIntent = new Intent();

sendIntent.setAction(Intent.ACTION_SENDTO);

sendIntent.setData(Uri.parse("mailto:" + uri));

sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Test"); // 件名

sendIntent.putExtra(Intent.EXTRA_TEXT, "Test");  // 本文

startActivity(sendIntent);

break;

}

}

@Override

public void onActivityResult(int reqCode, int resultCode, Intent data) {

super.onActivityResult(reqCode, resultCode, data);

switch(reqCode) {

case(PICK_CONTACT):

if(resultCode == Activity.RESULT_OK) {

Uri contactData = data.getData();

Cursor c = managedQuery(contactData, null, null, null, null);

while(c.moveToNext()) {

id = c.getString(c.getColumnIndex(c.getColumnName(11)));

}

}

Cursor emails = managedQuery(ContactsContract.CommonDataKinds.Email.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = " + id,
null,
null);

while(emails.moveToNext()) {

uri = emails.getString(emails.getColumnIndex(
ContactsContract.CommonDataKinds.Email.DATA));

}

addressText.setText("address: " + uri);

}
}

}

[Android] ButtonでTagっぽい表現をしてみる

まず、お知らせから...
パチスロの小役カウンター「スロカウンター」を作りました。
よろしくお願いします。

このアプリでモード別にカウンターを切り替えていきたかったんですが、Tab×ScrollViewがうまいことできない...(勉強不足だと思いますが)なので、Buttonをタブっぽい感じにして、切り替えていくたびに、カウントを表示するビューを変えていくという方法にしました。
device-2011-07-22-130157device-2011-07-22-130216
全てのコードはgithubにあげておきます。

まず、選択されているとき、選択されていないときの、2種類のボタンのxmlファイルを作成します。

focus_button.xml

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android">  

    <stroke android:width="3px" android:color="#0000FF" />  

    <padding android:left="2px" android:top="2px"  

            android:right="2px" android:bottom="2px" />  

    <corners android:radius="2px" />

    <solid android:color="#00FFFF"/>

</shape


notfocus_button.xml

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android">  

    <stroke android:width="3px" android:color="#0000FF" />  

    <padding android:left="2px" android:top="2px"  

            android:right="2px" android:bottom="2px" />  

    <corners android:radius="2px" />

    <solid android:color="#00FFFF"/>

</shape


メインコードここから

SampleButtonTabActivity.java

package com.sample.buttontab;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class SampleButtonTabActivity extends Activity implements OnClickListener {
private static final int MODE_A = 1;
private static final int MODE_B = 2;
private Button aButton;
private Button bButton;
private Button changeButton;
private Button countButton;
private TextView countText;
private int aCount = 0;
private int bCount = 0;
private int mode;
public SampleButtonTabActivity () {
mode = MODE_A;
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
        
aButton = (Button)findViewById(R.id.modeAbutton);
aButton.setBackgroundResource(R.drawable.focus_button);
bButton = (Button)findViewById(R.id.modeBbutton);
bButton.setBackgroundResource(R.drawable.notfocus_button);
changeButton = (Button)findViewById(R.id.changebutton);
changeButton.setOnClickListener(this);
countButton = (Button)findViewById(R.id.countbutton);
countButton.setOnClickListener(this);
countText = (TextView)findViewById(R.id.counttext);
}
    
@Override
public void onClick(View v) {
switch(v.getId()) {
case R.id.changebutton:
modeChange();
break;
case R.id.countbutton:
count();
break;
}
}
    
private void modeChange() {
switch(mode) {
case MODE_A:
mode = MODE_B;
aButton.setBackgroundResource(R.drawable.notfocus_button);
bButton.setBackgroundResource(R.drawable.focus_button);
countText.setText("MODE_B: " + String.valueOf(bCount));
break;
case MODE_B:
mode = MODE_A;
aButton.setBackgroundResource(R.drawable.focus_button);
bButton.setBackgroundResource(R.drawable.notfocus_button);
countText.setText("MODE_A: " + String.valueOf(aCount));
break;
}
}
private void count() {
switch(mode) {
case MODE_A:
aCount++;
countText.setText("MODE_A: " + String.valueOf(aCount));
break;
case MODE_B:
bCount++;
countText.setText("MODE_B: " + String.valueOf(bCount));
break;
}
}
}

[Android] 指定した領域内に入るとアラートしてくれるアプリを作った

今回は、前回紹介した「ココメッセ」をベースに色々機能をつけてみた。
名前は「ポスマップ」にしてみた。試しに使ってみてくれたら幸いです。
インストールはこちらから。

あと、コードはgithubから。かなりぐちゃぐちゃだと思いますが...

実装した機能としては

目的地を設定する際に...
・ タップした場所を目的地に設定
・ 検索BOXから目的地を設定(結果が粗かった場合のため、詳細検索も出来るようにしてみた。)
SC20110621-122550SC20110621-122603


設定画面の作成
・ アラートする指定距離の設定
・ アラート音orバイブの設定 
・ アラート音の場合の着信音設定
SC20110621-123717SC20110621-123651


TwitterやGmail関連
・ 現在地だけでなく、目的地もつぶやくことが出来る

その他
・ ユーザーの移動した足跡を表示
・ 現在地から目的地までの直線距離の算出 

大まかなにすると、このような機能を実装してみた。
細かいところで言うと、アプリ起動時にGPSのON/OFFの確認や、Backボタンを押したときの処理などなど...

色々な意見、感想など頂けたら嬉しいです。

[Android] 現在位置をつぶやいたりできるアプリを作ってみた

名は「ポスマップ」。現在地取得ボタンで現在地を取得し、共有ボタンでG-mailやTwitterで位置情報を付加したメッセージを送ることができる。とても単純なアプリ。
ちなみにアプリのインストールはこちらから。 コードはこちらに。

pos1device-2011-07-14-153954



「ココメッセ」は、現在地をつぶやいたりメールでお知らせすることが出来るアプリです。

送られてきたメッセージはGoogle mapsのリンクが貼り付けてあるので、ブラウザでも、確認することができます。

「今暇なんだけど、誰かここらへんにいますか」みたいなこと簡単に送信することができたら、楽だなと思ったんで作ってみました。

子供が「今どこにいる?」とか、「どこで遊んでいる?」など、いろいろ心配な方には、子供にこれを使わせてほしいです。ということで、子供でも、説明書無しで使い方が理解できるくらい単純なものにしたかったのでこんな感じになりました。 
livedoor プロフィール
記事検索
カテゴリ別アーカイブ
  • ライブドアブログ
heikyoのblog