Jump to content

[android / eclipse] ustawienie zdjęcia jako tapety


stobolewski
 Share

Recommended Posts

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 ?

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

We are using cookies. Read about our Privacy Policy