Acg句子控

移动开发
让动漫中那些喜欢的人、喜欢的台词,让你难忘的话语,都保留在你的手机中吧。

源码简介

让动漫中那些喜欢的人、喜欢的台词,让你难忘的话语,都保留在你的手机中吧。
源码运行截图

源码片段:

  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.      * 通过ID构造一个AcgDialogueFragment 
  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.      * 创建DialogueFragment视图 
  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.         // 从以下标点符号处换行 
  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.         // 将该应用程序自带的句子和用户添加的句子分开处理 
  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.                     // 设置水波动画 
  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.             // 图片路径不存在或者未设置 
  113.             File file = new File(mAcg.getHead()); 
  114.             if (mAcg.getHead().isEmpty() || (!file.exists())) { 
  115.                 // 设置默认图片 
  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.                     // 设置水波动画 
  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.     } 

源码链接:http://down.51cto.com/data/1984836

责任编辑:chenqingxiang 来源: 网络整理
相关推荐

2012-05-08 13:18:42

流控引擎流控

2011-06-22 13:46:10

IT服务监理

2011-06-28 16:41:19

IT管理运维

2017-02-28 14:53:13

2021-05-17 07:50:06

流控规则Sentinel

2021-03-22 11:49:19

架构运维技术

2018-04-23 14:49:31

表征句子深度学习自然语言

2015-01-28 14:57:52

2017-03-27 08:56:15

支付风控模型

2023-09-15 07:28:02

2020-02-10 18:37:25

微软

2010-12-21 17:26:44

2023-07-31 07:43:29

保险反欺诈前沿技术

2023-11-30 20:39:29

物联网中控系统物联网

2011-03-23 10:13:09

高校流控设备网康科技

2021-04-19 05:55:22

谷歌Chrome 浏览器

2014-05-12 10:03:44

BettyUNIX命令

2015-10-27 18:27:52

中科曙光技术控
点赞
收藏

51CTO技术栈公众号