Refactoring, RIP95's changes
|
@ -0,0 +1,31 @@
|
|||
apply plugin: 'com.android.application'
|
||||
|
||||
android {
|
||||
compileSdkVersion 25
|
||||
buildToolsVersion "25.0.1"
|
||||
defaultConfig {
|
||||
applicationId "com.example.yink.amadeus"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 25
|
||||
versionCode 1
|
||||
versionName "1.0"
|
||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
minifyEnabled false
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
}
|
||||
productFlavors {
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compile fileTree(include: ['*.jar'], dir: 'libs')
|
||||
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
|
||||
exclude group: 'com.android.support', module: 'support-annotations'
|
||||
})
|
||||
compile 'com.android.support:appcompat-v7:25.2.0'
|
||||
testCompile 'junit:junit:4.12'
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
# Add project specific ProGuard rules here.
|
||||
# By default, the flags in this file are appended to flags specified
|
||||
# in C:\Users\yinku\AppData\Local\Android\Sdk/tools/proguard/proguard-android.txt
|
||||
# You can edit the include path and order by changing the proguardFiles
|
||||
# directive in build.gradle.
|
||||
#
|
||||
# For more details, see
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
||||
# Add any project specific keep options here:
|
||||
|
||||
# If your project uses WebView with JS, uncomment the following
|
||||
# and specify the fully qualified class name to the JavaScript interface
|
||||
# class:
|
||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||
# public *;
|
||||
#}
|
|
@ -15,7 +15,9 @@
|
|||
<action android:name="android.intent.action.MAIN" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity android:name=".LaunchActivity">
|
||||
<activity
|
||||
android:name=".LaunchActivity"
|
||||
android:screenOrientation="portrait">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
|
|
|
@ -1,33 +1,53 @@
|
|||
package com.example.yink.amadeus;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
|
||||
public class LaunchActivity extends AppCompatActivity {
|
||||
ImageView connect;
|
||||
ImageView connect, cancel;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.activity_launch);
|
||||
connect = (ImageView) findViewById(R.id.imageView_connect);
|
||||
cancel = (ImageView) findViewById(R.id.imageView_cancel);
|
||||
|
||||
connect.setImageResource(R.drawable.connect_unselect);
|
||||
cancel.setImageResource(R.drawable.cancel_unselect);
|
||||
|
||||
connect.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
connect.setImageResource(R.drawable.connect_select);
|
||||
|
||||
Intent intent = new Intent(LaunchActivity.this,MainActivity.class);
|
||||
startActivity(intent);
|
||||
}
|
||||
});
|
||||
|
||||
cancel.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
cancel.setImageResource(R.drawable.cancel_select);
|
||||
|
||||
Intent intent = new Intent(Intent.ACTION_MAIN);
|
||||
intent.addCategory(Intent.CATEGORY_HOME);
|
||||
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
startActivity(intent);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume(){
|
||||
connect.setImageResource(R.drawable.connect_unselect);
|
||||
cancel.setImageResource(R.drawable.cancel_unselect);
|
||||
super.onResume();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,55 +4,41 @@ package com.example.yink.amadeus;
|
|||
* Big thanks to https://github.com/RIP95 aka Emojikage
|
||||
*/
|
||||
|
||||
import android.Manifest;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.graphics.drawable.AnimationDrawable;
|
||||
import android.media.MediaPlayer;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.SystemClock;
|
||||
import android.speech.RecognitionListener;
|
||||
import android.speech.RecognizerIntent;
|
||||
import android.speech.SpeechRecognizer;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Locale;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
|
||||
public class MainActivity extends AppCompatActivity {
|
||||
final String TAG = "Amadeus";
|
||||
MediaPlayer mediaPlayer;
|
||||
ImageView kurisu;
|
||||
AnimationDrawable animation;
|
||||
Handler handler;
|
||||
Boolean looping = false;
|
||||
|
||||
private SpeechRecognizer sr;
|
||||
protected static final int REQ_CODE_SPEECH_INPUT = 1;
|
||||
|
||||
private final int eyes_closed = 0;
|
||||
private final int normal = 1;
|
||||
private final int sad = 2;
|
||||
private final int indifferent = 3;
|
||||
private final int wink = 4;
|
||||
private final int pissed = 5;
|
||||
private final int annoyed = 6;
|
||||
private final int disappointed = 7;
|
||||
private final int happy = 8;
|
||||
private final int angry = 9;
|
||||
private final int blush = 10;
|
||||
private final int side = 11;
|
||||
|
||||
ArrayList<VoiceLine> voiceLines = new ArrayList<>();
|
||||
|
||||
private SpeechRecognizer sr;
|
||||
|
||||
@Override
|
||||
public void onWindowFocusChanged(boolean hasFocus){
|
||||
if(hasFocus){
|
||||
speak(new VoiceLine(R.raw.hello,happy));
|
||||
speak(new VoiceLine(R.raw.hello, Mood.HAPPY));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -64,8 +50,6 @@ public class MainActivity extends AppCompatActivity {
|
|||
kurisu = (ImageView) findViewById(R.id.imageView_kurisu);
|
||||
handler = new Handler();
|
||||
setupLines();
|
||||
kurisu.setImageResource(R.drawable.kurisu_1);
|
||||
animation = (AnimationDrawable) kurisu.getDrawable();
|
||||
|
||||
sr = SpeechRecognizer.createSpeechRecognizer(this);
|
||||
sr.setRecognitionListener(new listener());
|
||||
|
@ -73,15 +57,26 @@ public class MainActivity extends AppCompatActivity {
|
|||
final Runnable loop = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (looping) {
|
||||
Random randomgen = new Random();
|
||||
speak(voiceLines.get(randomgen.nextInt(voiceLines.size())));
|
||||
handler.postDelayed(this,5000+randomgen.nextInt(5)*1000);
|
||||
handler.postDelayed(this, 5000 + randomgen.nextInt(5) * 1000);
|
||||
}
|
||||
}
|
||||
};
|
||||
kurisu.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
promptSpeechInput();
|
||||
MainActivity host = (MainActivity) view.getContext();
|
||||
|
||||
int permissionCheck = ContextCompat.checkSelfPermission(host,
|
||||
Manifest.permission.RECORD_AUDIO);
|
||||
|
||||
if (permissionCheck == PackageManager.PERMISSION_GRANTED) {
|
||||
promptSpeechInput();
|
||||
} else {
|
||||
speak(new VoiceLine(R.raw.daga_kotowaru, Mood.PISSED));
|
||||
}
|
||||
|
||||
}});
|
||||
|
||||
|
@ -100,115 +95,26 @@ public class MainActivity extends AppCompatActivity {
|
|||
});
|
||||
}
|
||||
|
||||
|
||||
public void speak(VoiceLine line){
|
||||
|
||||
switch (line.getState()){
|
||||
case eyes_closed:
|
||||
kurisu.setImageResource(R.drawable.kurisu_1);
|
||||
break;
|
||||
case normal:
|
||||
kurisu.setImageResource(R.drawable.kurisu_2);
|
||||
break;
|
||||
case sad:
|
||||
kurisu.setImageResource(R.drawable.kurisu_3);
|
||||
break;
|
||||
case indifferent:
|
||||
kurisu.setImageResource(R.drawable.kurisu_4);
|
||||
break;
|
||||
case wink:
|
||||
kurisu.setImageResource(R.drawable.kurisu_5);
|
||||
break;
|
||||
case pissed:
|
||||
kurisu.setImageResource(R.drawable.kurisu_6);
|
||||
break;
|
||||
case annoyed:
|
||||
kurisu.setImageResource(R.drawable.kurisu_7);
|
||||
break;
|
||||
case disappointed:
|
||||
kurisu.setImageResource(R.drawable.kurisu_8);
|
||||
break;
|
||||
case happy:
|
||||
kurisu.setImageResource(R.drawable.kurisu_9);
|
||||
break;
|
||||
case angry:
|
||||
kurisu.setImageResource(R.drawable.kurisu_10);
|
||||
break;
|
||||
case blush:
|
||||
kurisu.setImageResource(R.drawable.kurisu_11);
|
||||
break;
|
||||
case side:
|
||||
kurisu.setImageResource(R.drawable.kurisu_12);
|
||||
break;
|
||||
default:kurisu.setImageResource(R.drawable.kurisu_2);
|
||||
|
||||
}
|
||||
animation = (AnimationDrawable) kurisu.getDrawable();
|
||||
mediaPlayer = mediaPlayer.create(this,line.getId());
|
||||
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
|
||||
@Override
|
||||
public void onCompletion(MediaPlayer mediaPlayer) {
|
||||
animation.stop();
|
||||
kurisu.setImageDrawable(animation.getFrame(0));
|
||||
mediaPlayer.release();
|
||||
}
|
||||
});
|
||||
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
|
||||
@Override
|
||||
public void onPrepared(MediaPlayer mediaPlayer) {
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
animation.start();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
mediaPlayer.start();
|
||||
animation.start();
|
||||
}
|
||||
|
||||
private void answerSpeech(String request){
|
||||
Log.e(TAG,request);
|
||||
if (request.equals("ハロー")) {
|
||||
speak(new VoiceLine(R.raw.hello,happy));
|
||||
}else if (request.equals("ナイスボディ")) {
|
||||
speak(new VoiceLine(R.raw.devilish_pervert,angry));
|
||||
}else if (request.equals("クリスティーナ")) {
|
||||
speak(new VoiceLine(R.raw.this_guy_hopeless,disappointed));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy(){
|
||||
if(sr!=null)
|
||||
sr.destroy();
|
||||
looping = false;
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStop(){
|
||||
mediaPlayer.release();
|
||||
mediaPlayer = null;
|
||||
looping = false;
|
||||
super.onStop();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPause(){
|
||||
looping = false;
|
||||
super.onPause();
|
||||
}
|
||||
|
||||
private void setupLines(){
|
||||
voiceLines.add(new VoiceLine(R.raw.daga_kotowaru,annoyed));
|
||||
voiceLines.add(new VoiceLine(R.raw.devilish_pervert,angry));
|
||||
voiceLines.add(new VoiceLine(R.raw.i_guess,indifferent));
|
||||
voiceLines.add(new VoiceLine(R.raw.nice,wink));
|
||||
voiceLines.add(new VoiceLine(R.raw.pervert_confirmed,pissed));
|
||||
voiceLines.add(new VoiceLine(R.raw.sorry,sad));
|
||||
voiceLines.add(new VoiceLine(R.raw.sounds_tough,side));
|
||||
voiceLines.add(new VoiceLine(R.raw.this_guy_hopeless,disappointed));
|
||||
}
|
||||
|
||||
private void promptSpeechInput() {
|
||||
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
|
||||
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
|
||||
|
@ -220,6 +126,103 @@ public class MainActivity extends AppCompatActivity {
|
|||
sr.startListening(intent);
|
||||
}
|
||||
|
||||
public void speak(VoiceLine line) {
|
||||
try {
|
||||
MediaPlayer m = MediaPlayer.create(getApplicationContext(), line.getId());
|
||||
|
||||
kurisu.setImageResource(line.getMood());
|
||||
|
||||
animation = (AnimationDrawable) kurisu.getDrawable();
|
||||
|
||||
if (m.isPlaying()) {
|
||||
m.stop();
|
||||
m.release();
|
||||
m = new MediaPlayer();
|
||||
}
|
||||
|
||||
m.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
|
||||
@Override
|
||||
public void onPrepared(MediaPlayer mp) {
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
animation.start();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
m.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
|
||||
@Override
|
||||
public void onCompletion(MediaPlayer mp) {
|
||||
mp.release();
|
||||
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
animation.stop();
|
||||
kurisu.setImageDrawable(animation.getFrame(0));
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
m.start();
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private void answerSpeech(String request) {
|
||||
String[] greetingArr = new String[]{"ハロー", "おはよう", "こんにちは", "こんばんは"};
|
||||
List<String> greeting = Arrays.asList(greetingArr);
|
||||
Log.e(TAG, request);
|
||||
if (greeting.contains(request)) {
|
||||
speak(new VoiceLine(R.raw.hello, Mood.HAPPY));
|
||||
} else if (request.equals("ナイスボディ")) {
|
||||
speak(new VoiceLine(R.raw.devilish_pervert, Mood.ANGRY));
|
||||
} else if (request.contains("クリスティーナ")) {
|
||||
speak(new VoiceLine(R.raw.this_guy_hopeless, Mood.DISAPPOINTED));
|
||||
}
|
||||
}
|
||||
|
||||
private void setupLines() {
|
||||
voiceLines.add(new VoiceLine(R.raw.daga_kotowaru, Mood.ANNOYED));
|
||||
voiceLines.add(new VoiceLine(R.raw.devilish_pervert, Mood.ANGRY));
|
||||
voiceLines.add(new VoiceLine(R.raw.i_guess, Mood.INDIFFERENT));
|
||||
voiceLines.add(new VoiceLine(R.raw.nice, Mood.WINKING));
|
||||
voiceLines.add(new VoiceLine(R.raw.pervert_confirmed, Mood.PISSED));
|
||||
voiceLines.add(new VoiceLine(R.raw.sorry, Mood.SAD));
|
||||
voiceLines.add(new VoiceLine(R.raw.sounds_tough, Mood.SIDE));
|
||||
voiceLines.add(new VoiceLine(R.raw.this_guy_hopeless, Mood.DISAPPOINTED));
|
||||
}
|
||||
|
||||
public void onPartialResults(Bundle partialResults) {
|
||||
Log.d(TAG, "onPartialResults");
|
||||
}
|
||||
|
||||
public void onEvent(int eventType, Bundle params) {
|
||||
Log.d(TAG, "onEvent " + eventType);
|
||||
}
|
||||
|
||||
private class Mood {
|
||||
public static final int HAPPY = R.drawable.kurisu_9;
|
||||
public static final int PISSED = R.drawable.kurisu_6;
|
||||
public static final int ANNOYED = R.drawable.kurisu_7;
|
||||
public static final int ANGRY = R.drawable.kurisu_10;
|
||||
public static final int BLUSH = R.drawable.kurisu_11;
|
||||
public static final int SIDE = R.drawable.kurisu_12;
|
||||
public static final int SAD = R.drawable.kurisu_3;
|
||||
public static final int NORMAL = R.drawable.kurisu_2;
|
||||
public static final int SLEEPY = R.drawable.kurisu_1;
|
||||
public static final int WINKING = R.drawable.kurisu_5;
|
||||
public static final int DISAPPOINTED = R.drawable.kurisu_8;
|
||||
public static final int INDIFFERENT = R.drawable.kurisu_4;
|
||||
public static final int SIDED_PLEASANT = R.drawable.kurisu_15;
|
||||
public static final int SIDED_WORRIED = R.drawable.kurisu_17;
|
||||
}
|
||||
|
||||
public class listener implements RecognitionListener {
|
||||
final String TAG = "Amadeus.listener";
|
||||
|
||||
|
|
|
@ -5,18 +5,19 @@ package com.example.yink.amadeus;
|
|||
*/
|
||||
|
||||
public class VoiceLine {
|
||||
final private int id;
|
||||
final private int mood;
|
||||
|
||||
public VoiceLine(int id, int mood) {
|
||||
this.id = id;
|
||||
this.mood = mood;
|
||||
}
|
||||
|
||||
public int getId(){
|
||||
return id;
|
||||
}
|
||||
public int getState() {
|
||||
return state;
|
||||
}
|
||||
|
||||
final private int id;
|
||||
final private int state;
|
||||
|
||||
public VoiceLine(int id, int state){
|
||||
this.id = id;
|
||||
this.state = state;
|
||||
public int getMood() {
|
||||
return mood;
|
||||
}
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 5.5 KiB |
After Width: | Height: | Size: 4.7 KiB |
After Width: | Height: | Size: 6.0 KiB |
After Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 281 KiB After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 281 KiB After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 281 KiB After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 281 KiB After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 271 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 271 KiB After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 271 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 272 KiB After Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 272 KiB After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 272 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 271 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 271 KiB After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 271 KiB After Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 271 KiB After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 271 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 271 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 271 KiB After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 271 KiB After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 271 KiB After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 270 KiB After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 271 KiB After Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 271 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 270 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 270 KiB After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 270 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 279 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 279 KiB After Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 281 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 281 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 281 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 281 KiB After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 279 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 279 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 279 KiB After Width: | Height: | Size: 58 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 47 KiB |
After Width: | Height: | Size: 5.8 KiB |
After Width: | Height: | Size: 8.2 KiB |
After Width: | Height: | Size: 7.9 KiB |
After Width: | Height: | Size: 9.0 KiB |
After Width: | Height: | Size: 8.7 KiB |
Before Width: | Height: | Size: 489 KiB After Width: | Height: | Size: 113 KiB |
Before Width: | Height: | Size: 489 KiB After Width: | Height: | Size: 113 KiB |
Before Width: | Height: | Size: 489 KiB After Width: | Height: | Size: 113 KiB |
Before Width: | Height: | Size: 490 KiB After Width: | Height: | Size: 114 KiB |
Before Width: | Height: | Size: 490 KiB After Width: | Height: | Size: 112 KiB |
Before Width: | Height: | Size: 490 KiB After Width: | Height: | Size: 113 KiB |
Before Width: | Height: | Size: 489 KiB After Width: | Height: | Size: 112 KiB |
Before Width: | Height: | Size: 489 KiB After Width: | Height: | Size: 114 KiB |
Before Width: | Height: | Size: 489 KiB After Width: | Height: | Size: 111 KiB |
Before Width: | Height: | Size: 472 KiB After Width: | Height: | Size: 116 KiB |
Before Width: | Height: | Size: 472 KiB After Width: | Height: | Size: 116 KiB |
Before Width: | Height: | Size: 472 KiB After Width: | Height: | Size: 116 KiB |
Before Width: | Height: | Size: 473 KiB After Width: | Height: | Size: 116 KiB |
Before Width: | Height: | Size: 474 KiB After Width: | Height: | Size: 117 KiB |
Before Width: | Height: | Size: 474 KiB After Width: | Height: | Size: 115 KiB |
Before Width: | Height: | Size: 472 KiB After Width: | Height: | Size: 114 KiB |
Before Width: | Height: | Size: 472 KiB After Width: | Height: | Size: 116 KiB |
Before Width: | Height: | Size: 472 KiB After Width: | Height: | Size: 115 KiB |
Before Width: | Height: | Size: 472 KiB After Width: | Height: | Size: 116 KiB |