質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.48%

  • Java

    14074questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Android

    6624questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • Android Studio

    3779questions

    Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Ripple Effectについて 

受付中

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 677

TakamasaAwai

score 23

lollipopのRipple Effectを動的にカスタマイズしています。Effectの色をランダムにしたいので、hairetu3の中にres/valuesの色を並び替えて、それを色に適用しよう、ということをしているのですが、できません。どこがおかしいのでしょうか?
onCreate{
・・・
hairetu3 = new int[]{R.color.Black, R.color.Navy, R.color.Dark_Blue, R.color.Blue, R.color.Medium_Blue,
                R.color.Dark_Green, R.color.Teal, R.color.Green, R.color.Dark_Cyan, R.color.Deep_Sky_Blue,
                R.color.Dark_Turquoise, R.color.Medium_Spring_Green, R.color.Lime, R.color.Spring_Green,
                R.color.Aqua, R.color.Midnight_Blue, R.color.Dodger_Blue, R.color.Light_Sea_Green, R.color.Forest_Green,
                R.color.Sea_Green, R.color.Dark_Slate_Gray, R.color.Lime_Green, R.color.Medium_Sea_Green, R.color.Turquoise,
                R.color.Royal_Blue, R.color.Steel_Blue, R.color.Dark_Slate_Blue, R.color.Medium_Turquoise, R.color.Indigo,
                R.color.Dark_Olive_Green, R.color.Cadet_Blue, R.color.Corn_Flower_Blue, R.color.Medium_Aquamarine, R.color.Dim_Gray,
                R.color.Slate_Blue, R.color.Olive_Drab, R.color.Slate_Gray, R.color.Light_Slate_Gray, R.color.Medium_Slate_Blue,
                R.color.Lawn_Green, R.color.Chartreuse, R.color.Aquamarine, R.color.Maroon, R.color.Olive,
                R.color.Sky_Blue, R.color.Light_Sky_Blue, R.color.Blue_Violet, R.color.Dark_Red, R.color.Dark_Magenta,
                R.color.Saddle_Brown, R.color.Dark_Sea_Green, R.color.Light_Green, R.color.Medium_Purple,
                R.color.Dark_Violet, R.color.Pale_Green, R.color.Dark_Orchid, R.color.Yellow_Green, R.color.Sienna,
                R.color.Brown, R.color.Dark_Gray, R.color.Light_Blue, R.color.Green_Yellow, R.color.Pale_Turquoise,
                R.color.Light_Steel_Blue, R.color.Powder_Blue, R.color.Fire_Brick, R.color.Dark_Goldenrod,
                R.color.Medium_Orchid, R.color.Rosy_Brown, R.color.Dark_Khaki, R.color.Silver, R.color.Medium_Violet_Red,
                R.color.Indian_Red, R.color.Peru, R.color.Chocolate, R.color.Tan, R.color.Light_Gray, R.color.Thistle,
                R.color.Orchid, R.color.Goldenrod, R.color.Pale_Violet_Red, R.color.Crimson, R.color.Gains_Boro,
                R.color.Plum, R.color.Burly_Wood, R.color.Light_Cyan, R.color.Lavender, R.color.Dark_Salmon,
                R.color.Violet, R.color.Pale_Golden_Rod, R.color.Light_Coral, R.color.Khaki, R.color.Alice_Blue,
                R.color.Honeydew, R.color.Azure, R.color.Sandy_Brown, R.color.Wheat, R.color.Beige, R.color.White_Smoke,
                R.color.Mint_Cream, R.color.Ghost_White, R.color.Salmon, R.color.Antique_White, R.color.Linen,
                R.color.Light_Golden_Rod_Yellow, R.color.Oldlace, R.color.Red, R.color.Fuchsia, R.color.Magenta,
                R.color.Deep_Pink, R.color.Orange_Red, R.color.Tomato, R.color.Hot_Pink, R.color.Coral,
                R.color.Dark_Salmon, R.color.Dark_Orange, R.color.Light_Salmon, R.color.Orange, R.color.Light_Pink,
                R.color.Pink, R.color.Gold, R.color.Peach_Puff, R.color.Navajo_White, R.color.Moccasin, R.color.Bisque,
                R.color.Misty_Rose, R.color.Blanche_Dalmond, R.color.Papayawhip, R.color.Lavender_Blush, R.color.Sea_Shall,
                R.color.Corn_Silk, R.color.Lemon_Chiffon, R.color.Floral_White, R.color.Snow, R.color.Yellow,
                R.color.Light_Yellow, R.color.Ivory, R.color.White};

int[] newlist2 = new int[hairetu3.length];  //ランダム並べ替え後の定数配列
        for (int i2 = 0; i2 < hairetu3.length; i2++) {
            while (true) {
                int a2 = r.nextInt(hairetu3.length);
                newlist2[i2] = hairetu3[a2];
                break;
            }
            ColorStateList csl = ColorStateList.valueOf(hairetu3[r.nextInt(hairetu3.length)]);
            RippleDrawable d = new RippleDrawable(csl, null, null);

            ColorStateList otherCsl = ColorStateList.valueOf(hairetu3[r.nextInt(hairetu3.length)]);
            d.setColor(otherCsl);
        }
}
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

0

R.color.***は,xmlから色情報を引き出すためにプログラムが使う単なるインデックス番号で,
xmlで設定した色数値を直接表しているわけではありません.
(この変数はプロジェクトのgenディレクトリに自動生成された
R.java内の内部クラスcolor内の定数を指しています)
xmlから色を表す数値を引き出すには.
int color = getResources().getColor(R.color.***);
としなければなりません.この場合,配列からインデックスをランダムで引っ張って色設定しているので,
int temp = hairetu3[r.nextInt(hairetu3.length)];  //色インデックスをランダムに設定
//それを元に色設定
ColorStateList csl = ColorStateList.valueOf(getResources().getColor(temp));
こうする必要があります.

ところで,ランダムに色を設定するのならば,配列をランダムに並び替える必要はないのでは?

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/06/23 00:11

    しかし、例えば、Corn_Silkという値は確かにres/valuesの中に作った値です。これを作る前は、配列の中がエラーになります.

    キャンセル

  • 2015/06/23 00:15

    ただ、並び替えなくていいと言うのはわかりました。

    キャンセル

  • 2015/06/23 00:16

    説明不足ですみません.
    私が言っているのは
    int[] newlist2 = new int[hairetu3.length]; //ランダム並べ替え後の定数配列
    for (int i2 = 0; i2 < hairetu3.length; i2++) {
    while (true) {
    int a2 = r.nextInt(hairetu3.length);
    newlist2[i2] = hairetu3[a2];
    break;
    }
    これのことです

    キャンセル

  • 2015/06/23 00:18

    よく見るとwhileループも意味が無いですし(1回処理してすぐbreakする)

    キャンセル

  • 2015/06/23 00:36

    コメントありがとうございます。私もいらないと思いました。

    そこの所は怪傑したのですが、いまRipple Effectの色を動的に設定したいのです。サイトを結構探しているのですが、javaファイルだけで色を設定しているのが出てきません。ご存知でしたら、ご教授ください。

    キャンセル

  • 2015/06/23 00:47

    「Javaファイルだけで」ということであれば.Javaファイル内に色の定義を設定してしまえばいいのではないでしょうか?
    public static final BLACK = 0x0;
    と言った具合に.

    キャンセル

  • 2015/06/23 09:55

    http://stackoverflow.com/questions/28817185/android-how-to-create-ripple-effect-in-java
    ,このサイトを」見ているのですが、うまくいきません。

    キャンセル

  • 2015/06/23 17:28

    何がどううまく行かないのかわかりません.

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.48%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Java

    14074questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Android

    6624questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • Android Studio

    3779questions

    Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。