以前以下の記事を書きました。
AndroidでViewの枠線と背景色を動的に変更する
上記記事はres/drawableに用意したborder.xmlを用いて、背景色や枠線の色を動的に変化させるというものです。
要はborder.xmlで定義したシェイプと同じものを動的に生成する、という感じですね。
AndroidでViewの枠線と背景色を動的に変更する
上記記事はres/drawableに用意したborder.xmlを用いて、背景色や枠線の色を動的に変化させるというものです。
ただ、この方法だと、画面内に複数のViewがあって、それぞれを変化させたい場合には一工夫必要です。
その場合は、対象のViewのBackgroundResourceに対して、GradientDrawableを生成してセットすることで実現できます。
GradientDrawable bgShape = new GradientDrawable(); bgShape.setStroke(1, Color.parseColor("#FFFFFFFF")); bgShape.setCornerRadius(2); bgShape.setColor(Color.parseColor("#000000FF")); if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) { targetView.setBackgroundDrawable(bgShape); } else { targetView.setBackground(bgShape); }
要はborder.xmlで定義したシェイプと同じものを動的に生成する、という感じですね。
私の場合はカスタムしたViewのメソッドとして組み込んで使用していました。
pubilc void setBorder(float width, float radius, int borderColor, int backColor){ GradientDrawable bgShape = new GradientDrawable(); bgShape.setStroke(width, borderColor); bgShape.setCornerRadius(radius); bgShape.setColor(backColor); if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) { setBackgroundDrawable(bgShape); } else { setBackground(bgShape); } }
という感じですね。
なお、同様のことをiOS向けにXCodeで書く場合についても書いておきます(Objective-Cです)。
[view setBackgroundColor:[UIColor blackColor]]; // 背景色 [view.layer setBorderColor:[[UIColor whiteColor] CGColor]]; // ボーダー色 [view.layer setBorderWidth:1.0]; // 太さ [view.layer setBorderRadius:2.0]; // 角丸
のような感じで普通に設定できると思います。
記憶が定かで無いので間違っている部分もあるかもしれませんが、Androidよりだいぶ手軽にできると思います。
なお、Swiftは全く知りませんm(__)m
以上、「続・Viewの枠線と背景色を動的に設定する Android&iOS(Objective-C)」でした。
コメント
コメント一覧 (4)
アプリのリリースはよ
とか言う気はないですがせめて生存報告はして欲しいです……
私は何とか生きています。
ガンナーズ・ハイは諸々の事情により、今制作しているアプリの次に回すことにしましたm(_ _)m
ガンナーズ・ハイは、現在制作中のアプリの次に回すことにしました。
アプリを今の段階で出したとしても中途半端なものにしかならないからですね。
私にとってはガンナーズ・ハイもかなり気合を入れて作ったので、もっと磨き上げて満足のいく形で出したいと思っております。
ご迷惑をおかけしてしまいますが、どうぞよろしくご理解くださいm(_ _)m