丸ボタンの作成
drawableにxmlを追加しボタンを準備します。
作成したボタンをプログラムに追加します。
app→New→Android resouce fileを選択します。
New Resouce Fileに次の設定をします。
File nameにはボタン名を入力します。
Resouce typeはDrawableを選択します。
設定が済むとdrawableにxmlが追加されます。
xmlにボタンの定義をし、
プログラムでは作成したxmlの定義を使用してボタンを実装します。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- ボタンが押されてない時 -->
<item android:state_pressed="false">
<!-- ボタンの形状 -->
<shape android:shape="rectangle">
<!-- ボタンの色 -->
<solid android:color="#fff08080"/>
<!-- ボタンの角の半径 -->
<corners android:radius="10dp"/>
</shape>
</item>
<!-- ボタンが押された時 -->
<item android:state_pressed="true">
<shape android:shape="rectangle">
<solid android:color="#ffffa07a"/>
<corners android:radius="10dp"/>
</shape>
</item>
</selector>
|
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import java.util.Calendar;
//ログ出力の宣言
import android.util.Log;
import android.widget.Button;
//相対的レイアウト(RelativeLayout)を使用する宣言
import android.view.View;
import android.widget.RelativeLayout;
//クリックイベント用に追加
import android.view.View.OnClickListener;
public class MainActivity extends AppCompatActivity implements OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
//座標の初期設定
int x=0;
int y=0;
int width=0;
int height=0;
RelativeLayout layout = new RelativeLayout(this);
setContentView(layout);
//配置を設定
x=100;
y=50;
width=200;
height=80;
RelativeLayout.LayoutParams obj1 = getLayoutObject(width, height);
obj1.leftMargin=x;
obj1.topMargin=y;
//button_round btn=new button_round();
Resources res = getResources();
//Drawable obj = res.getDrawable(R.drawable.button_round);
//API21から使用可能
//obj=res.getDrawable(R.drawable.button_round,getTheme());
Drawable obj=getDrawable2(R.drawable.button_round);
Button btn=new Button(this);
btn.setText("てすと");
btn.setBackground(obj);
layout.addView(btn, obj1);
}
@Override
//ボタンがクリックされたら実行されます。
public void onClick(View view) {
//Dummy
}
private Drawable getDrawable2(int id)
{
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
{
return getDrawable(id);
}
return getResources().getDrawable(id);
}
//レイアウトを決定するオブジェクトを生成し渡します
public RelativeLayout.LayoutParams getLayoutObject(int width,int height)
{
return new RelativeLayout.LayoutParams(width, height);
}
}
|
xmlで定義したボタンを生成したボタンのsetBackgroundに設定します。
(例)
btn.setBackground(obj);
「getDrawable」はバージョンにより使用方法が異なります。
API21(LOLIPOP)からは引数が2個必要となります。
(例)
Drawable obj=res.getDrawable(R.drawable.button_round,getTheme());
API20までは次のように設定できます。
(例)
Drawable obj = res.getDrawable(R.drawable.button_round);
実行結果
|
|