wtorek, 22 maja 2012

Naprawianie Galaxy S+

Kupiłem w końcu nowy telefon. Galaxy S+ czyli I9001. Na razie mi wystarczy. Jednak mój telefon musi mieć GPS, bo bieganie bez Sport Trackera to nie jest to samo. Instalacja aplikacji 5 sekund, uruchamiam i czekam na GPS.......
Cóż, mamy problem, trzeba zrobić research. Znalazłem różne porady, od "wymień roma" do różnych ustawień Angry GPS. Nic nie działało. Maksymalnie 3 satelity i koniec. W końcu wpadłem na stronę http://androidum.blogspot.com/2011/04/best-gps-fix-for-samsung-gt-i9000.html. Na pierwszy rzut oka to nie zadziała, ale wiecie co? Naprawiłem GPSa!!! Samsung wstydź się. Naprawianie telefonu przez ugniatanie antenki? Co to ma być?

piątek, 20 kwietnia 2012

Wyświetlanie okna popup.

Wczoraj zabrałem się za okno popup, które ma się pojawiać pomiędzy poziomami. Będzie zawierało gratulacje, bieżącą punktację, najwyższy wynik w grze, być może również z internetu. Nie powinno być to nic skomplikowanego. Zacząłem od definicji układu next_level.xml:
 
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/popup_layout"
    android:layout_width="match_parent" android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/header"
        style="@style/textattributes"
        android:layout_width="fill_parent" android:layout_height="wrap_content"
        android:text="@string/nxt_lvl_header" />

    <RelativeLayout 
        android:layout_width="fill_parent" android:layout_height="wrap_content"  
        android:orientation="vertical" >
    <TextView
        style="@style/textattributes"
            android:id="@+id/scoreText"
            android:layout_width="wrap_content" android:layout_height="wrap_content"
            android:text="@string/scoreTxt" />
    <TextView
        style="@style/textattributes"
            android:id="@+id/scoreVal"
            android:layout_width="wrap_content" android:layout_height="wrap_content"
            android:text="0" 
            android:layout_toRightOf="@id/scoreText" 
            android:layout_marginLeft="3dp"/>
    </RelativeLayout>
    <LinearLayout
        android:layout_width="fill_parent" android:layout_height="fill_parent"
        android:gravity="bottom|center"
        android:orientation="vertical" >

        <Button
            android:id="@+id/nxt_lvl_dismis"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/dismiss" />
    </LinearLayout>

</LinearLayout> 

Trzeba pamiętać o nadaniu identyfikatora układu - android:id="@+id/popup_layout". Będzie on potrzebny przy tworzeniu okna:

View popup = infl.inflate(R.layout.next_level, 
                (ViewGroup)findViewById(R.id.popup_layout));
pw = new PopupWindow(popup, 300, 470, true);

Teraz bardzo ważna sprawa. Jeżeli nasz popup ma reagować na zdarzenia - kliknięcie przycisku na przykład, to musi mieć tło. Ja chciałem, żeby było prześwitujące:


Bitmap tlo = Bitmap.createBitmap(300, 470, Bitmap.Config.ARGB_8888);
Canvas canvTemp = new Canvas(tlo);
canvTemp.drawColor(Color.parseColor("#D8591385"));
BitmapDrawable drw = new BitmapDrawable(tlo);
pw.setBackgroundDrawable(drw); 

Potem dodam ładne zaokrąglone narożniki. Tło ustawione, teraz można dodać zdarzenia do przycisków i ustawić wartości:

TextView txtScore = (TextView)popup.findViewById(R.id.scoreVal);
txtScore.setText(""+score);
dismissButton.setOnClickListener(new OnClickListener() {
 public void onClick(View v) {
  pw.dismiss();
 }
});

Teraz gdy wszystko gotowe, wyświetlamy okienko:

pw.showAtLocation(popup, Gravity.CENTER, 0, 0);

Co dziwne, w dokumentacji piszą, że metoda dismiss() działa tylko dla okienek uruchomionych za pomocą metody showAsDropdown(), a w pozostałych przypadkach nic nie robi. Jednak okienko się zamyka. Wrócę do tego problemu później. Właściwie to nawet nie jest problem :)

Reaktywacja

Blog ten powstał dawno temu. A właściwie nie powstał, ale został założony i jak miliony innych porzucony. Ale coś się zmieniło.
Od kilku tygodni pracuję nad grą na Androida. Nie jest to nic szczególnie zaawansowanego. Ot, skrzyżowanie River Raid z Galaxy Invaders. Celem jest opanowanie programowania na Androida, coś, o czym myślałem od dłuższego czasu. No przecież ileż można pisać zapytania i formatki.
Na chwilę obecną mam zrobione:
  • wątek obsługujący animację z ograniczeniem fps,
  • animację typu sprite,
  • przewijane tło,
  • podstawową kontrolę kolizji,
  • odtwarzanie dźwięku - podstawy
Obecnie pracuję nad samymi mechanizmami gry: poziomami, punktacją, scenariuszem. Czyli korzystam z tego co napisałem.
To tyle na początek. Życzcie mi powodzenia.

środa, 17 marca 2010

Start

No to zaczynamy!