Acg sentence control

Acg sentence control

Source code introduction

Keep your favorite people, favorite lines, and unforgettable words in anime in your phone.
Source code running screenshot

Source code snippet:

  1. package com.ftbeat.acgdialogue;
  2.   
  3. import java.io.File;
  4.   
  5. import android.annotation.TargetApi;
  6. import android.graphics.Bitmap;
  7. import android.os.Build;
  8. import android.os.Bundle;
  9. import android.support.v4.app.Fragment;
  10. import android.view.LayoutInflater;
  11. import android.view.View;
  12. import android.view.ViewGroup;
  13. import android.view.animation.Animation;
  14. import android.view.animation.AnimationUtils;
  15. import android.widget.ImageView;
  16. import android.widget.TextView;
  17. import android.widget.Toast;
  18.   
  19. import com.ftbeat.R;
  20. import com.ftbeat.acg.Acg;
  21. import com.ftbeat.acg.AcgLab;
  22. import com.ftbeat.acglist.AcgListFragment;
  23. import com.ftbeat.media.AudioPlayer;
  24. import com.ftbeat.utils.PictureUtils;
  25.   
  26. public   class AcgDialogueFragment extends Fragment {
  27.   
  28. // private static final String TAG = "AcgDialogueFragment";  
  29. public   static   final String EXTRA_ACG_ID = "com.ftbeat.acg.acg_id" ;
  30.   
  31. private TextView mDialogueTextView;
  32. private TextView mPersonageTextView;
  33. private ImageView mHeadImageView;
  34. private ImageView mRippleImageView;
  35.   
  36. private Acg mAcg;
  37. private   static AudioPlayer mPlayer;
  38.   
  39. public   static AudioPlayer getPlayer() {
  40. if (mPlayer == null ) {
  41. mPlayer = new AudioPlayer();
  42. }
  43. return mPlayer;
  44. }
  45.   
  46. /**
  47. * Construct an AcgDialogueFragment by ID
  48. *
  49. * @param id
  50. * @return
  51. */  
  52. public   static AcgDialogueFragment newInstance( int id) {
  53. Bundle args = new Bundle();
  54. args.putSerializable(EXTRA_ACG_ID, id);
  55.   
  56. AcgDialogueFragment fragment = new AcgDialogueFragment();
  57. fragment.setArguments(args);
  58.   
  59. return fragment;
  60. }
  61.   
  62. /**
  63. * Create the DialogueFragment view
  64. *
  65. */  
  66. @TargetApi (Build.VERSION_CODES.HONEYCOMB)
  67. @Override  
  68. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  69. Bundle savedInstanceState) {
  70. // TODO Auto-generated method stub  
  71. View v = inflater.inflate(R.layout.fragment_acg_dialogue, container,
  72. false );
  73.   
  74. int id = (Integer) getArguments().getSerializable(EXTRA_ACG_ID);
  75. mAcg = AcgLab.get(getActivity()).getAcg(id);
  76.   
  77. mDialogueTextView = (TextView) v.findViewById(R.id.dialogue_tv);
  78. //Wrap from the following punctuation mark  
  79. String dialogue = mAcg.getDialogue().replace( "," , "\n" );
  80. dialogue = dialogue.replace( "." , "\n" );
  81. dialogue = dialogue.replace( "?" , "\n" );
  82. dialogue = dialogue.replace( "!" , "\n" );
  83. mDialogueTextView.setText(dialogue);
  84.   
  85. mPersonageTextView = (TextView) v.findViewById(R.id.personage_tv);
  86. if (!mAcg.getPersonage().isEmpty()) {
  87. mPersonageTextView.setText( "--" + mAcg.getPersonage());
  88. } else {
  89. mPersonageTextView.setText( "" );
  90. }
  91.   
  92. mHeadImageView = (ImageView) v.findViewById(R.id.avatar_iv);
  93. mRippleImageView = (ImageView) v.findViewById(R.id.ripple_iv);
  94. // Separate the sentences that come with the application and the sentences added by the user  
  95. if (mAcg.getId() < AcgListFragment.SYSTEM_DIALODUE_LENGHT) {
  96. mHeadImageView.setImageResource(Integer.parseInt(mAcg.getHead()));
  97. mHeadImageView.setOnClickListener( new View.OnClickListener() {
  98.   
  99. @Override  
  100. public   void onClick(View v) {
  101. // TODO Auto-generated method stub  
  102. // Set up the water wave animation  
  103. Animation anim = AnimationUtils.loadAnimation(
  104. getActivity(), R.anim.anim_ripple);
  105. mRippleImageView.startAnimation(anim);
  106.   
  107. AcgDialogueFragment.getPlayer().play(getActivity(),
  108. Integer.parseInt(mAcg.getSound()));
  109. }
  110. });
  111. } else {
  112. // The image path does not exist or is not set  
  113. File file = new File(mAcg.getHead());
  114. if (mAcg.getHead().isEmpty() || (!file.exists())) {
  115. // Set the default image  
  116. mHeadImageView.setImageResource(R.drawable.saber);
  117. } else {
  118. Bitmap bmp = PictureUtils.getScaledBitmapFromPath(
  119. getActivity(), mAcg.getHead());
  120. bmp = PictureUtils.getRoundBitmap(bmp);
  121. mHeadImageView.setImageBitmap(bmp);
  122. }
  123. mHeadImageView.setOnClickListener( new View.OnClickListener() {
  124.   
  125. @Override  
  126. public   void onClick(View v) {
  127. // TODO Auto-generated method stub  
  128. // Set up the water wave animation  
  129. Animation anim = AnimationUtils.loadAnimation(
  130. getActivity(), R.anim.anim_ripple);
  131. mRippleImageView.startAnimation(anim);
  132.   
  133. if (mAcg.getId() < AcgListFragment.SYSTEM_DIALODUE_LENGHT) {
  134. AcgDialogueFragment.getPlayer().play(getActivity(),
  135. Integer.parseInt(mAcg.getSound()));
  136. } else {
  137. if (mAcg.getSound().isEmpty()) {
  138. Toast.makeText(getActivity(),
  139. R.string.tip_not_sound, Toast.LENGTH_SHORT)
  140. .show();
  141. } else {
  142. AcgDialogueFragment.getPlayer().play(getActivity(),
  143. mAcg.getSound());
  144. }
  145. }
  146. }
  147. });
  148. }
  149.   
  150. return v;
  151. }
  152.   
  153. @Override  
  154. public   void onPause() {
  155. // TODO Auto-generated method stub  
  156. super .onPause();
  157.   
  158. AcgDialogueFragment.getPlayer().stop();
  159. }
  160. }

Source code link: http://download..com/data/1984836

<<:  Android application source code for smart agriculture

>>:  Google executives express willingness to return to the Chinese market

Recommend

Eight technologies that mobile developers cannot ignore

In recent years, the influence of programmers, es...

Refined operational skills for overseas e-commerce!

Why do we need refined operations? I believe many...

Template for planning fission activities!

1. #Split the wheel lottery game and get a gift b...

Four ways of Android multithreading

When we start an App, the Android system will sta...

I got on a Spring Festival travel train that distorted time and space?!

1 Strange things happened on the train A while ag...

10 tips for KOL marketing!

As a person who has been working in the market fo...

Why does iPhone 6 insist on 1GB of memory?

This question is both simple and complex. Someone...

When sailing at sea, what is the real "stabilizing force"?

When sailing at sea, what is the real "stabi...

Starbucks membership system disassembled!

Starbucks , a controversial brand. At the product...

Online Bootcamp Operation Manual (SOP)

As we all know, training camps have become the mo...