2014-05-10 19 views
0

我使用了三個紅色,綠色和藍色的搜索欄來改變圖像顏色。當這三個搜索欄位於中間或極端左側或極右側時,必須顯示原始圖像。我花了很多時間來解決這個,但我無法得到它,請幫我解決這個問題。像photoshop中的方式獲取Android中的查找欄的RGB效果?

我的主要活動是

import android.app.Activity; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.graphics.Canvas; 
import android.graphics.ColorFilter; 
import android.graphics.LightingColorFilter; 
import android.graphics.Paint; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.LinearLayout; 
import android.widget.SeekBar; 

public class Example extends Activity { 

private int seekR, seekG, seekB,color; 
SeekBar redSeekBar, greenSeekBar, blueSeekBar; 
LinearLayout mScreen; 
Bitmap source,destination,result; 
ImageView changedImage; 
Button show; 
LinearLayout linear; 
@Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.test); 
    show=(Button)findViewById(R.id.button1); 
    changedImage=(ImageView)findViewById(R.id.changedImage); 
    redSeekBar = (SeekBar)findViewById(R.id.mySeekingBar_R); 
    greenSeekBar = (SeekBar)findViewById(R.id.mySeekingBar_G); 
    blueSeekBar = (SeekBar)findViewById(R.id.mySeekingBar_B); 
    linear=(LinearLayout)findViewById(R.id.linear); 


    show.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      if(linear.getVisibility()==View.VISIBLE) 
       linear.setVisibility(View.INVISIBLE); 
      else 
       linear.setVisibility(View.VISIBLE); 

      updateBackground(); 
      redSeekBar.setOnSeekBarChangeListener(seekBarChangeListener); 
      greenSeekBar.setOnSeekBarChangeListener(seekBarChangeListener); 
        blueSeekBar.setOnSeekBarChangeListener(seekBarChangeListener);     
     } 
    }); 
} 

private SeekBar.OnSeekBarChangeListener seekBarChangeListener = new SeekBar.OnSeekBarChangeListener() 
{ 

    @Override 
    public void onProgressChanged(SeekBar seekBar, int progress, 
      boolean fromUser) { 
     // TODO Auto-generated method stub 
     updateBackground(); 
    } 

    @Override 
    public void onStartTrackingTouch(SeekBar seekBar) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onStopTrackingTouch(SeekBar seekBar) { 
     // TODO Auto-generated method stub 

    } 


}; 

    private void updateBackground() 
    { 

    seekR = redSeekBar.getProgress(); 
    seekG = greenSeekBar.getProgress(); 
    seekB = blueSeekBar.getProgress(); 
    color=0xff000000+ seekR * 0x10000+ seekG * 0x100+ seekB; 
    changeBitmapColor(color); 
    } 

    private void changeBitmapColor(int color) { 


    destination = BitmapFactory.decodeResource(getResources(), R.drawable.myimage); 
    result = destination.copy(Bitmap.Config.ARGB_8888, true); 
    Paint p = new Paint(); 
    ColorFilter filter = new LightingColorFilter(color, 1); 
    p.setColorFilter(filter); 
    changedImage.setImageBitmap(result); 
    Canvas canvas = new Canvas(result); 
    canvas.drawBitmap(result, 0, 0, p); 
    } 

} 

和我的XML文件

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

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_marginLeft="106dp" 
    android:text="Show" /> 

<ImageView 
    android:id="@+id/changedImage" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/button1" 
    android:layout_marginLeft="86dp" 
    android:layout_marginTop="14dp" 
    android:src="@drawable/myimage" /> 

    <LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentRight="true" 
    android:orientation="vertical" 
    android:visibility="invisible" 
    android:id="@+id/linear"> 

<SeekBar 
    android:id="@+id/mySeekingBar_R" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:max="512" 
    android:progress="255" 
    android:paddingTop="10dp"/> 

<SeekBar 
    android:id="@+id/mySeekingBar_G" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:max="512" 
    android:progress="255" 
    android:paddingTop="10dp" /> 

<SeekBar 
    android:id="@+id/mySeekingBar_B" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:max="512" 
    android:progress="255" 
    android:paddingTop="10dp"/> 

</LinearLayout> 

</RelativeLayout> 

請幫我該怎麼辦this.Thanks提前。

+0

看看這個,讓我知道如果這可以幫助你 http://shaikhhamadali.blogspot.com/2013/07/filter-color-channels-set-color.html –

+0

沒有yaar.Thanks for your回覆。 – Lucky

回答

0

我是Android的新手。但我的想法(用於測試目的)是使用修改背景:

v.setBackgroundColor(0xFF00FF00); 

v是視圖中,可以插入產生從搜索條值setBackroundColor的參數。

+0

如果我們像你告訴的那樣設置,這是不可能達到我的要求的。謝謝你的回覆。 – Lucky