Добавлена возможность позиционирования спрайтов

This commit is contained in:
Victor 2015-04-04 15:12:41 +03:00
parent e8f7ff45eb
commit 550aa83f17

View File

@ -2,11 +2,14 @@ package com.annimon.everlastingsummer;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import android.annotation.SuppressLint;
import android.app.Activity; import android.app.Activity;
import android.media.MediaPlayer; import android.media.MediaPlayer;
import android.os.Bundle; import android.os.Bundle;
import android.text.*; import android.text.*;
import android.text.style.ForegroundColorSpan; import android.text.style.ForegroundColorSpan;
import android.util.DisplayMetrics;
import android.view.Gravity;
import android.view.View; import android.view.View;
import android.view.WindowManager; import android.view.WindowManager;
import android.widget.FrameLayout; import android.widget.FrameLayout;
@ -35,6 +38,7 @@ public final class ViewActivity extends Activity {
private Map<String, Person> names; private Map<String, Person> names;
private Map<String, ImageView> spriteInContainer; private Map<String, ImageView> spriteInContainer;
private DisplayMetrics displayMetrics;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -43,6 +47,9 @@ public final class ViewActivity extends Activity {
// Постоянная подсветка. // Постоянная подсветка.
getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
// Размер экрана.
displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
setContentView(R.layout.main); setContentView(R.layout.main);
instance = this; instance = this;
@ -145,13 +152,46 @@ public final class ViewActivity extends Activity {
img = new ImageView(this); img = new ImageView(this);
spriteInContainer.put(whoid, img); spriteInContainer.put(whoid, img);
} }
final FrameLayout.LayoutParams flp = new FrameLayout.LayoutParams(
FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.MATCH_PARENT);
setSpritePosition(img, flp, position);
final String path = PathResolver.sprite(whoid, emotion, cloth, distance);; final String path = PathResolver.sprite(whoid, emotion, cloth, distance);;
try { try {
img.setImageBitmap(IOUtil.readBitmap(path)); img.setImageBitmap(IOUtil.readBitmap(path));
container.addView(img); container.addView(img, flp);
} catch (Exception ioe) {} } catch (Exception ioe) {}
} }
@SuppressLint("RtlHardcoded")
private void setSpritePosition(ImageView img, FrameLayout.LayoutParams params, String position) {
// Позиционирование спрайта. fleft, left, cleft, center, cright, right, fright
final int width = displayMetrics.widthPixels;
if (TextUtils.isEmpty(position) || position.equals("center")) {
params.setMargins(0, 0, 0, 0);
params.gravity = Gravity.CENTER_HORIZONTAL;
} else if (position.equals("left")) {
params.setMargins(0, 0, width/2, 0);
params.gravity = Gravity.LEFT;
} else if (position.equals("cleft")) {
params.setMargins(0, 0, width/3, 0);
params.gravity = Gravity.LEFT;
} else if (position.equals("right")) {
params.setMargins(width/2, 0, 0, 0);
params.gravity = Gravity.RIGHT;
} else if (position.equals("cright")) {
params.setMargins(width/3, 0, 0, 0);
params.gravity = Gravity.RIGHT;
} else if (position.equals("fleft")) {
params.setMargins(0, 0, 0, 0);
params.gravity = Gravity.LEFT;
img.setScaleType(ImageView.ScaleType.FIT_START);
} else if (position.equals("fright")) {
params.setMargins(0, 0, 0, 0);
params.gravity = Gravity.RIGHT;
img.setScaleType(ImageView.ScaleType.FIT_END);
}
}
public void pause(final long duration) { public void pause(final long duration) {
text(""); text("");
new Thread(new Runnable() { new Thread(new Runnable() {