19. Разработка приложений для ОС Android. Кнопка ImageButton

ToggleButton представляет собой двухпозиционный тумблер вкл./выкл.

RadioButton позволяет выбирать один из нескольких вариантов.

CheckBox позволяет выбирать несколько вариантов.

ImageButton позволяет использовать картинку.
Перенесем картинку в drawable-hdpi и переименуем ее так чтобы имя содержало только строчные буквы и цифры.
Далее в srс кнопки указываем добавленную картинку.
Также добавим в main.xml кнопку и TextView.
В Main.java добавим следующий код.

package com.example.buttoncheck;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.TextView;

public class Main extends Activity implements OnClickListener { // вместо того чтобы писать Listener для кнопок

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);      
        Button but1 = (Button) findViewById(R.id.button1);
        ImageButton ibut1 = (ImageButton) findViewById(R.id.imageButton1);
        but1.setOnClickListener(this);
        ibut1.setOnClickListener(this);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    // новый метод
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        TextView text1 = (TextView) findViewById(R.id.textView1); // ссылка на текст
        if (v.getId() == R.id.button1) { // если нажата кнопка button1
            text1.setText("button1");           
        }
        if (v.getId() == R.id.imageButton1) { // если нажата кнопка imageButton1
            text1.setText("imageButton1");          
        }       
    }

}


Для того чтобы вместо множества разноформатных картинок использовать одну существует инструмент draw9patch (Android SDK\adt-bundle-windows-x86_64\sdk\tools\draw9patch.bat).
Перетянув заготовку кнопки можно посмотреть как она выглядит при разного рода растяжениях. Искажения очень заметны на уголках кнопки. Для того чтобы избежать этого в левом окне отключается Show lock и включается Show patches. Далее по полям отмечаются зоны которые будут использоваться при растяжении. Делается то же самое с другой стороны сверху и снизу. Белая часть окна не будет изменяться. Зеленая будет растягиваться в зависимости от изменения размеров кнопки. А розовая это область заполнения кнопки.


Теперь сохраним результат и перенесем его в ресурсы. У ImageButton убираем Src и ставим Background в button9patched и кнопка будет отображаться без искажения картинки.