Portal Android - Comunidade de Desenvolvedores Android
http://www.portalandroid.org/comunidade/

[RESOLVIDO]Opção de escolher cores
http://www.portalandroid.org/comunidade/viewtopic.php?f=44&t=24934
Página 1 de 1

Autor:  uchiha itachi-san [ 16 Mai 2013, 20:49 ]
Assunto do Tópico:  [RESOLVIDO]Opção de escolher cores

Estou tentando colocar no meu projeto, uma opção de escolher as cores que eu quero usar para preencher um espaço em branco.

Algo parecido com o editor de imagem PicSay Pro, quando eu escolho a opção de criar uma nova imagem, eu posso escolher a cor de fundo da imagem.

Alguém pode me dar uma ideia ?
Dizer se é feito em Java ou XML ?
Ou eu preciso baixar um arquivo em .JAR ?

Desde ja, Agradeço!!!!!!!!!

Autor:  rafaeldecker [ 24 Mai 2013, 13:31 ]
Assunto do Tópico:  Re: Opção de escolher cores

Olá... Tu podes criar uma view que faça isso.

Eu fiz uma vez um dialog que tinha 3 seek bars. Cada uma representando uma das cores do RGB (variando de 0 a 255). A combinação dos valores era mostrada num preview.

Mas procure na internet por color picker, tu vais achar algum projeto opensource que já tenha implementado isso, como por exemplo: https://github.com/attenzione/android-C ... Preference

Abraço

Autor:  alexsmg [ 27 Mai 2013, 17:24 ]
Assunto do Tópico:  Re: Opção de escolher cores

Copia e colar

activity_main.xml


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/linear"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#2662df"
    android:orientation="vertical" >


    <Button
        android:id="@+id/radio_dialog"
        android:layout_width="150dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="10dp"
        android:text="SingleChoice" />


    <Button
        android:id="@+id/list_dialog"
        android:layout_width="150dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="List" />


    <Button
        android:id="@+id/checkbox_dialog"
        android:layout_width="150dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="MultiChoice" />


    <Button
        android:id="@+id/progress_dialog"
        android:layout_width="150dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="Progress" />


    <Button
        android:id="@+id/custom_dialog"
        android:layout_width="150dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="Custom" />


    <Spinner
        android:id="@+id/spinner_dialog"
        android:layout_width="150dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:entries="@array/labelpos"
        android:prompt="@string/hello_world"
        android:text="Spinner" />


</LinearLayout>

listitem.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >


    <ImageView
        android:id="@+id/img"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher" android:layout_gravity="center_vertical"/>


    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello Android"
        android:layout_gravity="center_vertical"
        android:layout_marginLeft="10dp"/>


</LinearLayout>
 



MainActivity.java


package com.example.dialoglist;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.graphics.Color;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import android.support.v4.app.NavUtils;

public class MainActivity extends Activity {
    final Context context = this;
    Button radio, listdialog, checkbox, progress, custom;
    ListView lv;
    String[] listitem = { "one", "two", "three", "four", "five", "six",
            "seven", "eight", "nine", "ten" };
    LinearLayout ll;
    Spinner mSpinner;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        radio = (Button) findViewById(R.id.radio_dialog);
        listdialog = (Button) findViewById(R.id.list_dialog);
        checkbox = (Button) findViewById(R.id.checkbox_dialog);
        progress = (Button) findViewById(R.id.progress_dialog);
        custom = (Button) findViewById(R.id.custom_dialog);
        ll = (LinearLayout) findViewById(R.id.linear);
        ll.setBackgroundColor(Color.GRAY);
        mSpinner=(Spinner)findViewById(R.id.spinner_dialog);
       

        custom.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
               
                ll.setBackgroundColor(Color.CYAN);
                Dialog mDialog = new Dialog(context);
                mDialog.setContentView(R.layout.listitem);
                mDialog.setTitle("Custom Dialog...");
                mDialog.show();
                mDialog.setOnCancelListener(new OnCancelListener() {

                    @Override
                    public void onCancel(DialogInterface dialog) {
               
                        ll.setBackgroundColor(Color.GRAY);

                    }
                });
            }
        });

        progress.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                ll.setBackgroundColor(Color.GREEN);
               
                ProgressDialog progresdialog = new ProgressDialog(context);
                progresdialog.setMessage("Loading,Please wait...");
                progresdialog.setButton("Cancel",
                        new DialogInterface.OnClickListener() {

                            @Override
                            public void onClick(DialogInterface dialog,
                                    int which) {
       
                                dialog.dismiss();
                                ll.setBackgroundColor(Color.GRAY);
                            }
                        });
                progresdialog.show();
            }
        });
       
        checkbox.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
       
                ll.setBackgroundColor(Color.MAGENTA);
                final CharSequence[] items = { "Gujrat", "Rajasthan",
                        "Maharastra", "Panjab", "Madhya Pradesh", "Hariyana",
                        "Bihar" };
                AlertDialog.Builder builder = new AlertDialog.Builder(context);
                builder.setTitle("Select State");

                builder.setMultiChoiceItems(items, null,
                        new DialogInterface.OnMultiChoiceClickListener() {

                            @Override
                            public void onClick(DialogInterface dialog,
                                    int which, boolean isChecked) {
                                // TODO Auto-generated method stub
                                if (isChecked)
                                    Toast.makeText(getApplicationContext(),
                                            items[which], Toast.LENGTH_SHORT)
                                            .show();
                                ll.setBackgroundColor(Color.GRAY);
                            }
                        });
                AlertDialog alert = builder.create();
                alert.show();
            }
        });
        listdialog.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                ll.setBackgroundColor(Color.YELLOW);
                final CharSequence[] items = { "Mango", "Banana", "Apple" };
                AlertDialog.Builder builder = new AlertDialog.Builder(context);
                builder.setTitle("Select Fruit");
                builder.setItems(items, new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // TODO Auto-generated method stub
                        dialog.cancel();
                        ll.setBackgroundColor(Color.GRAY);
                    }
                });
                AlertDialog alert = builder.create();
                alert.show();
            }
        });

        radio.setOnClickListener(new OnClickListener() {

            // add button listener

            @Override
            public void onClick(View arg0) {
                ll.setBackgroundColor(Color.RED);
                final CharSequence[] items = { "Red", "Green", "Blue" };

                AlertDialog.Builder builder = new AlertDialog.Builder(context);
                builder.setTitle("Pick a color");
                builder.setSingleChoiceItems(items, -1,
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int item) {
                                Toast.makeText(getApplicationContext(),
                                        items[item], Toast.LENGTH_SHORT).show();
                                dialog.cancel();
                                ll.setBackgroundColor(Color.GRAY);
                            }
                        });
                AlertDialog alert = builder.create();
                alert.show();
            }
        });

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

}
 

Autor:  uchiha itachi-san [ 18 Jun 2013, 21:02 ]
Assunto do Tópico:  Re: Opção de escolher cores

alexmsg, não é exatamente isso que eu quero. ex:

tenho um circulo na tela, e nele aparecem cores pra eu escolher.

Já notou que se você pegar um CD qualquer e colocar num local que pegue luz solar, o CD fica meio que colorido? É algo parecido com aquilo.

Autor:  uchiha itachi-san [ 19 Jun 2013, 20:51 ]
Assunto do Tópico:  Re: Opção de escolher cores

rafaeldecker, baixei esse projeto no github mas ele nao funciona no meu aparelho. O estranho que o código do projeto nao aponta nenhum erro... Quando entro no app aparece uma janela dizendo que o app parou inesperadamente.

Autor:  rafaeldecker [ 21 Jun 2013, 12:11 ]
Assunto do Tópico:  Re: Opção de escolher cores

Não cheguei a testar aquele color picker, mas dá uma procurada por color picker pra android que tu vais achar outros, provavelmente.

Abraço

Autor:  uchiha itachi-san [ 21 Jun 2013, 12:16 ]
Assunto do Tópico:  Re: Opção de escolher cores

Vou pesquisar aki. Se tiver resultados eu posto.

Autor:  uchiha itachi-san [ 21 Jun 2013, 19:44 ]
Assunto do Tópico:  Re: Opção de escolher cores

rafaeldecker, consegui achar um tutorial bom, usando SeekBar com vc disse que usou.
Pra quem tem a mesma duvida vou postar o exemplo.
Segue o código:

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" >

    <ImageView
        android:id="@+id/color"
        android:layout_width="fill_parent"
        android:layout_height="240px" />

    <Button
        android:id="@+id/select"
        android:text="Escolher cor"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

</LinearLayout>
       


color_layout.xml


<?xml version="1.0" encoding="utf-8"?>
<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/main"
        android:orientation="vertical"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:minWidth="300dp" >


        <TextView
            android:id="@+id/red_label"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:text="Vermelho" />


        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="center_vertical|left" >


            <SeekBar
                android:id="@+id/red_bar"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:max="255"
                android:layout_weight="1"
                android:paddingLeft="7dp"
                android:paddingRight="7dp" />


            <EditText
                android:id="@+id/red_text"
                android:layout_width="60dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dp"
                android:lines="1"
                android:gravity="center_vertical|right"
                android:maxLength="3"
                android:inputType="number"
                android:text="0" />

        </LinearLayout>

        <TextView
            android:id="@+id/green_label"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:text="Verde" />


        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="center_vertical|left" >


            <SeekBar
                android:id="@+id/green_bar"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:max="255"
                android:layout_weight="1"
                android:paddingLeft="7dp"
                android:paddingRight="7dp" />


            <EditText
                android:id="@+id/green_text"
                android:layout_width="60dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dp"
                android:lines="1"
                android:gravity="center_vertical|right"
                android:maxLength="3"
                android:inputType="number"
                android:text="0" />

        </LinearLayout>

        <TextView
            android:id="@+id/blue_label"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:text="Azul" />


        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="center_vertical|left" >


            <SeekBar
                android:id="@+id/blue_bar"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:max="255"
                android:layout_weight="1"
                android:paddingLeft="7dp"
                android:paddingRight="7dp" />


            <EditText
                android:id="@+id/blue_text"
                android:layout_width="60dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dp"
                android:lines="1"
                android:gravity="center_vertical|right"
                android:maxLength="3"
                android:inputType="number"
                android:text="0" />

        </LinearLayout>

        <TextView
            android:id="@+id/alpha_label"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:text="Alpha" />


        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="center_vertical|left" >


            <SeekBar
                android:id="@+id/alpha_bar"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:max="255"
                android:progress="255"
                android:layout_weight="1"
                android:paddingLeft="7dp"
                android:paddingRight="7dp" />


            <EditText
                android:id="@+id/alpha_text"
                android:layout_width="60dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dp"
                android:lines="1"
                android:gravity="center_vertical|right"
                android:maxLength="3"
                android:inputType="number"
                android:text="255" />

        </LinearLayout>

        <ImageView
            android:id="@+id/color_preview"
            android:layout_width="fill_parent"
            android:layout_height="40dip" />


        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="center_vertical|center_horizontal"
            android:layout_marginTop="20dp" >


            <Button
                android:id="@+id/ok"
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:text="OK" />


            <Button
                android:id="@+id/cancel"
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:text="Cancelar" />

        </LinearLayout>
    </LinearLayout>
</ScrollView>
   


MainActivity.java


package colorpicker.seekbar;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity implements ColorPickerDialog.OnColorChangedListener {
    String color = "255,255,000,000"; //alpha, vermelho, verde, azul
    ImageView image;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        image = (ImageView) findViewById(R.id.color);
        String[] colorVal = color.split(",");
        image.setBackgroundColor(Color.argb(Integer.parseInt(colorVal[0]),Integer.parseInt(colorVal[1]),Integer.parseInt(colorVal[2]),Integer.parseInt(colorVal[3])));

        Button btn = (Button) findViewById(R.id.select);
        btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    new ColorPickerDialog(MainActivity.this, MainActivity.this, color).show();
                }
            });

    }

    @Override
    public void colorChanged(int a, int r, int g, int b) {
        color = a + "," + r + "," + g + "," + b;
        image.setBackgroundColor(Color.argb(a,r,g,b));

    }

}

Autor:  uchiha itachi-san [ 21 Jun 2013, 20:28 ]
Assunto do Tópico:  Re: Opção de escolher cores

Tive que posta essa Activity aki porque nao dava pra colocar tudo na mesma mensagem.

ColorPickerDialog.java


package colorpicker.seekbar;

import android.app.Dialog;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.SeekBar;

public class ColorPickerDialog extends Dialog implements SeekBar.OnSeekBarChangeListener, TextWatcher, OnClickListener {
    SeekBar   redBar;
    EditText  redText;
    SeekBar   greenBar;
    EditText  greenText;
    SeekBar   blueBar;
    EditText  blueText;
    SeekBar   alphaBar;
    EditText  alphaText;
    ImageView colorPreview;
    Button    ok;
    Button    cancel;
    String    color;

    public interface OnColorChangedListener {
        void colorChanged(int a, int r, int g, int b);
    }

    private OnColorChangedListener mListener;


    public ColorPickerDialog(Context context, OnColorChangedListener listener, String color) {
        super(context);
        mListener = listener;
        this.color = color;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.color_layout);
        setTitle("Color Picker");

        redBar    = (SeekBar)  findViewById(R.id.red_bar);
        redText   = (EditText) findViewById(R.id.red_text);
        greenBar  = (SeekBar)  findViewById(R.id.green_bar);
        greenText = (EditText) findViewById(R.id.green_text);
        blueBar   = (SeekBar)  findViewById(R.id.blue_bar);
        blueText  = (EditText) findViewById(R.id.blue_text);
        alphaBar  = (SeekBar)  findViewById(R.id.alpha_bar);
        alphaText = (EditText) findViewById(R.id.alpha_text);
        ok         = (Button)   findViewById(R.id.ok);
        cancel     = (Button)   findViewById(R.id.cancel);

        colorPreview = (ImageView) findViewById(R.id.color_preview);

        //set initial colors
        String[] colorVal = color.split(",");
        int a = Integer.parseInt(colorVal[0]);
        int r = Integer.parseInt(colorVal[1]);
        int g = Integer.parseInt(colorVal[2]);
        int b = Integer.parseInt(colorVal[3]);

        colorPreview.setBackgroundColor(Color.argb(a, r, g, b));
        redBar.setProgress(r);
        greenBar.setProgress(g);
        blueBar.setProgress(b);
        alphaBar.setProgress(a);

        redText.setText(colorVal[1]);
        greenText.setText(colorVal[2]);
        blueText.setText(colorVal[3]);
        alphaText.setText(colorVal[0])

        redBar.setOnSeekBarChangeListener(this);
        greenBar.setOnSeekBarChangeListener(this);
        blueBar.setOnSeekBarChangeListener(this);
        alphaBar.setOnSeekBarChangeListener(this);

        redText.addTextChangedListener(this);
        greenText.addTextChangedListener(this);
        blueText.addTextChangedListener(this);
        alphaText.addTextChangedListener(this);

        ok.setOnClickListener(this);
        cancel.setOnClickListener(this);

        setCancelable(false);


    }

    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        if(fromUser){
            switch (seekBar.getId()) {
                case R.id.red_bar:  
                    redText.setText(Integer.toString(progress));
                    break;
                case R.id.green_bar:  
                    greenText.setText(Integer.toString(progress));
                    break;
                case R.id.blue_bar:  
                    blueText.setText(Integer.toString(progress));
                    break;
                case R.id.alpha_bar:  
                    alphaText.setText(Integer.toString(progress));
                    break;
            }
        }

        colorPreview.setBackgroundColor(Color.argb(alphaBar.getProgress(), redBar.getProgress(), greenBar.getProgress(), blueBar.getProgress()));


    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {
    }

    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {
    }

    @Override
    public void afterTextChanged(Editable arg0) {
        if(Integer.parseInt(redText.getText().toString()) > 255)
            redText.setText("255");

        if(!redText.getText().toString().equals("")){
            if(Integer.parseInt(redText.getText().toString()) > 255)
                redText.setText("255");
            redBar.setProgress(Integer.parseInt(redText.getText().toString()));
        } else
            redBar.setProgress(0);


        if(!greenText.getText().toString().equals("")){
            if(Integer.parseInt(greenText.getText().toString()) > 255)
                greenText.setText("255");
            greenBar.setProgress(Integer.parseInt(greenText.getText().toString()));
        } else
            greenBar.setProgress(0);


        if(!blueText.getText().toString().equals("")){
            if(Integer.parseInt(blueText.getText().toString()) > 255)
                blueText.setText("255");
            blueBar.setProgress(Integer.parseInt(blueText.getText().toString()));
        }else
            blueBar.setProgress(0);


        if(!alphaText.getText().toString().equals("")){
            if(Integer.parseInt(alphaText.getText().toString()) > 255)
                alphaText.setText("255");
            alphaBar.setProgress(Integer.parseInt(alphaText.getText().toString()));
        }else
            alphaBar.setProgress(0);

    }

    @Override
    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
    }

    @Override
    public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.ok:  
                mListener.colorChanged(alphaBar.getProgress(), redBar.getProgress(), greenBar.getProgress(), blueBar.getProgress());
                dismiss();
                break;
            case R.id.cancel:  
                dismiss();
                break;
        }

    }
    }


Espero que ajude!!!

Página 1 de 1 Todos os Horários estão como UTC - 2 horas [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/