Skocz do zawartości

[android / eclipse] ustawienie zdjęcia jako tapety


stobolewski

Rekomendowane odpowiedzi

Witam,

 

wiem że temat średnio związany z grafiką, ale jakoś nigdzie nie mogę znaleźć odpowiedzi ;/.

Może ktoś z was będzie w stanie pomóc :).

 

Męczę aktualnie prostą aplikację na androida - zestaw tapetek.

Wszystko niby działa ale nie do końca.

Tapetki mają 320x480px (lub proporcjonalnie więcej) są one niestety pionowe.

Na telefonie LGL5 wszystko ładnie działa (z nowym androidem) tapeta jest ustawiana jako "portrait" (jedna dla wszystkich przewijanych ekranów).

 

Gorzej jest niestety na tablecie. Tu tapeta jest rozciągana proporcjonalnie do maksymalnej szerokości tapety (obraz przesuwa się razem z przewijaniem ekranów). Bez względu na orientację ekranu (landscape / portrait) obraz jest rozciągnięty :/

 

Czy ktoś z was wie może w jaki sposób można temu zapobiec ?

 

Tak w tej chwili wygląda mój kod odpowiedzialny za ustawienie tapety (próbowałem ją odpowiednio przeskalować):

 

DisplayMetrics metrics = new DisplayMetrics(); 
				WallpaperManager wm = WallpaperManager.getInstance(getApplicationContext());

				getWindowManager().getDefaultDisplay().getMetrics(metrics); 


				int height = wm.getDesiredMinimumHeight();//metrics.heightPixels; 
				int width = wm.getDesiredMinimumWidth();//metrics.widthPixels; 
				int resizer;
				Bitmap mbitmap;	//definicja zmiennej przechowującej bitmapę

				Bitmap myBitmap = BitmapFactory.decodeResource(getResources(), cardBase.cardImages[position]);

				if(width						width = wm.getDesiredMinimumWidth();
					height = width + (width/2);
					//mbitmap = Bitmap.createScaledBitmap(myBitmap, width, height, true);
				}
				else if(height						height = wm.getDesiredMinimumHeight();
					width = width - (width/3);
					//mbitmap = Bitmap.createScaledBitmap(myBitmap, width, height, true);
				}

				mbitmap = Bitmap.createScaledBitmap(myBitmap, width, height, true);
				myWallpaper.setBitmap(mbitmap);

				Toast.makeText(SelectedCard.this, "Wallpaper changed.", Toast.LENGTH_LONG).show();

 

Czy jest jakaś opcja, która pozwala zablokować tapete jako jedną dla wszystkich ekranów, czy jest to zależne od wersji androida ?

Odnośnik do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 2
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Popular Days

Top Posters In This Topic

A jak to w ogóle robisz? Przygotowałeś bitmapy proporcjonalnie dla ekranów -normal -large i -xlarge. Czy masz jedna wersje grafiki (hires) i ja ciachasz?

 

Coś takiego sprawdź (typ skalowania). Ogólnie sprawdź jeszcze te ScaleTypes.

myWallpaperManager.setScaleType(ImageView.FIT_CENTER);

 

Ogólnie najlepiej sprawdź to modyfikując XML'a i imageview:

android:scaleType = "FIT_CENTER"

 

Jeśli na telefonach jest OK to dla tabletów przygotowujesz odpowiedniego XML'a i nic nie musisz zmieniać w kodzie.

Tylko dla tabletów zmieniasz to skalowanie.

Odnośnik do komentarza
Udostępnij na innych stronach

Adek dzięki za odpowiedz.

Tyle że się nie zrozumieliśmy :).

 

Chodzi mi o tapetę główna telefenu / tabletu nie w aplikacji (nie ImageView).

 

Mam jeden wymiar grafik, i chce je ewentualnie przeskalować. Problem w tym, że w tablecie z jakiegoś powodu nie moge pobrać wymiaru ekranu.

np. patrzysz na ekran i on ma 320 x 480 px, a u mnie aplikacja nie pobiera takiej wartości(320x480) tylko większą (taką jak wymiar tapety, która się przersuwa razem z ekranami) czyli np. 400x480 (nie wiem ile tam ma taka przewijana tapeta).

 

I tu jest problem.

Odnośnik do komentarza
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ę



×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności