2013-11-08 12 views
0

Моя проблема проста: как сделать такой же эффект иконок на рабочем столе Android, нажав на них? Другими словами, как сделать этот временный эффект заднего освещения? В общем, как реализовать эффект подсветки кнопок андроида изображения, окружающие край изображения? Возможно, я хочу сделать это программно, не вставляя много изображений в свое приложение. Заранее спасибо.Как сделать изображение края изображения андроида будет выделено при нажатии на него

+0

Вы должны использовать селектор – Uma

+0

@Rani, но селектор позволяет мне изменить фоновое изображение, поэтому я должен обмениваться изображениями, могу ли я сделать что-то программно, не создавая несколько файлов изображений? –

+0

у вас может быть еще один файл xml, в котором вы можете дать тот же фон и добавить теневой эффект вокруг него. – Uma

ответ

0

я нашел что-то работу:

public Bitmap highlightImage(Bitmap src) { 
     // create new bitmap, which will be painted and becomes result image 
     Bitmap bmOut = Bitmap.createBitmap(src.getWidth() , src.getHeight() , Bitmap.Config.ARGB_8888); 
     // setup canvas for painting 
     Canvas canvas = new Canvas(bmOut); 
     // setup default color 
     canvas.drawColor(0, PorterDuff.Mode.CLEAR); 
     // create a blur paint for capturing alpha 
     Paint ptBlur = new Paint(); 
     ptBlur.setMaskFilter(new BlurMaskFilter(15, Blur.NORMAL)); 
     int[] offsetXY = new int[2]; 
     // capture alpha into a bitmap 
     Bitmap bmAlpha = src.extractAlpha(ptBlur, offsetXY); 
     // create a color paint 
     Paint ptAlphaColor = new Paint(); 
     ptAlphaColor.setColor(0xFFFFFFFF); 
     // paint color for captured alpha region (bitmap) 
     canvas.drawBitmap(bmAlpha, offsetXY[0], offsetXY[1], ptAlphaColor); 
     // free memory 
     bmAlpha.recycle(); 

     // paint the image source 
     canvas.drawBitmap(src, 0, 0, null); 

     // return out final image 
     return bmOut; 
    } 

Вы можете использовать этот метод, например, в кнопки OnClick, чтобы выделить края растрового изображения

0

Пусть это мой test_button.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_pressed="true" android:drawable="@drawable/test_effect" /> 
<item android:state_pressed="false" android:drawable="@drawable/your_image_name" /> 
<item android:drawable="@drawable/your_image_name" /> <!-- default --> 

Это как ваш test_effect.xml должен выглядеть:

<?xml version="1.0" encoding="utf-8"?> 

<item> 
    <shape android:shape="rectangle"> 
     <gradient 
      android:endColor="#3399CCFF" 
      android:startColor="#8899CCFF"/> 


     <padding android:top="5dp" android:right="5dp" android:bottom="5dp" android:left="5dp" /> 
     <corners android:radius="5dp"/> 
    </shape> 
</item> 

<!-- Background --> 
<item android:drawable="@drawable/your_image_name"/> 

Примечание: ваше имя_имя везде одинаково.

+0

спасибо за написание кода. Мое сомнение в том, что вы описываете градиент, покрывающий весь фон, и я уже в состоянии это сделать, но я хочу создать вторую линию замирания, которая идеально подходит к краю изображения внутри изображения: изображение a тело с прозрачным фоном, и я хочу, чтобы линия замирания была параллельна к краю тела. Я не знаю, могу ли я это объяснить ... –

+0

Извините, но я не мог понять, что вы говорите. =/ – Uma

+0

Можете ли вы разместить свой код – Uma