Skocz do zawartości
PiotrekK

Wyświetalnie canvas'a w konkretnym miejscu na layoucie.

    Rekomendowane odpowiedzi

    Witam,

    chciałbym wstawić canvas mniej więcej tutaj:

    post-25482-14255713562788_thumb.png

    czyli między dolnym i górnym paskiem. Możliwe jest zrobienie czegoś takiego w ogóle?

    Z góry dziękuję.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    w ogóle jest możliwe, nie same Canvas wprawdzie ale jest możliwe, czy chciał byś poznać jak ?

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Swoje własne widoki możesz traktować tak samo jak Button czy TextView. Czyli w pliku .xml z layout dodajesz tak jak byś dodawał np Button

    <twoja.nazwa.pakietu.NazwaKlasy />

    A co do samej klasy to

    class NazwaKlasy extends View

    i dalej już powinieneś wiedzieć jak wygląda custom view :)

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    niestety, wydaje się to takie proste, ale w praktyce sypie błędami.

    Co prawda mógłbym wrzucić moje nieudolne wypociny, ale chyba szybciej będzie jak zobaczę jakiegoś sampla...

    Widział ktoś może coś takiego? Jakiś przykładowy kod, jak coś takiego osiągnąć? Albo chociaż fachową nazwę, żebym mógł to wyguglać.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    OMG :facepalm:

    tu masz klasę która znajduje się w my.class.path

    public class CustomView extends View {
    
    public CustomView(Context context, AttributeSet attrs) {
    	super(context, attrs);
    }
    
    
    public CustomView(Context context, AttributeSet attrs, int defStyle) {
    	super(context, attrs, defStyle);
    }
    
    @Override
    protected void onDraw(Canvas canvas) {
    	super.onDraw(canvas);
    }
    
    }

    tu jest kod Layout

    <?xml version="1.0" encoding="UTF-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center">
    <my.class.path.CustomView android:layout_width="100dp"
    	android:layout_height="100dp"/>
    </RelativeLayout>

    oczywiście klasa znajduje w miejscu które nazywa się ClassPath lokalizacja klasy musie być taka sama jak ta zdefiniowana w pliku XML

    Edytowane przez zawadaki

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Lol, tak jak się domyślałem, błąd był strasznie głupi. Dodałem do konstruktora kolejną zmienną -.-

    A da się przesyłać dane między klasą activity, a klasą View wyświetlającą się tam w tym miejscu? Dokładnie chodzi mi o przesłanie wiadomości który z przycisków został wybrany.

    Z góry dzięki.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    piotrpo

    Da się.

    W swojej klasie robisz pole i settera do przechowywania listenera. W activity tworzysz i ustawiasz go.

    Wysyłane z mojego Nexus 7 za pomocą Tapatalk 2

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Czy chodziło ci o coś typu to:

    EObrazView view1;
    [...]
    [onCreate]
    view1 = (EObrazView) findViewById(R.id.myView);
    view1.jakas_funkcja();
    

    ?

    Teraz nie działa. Błąd NullPointerException.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    piotrpo

    Nie.

    1. Robisz nowy interface:

    public interface MyListener(){

    public void onAction(int actionCode);

    }

    2. W klasie z widokiem:

    privare MyListener listener;

    public void setListener( MyListener listener) {

    this.listener = listener;

    }

    Robisz obsługę przycisków i wywołujesz

    if(listener != null) listener.onAction(nrPrzycisku);

    W activity wywolujesz metodę analogicznie do obslugi normalnego przycisku.

    Wysyłane z mojego Nexus 7 za pomocą Tapatalk 2

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Ostatnio przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.

    x