2013-11-28 17 views
6

Là một nhà phát triển iOS đã nói với tôi, iOS làm cho hình ảnh tối hơn khi ai đó nhấn vào nó (Tôi không biết nó đúng như thế nào) vì vậy tôi cần điều tương tự.Java Android làm thế nào tôi có thể làm cho ImageView tối hơn trên Click

như tôi hiểu, tôi cần một tệp selector.xml thông thường để có thể vẽ được với các trạng thái khác nhau. Những gì tôi cần là làm tối hình ảnh một cách đơn giản, có thể bằng xml-drawable bằng cách nào đó vì vậy tôi không phải sử dụng Photoshop mà tôi không có kỹ năng.

Có cách nào để làm điều đó trên cấp độ xml không?

+0

Khả năng sẽ che phủ số lần xem hình ảnh của bạn với chế độ xem khác và sau đó có bộ chọn trên chế độ xem. Trong bộ chọn, bạn có thể tạo nền tối hơn khi được chọn – MalaKa

Trả lời

4

Bạn có thể đặt dark rectangle sau bitmap và đặt Bitmap'sOpacity thay vì thử trong xml.

+0

Tôi nghĩ đây là quyết định đơn giản nhất, cảm ơn bạn – user2976267

+0

@Homo sapiens: ý bạn là gì bởi hình chữ nhật tối? – Ashwin

+2

Điều gì xảy ra nếu hình ảnh không phải là hình chữ nhật và nó có độ trong suốt xung quanh.? Nếu chúng ta đặt một hình chữ nhật tối thì hình ảnh sẽ có hiệu ứng nhưng khu vực trong suốt sẽ trông kỳ lạ. – Arunkumar

0

Tôi nghĩ bạn có thể làm điều đó thêm một clickListener để hình ảnh của bạn ...

ImageView image = (ImageView) view.findViewById(R.id.image); 
icon.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       ImageView image = (ImageView)v; 
       image.setImageAlpha(alpha); 

      } 
     }); 
+0

Phải nhưng bạn chắc chắn sẽ cần phải đặt một hình chữ nhật tối hơn hoặc một hình ảnh với màu tối phía sau xem của bạn sau đó bằng cách thay đổi alpha của khung nhìn, bạn sẽ nhận được hiệu ứng mong muốn. –

6

Bạn có thể sử dụng đoạn mã sau vào lớp java của bạn:

mView.getBackground().setColorFilter(Color.parseColor(<Color code of your choice>), PorterDuff.Mode.DARKEN); 

Dòng này trên làm thay đổi màu sắc của chế độ xem đối với một phần màu bạn đề xuất trong Color.parseColor() và bóng râm như cách bạn xác định nó bằng cách sử dụng PorterDuff.Mode. Gọi mã trên bằng cách nhấp vào nút để kiểm tra xem thay đổi màu có hiệu lực hay không.

+1

'getBackground()' có thể trả về null, vì vậy hãy kiểm tra null trước khi sử dụng. – Miao1007

0

tôi đã sử dụng

private void darkenImage(ImageView imageView) 
{ 
    imageView.setColorFilter(Color.rgb(123, 123, 123), android.graphics.PorterDuff.Mode.MULTIPLY); 
} 

private void undarkenImage(ImageView imageView) 
{ 
    imageView.clearColorFilter(); 
} 

private boolean isImageDarkened(ImageView image) 
{ 
    return image.getColorFilter() != null; 
} 

tác phẩm thực sự tốt!

Các vấn đề liên quan