ごんたろうのぼやきトップ

2017年11月07日

動的に横線を引く(hrタグっぽい?)【Androidアプリ開発】

[AndroidStudio]

XML、レイアウトファイルに直接書かずに、プログラム上で
ラインを引くやり方。

レイアウトファイル(XML)に直接
書き込むとしたら
<View
android:layout_width="match_parent"
android:layout_height="2px"
android:background="#FF000000"
android:layout_marginTop="50dp"
android:layout_marginBottom="50dp"
/>
<>は半角に
backgroundの#以降8桁は16進数ARGB(アルファ(透明度)、赤緑青)です。
margin部分は不要ですが、必要であれば。

以下は動的にラインを引くやり方です。
レイアウトファイルにリニアレイアウトを1つだけ配置し、
idに「main_ll」という名称を付けていますが、
こちらも動的にLinearLayoutを生成して、setidなんかで
idを設定して、、、というやり方でも可能です。

頭2行のintはMATCH_PARENTとWRAP_CONTENTを変数に代入しているだけです。
次はレイアウトファイルにあらかじめ記述しているリニアレイアウトを取得します。
(findViewById)

次はマージンの設定なんですが必ずしも必要ではありません。
(ViewGroup.Margin〜 vg_mlp)
line_viewは線を引くためのビューオブジェクトです。
LinearLayout.LayoutParams(横、縦)〜の部分は
横イッパイ、1px、という感じです。
ここで線の太さを指定します。
横も長さを調整して記述するとイイかと思います。

あとはline_viewオブジェクトのsetLayoutParamsにvg_mlpを設定し、
line_viewの背景色を指定することで線の色が決まります。
(線の色は背景色なんですね。)
Colorのargbメソッドは
アルファ(透明度)、レッド、グリーン、ブルー
です。
0〜255から指定します。
下記は透明度255(0に近いほど透明になる)
ブルー(青)の値が255なので青になります。

それから最後に忘れずに
表示するレイアウトオブジェクトにaddViewで
ビューを加えてあげて完了です。

vg_mlp=ll_lp2〜line_view.setLayoutParams(vg_mlp)
の三行は無くても問題ありませんが、
無い場合は、代わりにll_lp2を
setLayoutParamsに指定します。
(横、縦)の指定が必要なためです。
 int MP= LinearLayout.LayoutParams.MATCH_PARENT;
int WC= LinearLayout.LayoutParams.WRAP_CONTENT;//未使用

LinearLayout main_ll;
main_ll= (LinearLayout) findViewById(R.id.main_ll);

View line_view;
LinearLayout.LayoutParams ll_lp2;

ViewGroup.MarginLayoutParams vg_mlp;

line_view=new View(getApplicationContext());
ll_lp2=new LinearLayout.LayoutParams(MP,1);

vg_mlp= ll_lp2;
vg_mlp.setMargins(0,50,0,50);//(left,top,right,bottom)
line_view.setLayoutParams(vg_mlp);

//line_view.setLayoutParams(ll_lp2);

line_view.setBackgroundColor(Color.argb(255,0,0,255));

main_ll.addView(line_view);

posted by ごんたろう(Gontaro-Soft) at 18:08 | Comment(0) | Androidアプリ開発/Android Studio

2017年10月12日

SurfaceViewがうごかん。

SurfaceViewがAndroid6.0以上で動かない
(エミュ上でのみ確認・実機未確認)
ので、Viewに変更した。
SurfaceViewがらみの部分は不要になり、
ViewなのでonDraw内で処理。
invalidate()でループ。不要であれば
フラグかなんかで
invalidate();を止めてやれば良い。
必要ならば再びinvalidate();でループする。

細かいコードは書いてないけど、
とりあえず現状はこんな感じ。
タグ:android OS View
posted by ごんたろう(Gontaro-Soft) at 17:22 | Comment(0) | Androidアプリ開発/Android Studio

2017年07月12日

【Android開発】ScrollViewの使い方

ScrollViewの使い方がややこしいので
備忘録として。
実行エミュレータはGenymotion、
Nexus4(4.1.1:LV16)、Nexus5(5.0.0:LV21)
です。

要は
ヘッダー/スクロールビュー/フッター
と言った感じで、3つにブロックを分ける。
大元のレイアウトは
RelativeLayoutで
ヘッダーフッターはLinearLayoutで構成。

スクロールビューには
「layout_below(header)」「layout_above(footer)」を
指定する。ちなみに
layout_belowとlayout_aboveはRelativeLayoutの属性?

大元のRelativeLayoutは適当で良いので、
次からのLinearLayout〜
見てもらえば良いかと。

values.xmlなどを使ってないので
以下のレイアウトコード単体で問題ないはず…。
なので、MainActivity等と適当に作って
setContentViewで下記のコードを書いた
ファイルR.layout.(ここは任意)を指定して
やれば問題ないんじゃ無いかな?

テキストサイズやら、背景やら、
テキストビューの数は適当に
変えてもらって大丈夫です。
スクロールビューが正常な状態かを
確認するために必要以上のテキストビューを
並べているだけなので。

無駄な部分も多々ありますが、必要に応じて
削ったり足したりしてください。

footer部分が3行になってますが、
headerと構成を入れ替えたりも
出来ると思うので、こちらも
必要に応じて。

背景が黄色い「hoge〜」の部分が
スクロールビューの部分になります。

エミュレータ上ではこんな感じになります。
WS000693.JPG


<?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"
tools:context=".MainActivity"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/header"
android:background="#FFEEFFFF"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="header"
android:textSize="50dp"
android:id="@+id/tv1"
android:layout_alignParentTop="true" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/footer"
android:background="#FFEEFFEE"
android:layout_alignParentBottom="true"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="50dp"
android:id="@+id/footer_txt01"
android:text="footer01"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="50dp"
android:id="@+id/footer_txt02"
android:text="footer02"
android:layout_below="@id/footer_txt01"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="50dp"
android:id="@+id/footer_txt03"
android:text="footer03"
android:layout_below="@id/footer_txt02"
/>
</RelativeLayout>
</LinearLayout>
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/scroll_view"
android:layout_below="@+id/header"
android:layout_above="@id/footer"
android:background="#FFFFFFEE"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="50dp"
android:text="hoge01"
android:id="@+id/hoge1"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="50dp"
android:text="hoge02"
android:id="@+id/hoge2"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="50dp"
android:text="hoge03"
android:id="@+id/hoge3"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="50dp"
android:text="hoge04"
android:id="@+id/hoge4"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="50dp"
android:text="hoge05"
android:id="@+id/hoge5"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="50dp"
android:text="hoge06"
android:id="@+id/hoge6"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="50dp"
android:text="hoge07"
android:id="@+id/hoge7"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="50dp"
android:text="hoge08"
android:id="@+id/hoge8"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="50dp"
android:text="hoge09"
android:id="@+id/hoge9"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="50dp"
android:text="hoge10"
android:id="@+id/hoge10"
/>
</LinearLayout>
</ScrollView>
</RelativeLayout>

posted by ごんたろう(Gontaro-Soft) at 20:25 | Comment(0) | Androidアプリ開発/Android Studio