源码简介
让动漫中那些喜欢的人、喜欢的台词,让你难忘的话语,都保留在你的手机中吧。
源码运行截图
源码片段:
- package com.ftbeat.acgdialogue;
- import java.io.File;
- import android.annotation.TargetApi;
- import android.graphics.Bitmap;
- import android.os.Build;
- import android.os.Bundle;
- import android.support.v4.app.Fragment;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.view.animation.Animation;
- import android.view.animation.AnimationUtils;
- import android.widget.ImageView;
- import android.widget.TextView;
- import android.widget.Toast;
- import com.ftbeat.R;
- import com.ftbeat.acg.Acg;
- import com.ftbeat.acg.AcgLab;
- import com.ftbeat.acglist.AcgListFragment;
- import com.ftbeat.media.AudioPlayer;
- import com.ftbeat.utils.PictureUtils;
- public class AcgDialogueFragment extends Fragment {
- // private static final String TAG = "AcgDialogueFragment";
- public static final String EXTRA_ACG_ID = "com.ftbeat.acg.acg_id";
- private TextView mDialogueTextView;
- private TextView mPersonageTextView;
- private ImageView mHeadImageView;
- private ImageView mRippleImageView;
- private Acg mAcg;
- private static AudioPlayer mPlayer;
- public static AudioPlayer getPlayer() {
- if (mPlayer == null) {
- mPlayer = new AudioPlayer();
- }
- return mPlayer;
- }
- /**
- * 通过ID构造一个AcgDialogueFragment
- *
- * @param id
- * @return
- */
- public static AcgDialogueFragment newInstance(int id) {
- Bundle args = new Bundle();
- args.putSerializable(EXTRA_ACG_ID, id);
- AcgDialogueFragment fragment = new AcgDialogueFragment();
- fragment.setArguments(args);
- return fragment;
- }
- /**
- * 创建DialogueFragment视图
- *
- */
- @TargetApi(Build.VERSION_CODES.HONEYCOMB)
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- View v = inflater.inflate(R.layout.fragment_acg_dialogue, container,
- false);
- int id = (Integer) getArguments().getSerializable(EXTRA_ACG_ID);
- mAcg = AcgLab.get(getActivity()).getAcg(id);
- mDialogueTextView = (TextView) v.findViewById(R.id.dialogue_tv);
- // 从以下标点符号处换行
- String dialogue = mAcg.getDialogue().replace(",", "\n");
- dialogue = dialogue.replace("。", "\n");
- dialogue = dialogue.replace("?", "\n");
- dialogue = dialogue.replace("!", "\n");
- mDialogueTextView.setText(dialogue);
- mPersonageTextView = (TextView) v.findViewById(R.id.personage_tv);
- if (!mAcg.getPersonage().isEmpty()) {
- mPersonageTextView.setText("--" + mAcg.getPersonage());
- } else {
- mPersonageTextView.setText("");
- }
- mHeadImageView = (ImageView) v.findViewById(R.id.avatar_iv);
- mRippleImageView = (ImageView) v.findViewById(R.id.ripple_iv);
- // 将该应用程序自带的句子和用户添加的句子分开处理
- if (mAcg.getId() < AcgListFragment.SYSTEM_DIALODUE_LENGHT) {
- mHeadImageView.setImageResource(Integer.parseInt(mAcg.getHead()));
- mHeadImageView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- // 设置水波动画
- Animation anim = AnimationUtils.loadAnimation(
- getActivity(), R.anim.anim_ripple);
- mRippleImageView.startAnimation(anim);
- AcgDialogueFragment.getPlayer().play(getActivity(),
- Integer.parseInt(mAcg.getSound()));
- }
- });
- } else {
- // 图片路径不存在或者未设置
- File file = new File(mAcg.getHead());
- if (mAcg.getHead().isEmpty() || (!file.exists())) {
- // 设置默认图片
- mHeadImageView.setImageResource(R.drawable.saber);
- } else {
- Bitmap bmp = PictureUtils.getScaledBitmapFromPath(
- getActivity(), mAcg.getHead());
- bmp = PictureUtils.getRoundBitmap(bmp);
- mHeadImageView.setImageBitmap(bmp);
- }
- mHeadImageView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- // 设置水波动画
- Animation anim = AnimationUtils.loadAnimation(
- getActivity(), R.anim.anim_ripple);
- mRippleImageView.startAnimation(anim);
- if (mAcg.getId() < AcgListFragment.SYSTEM_DIALODUE_LENGHT) {
- AcgDialogueFragment.getPlayer().play(getActivity(),
- Integer.parseInt(mAcg.getSound()));
- } else {
- if (mAcg.getSound().isEmpty()) {
- Toast.makeText(getActivity(),
- R.string.tip_not_sound, Toast.LENGTH_SHORT)
- .show();
- } else {
- AcgDialogueFragment.getPlayer().play(getActivity(),
- mAcg.getSound());
- }
- }
- }
- });
- }
- return v;
- }
- @Override
- public void onPause() {
- // TODO Auto-generated method stub
- super.onPause();
- AcgDialogueFragment.getPlayer().stop();
- }
- }
源码链接:http://down.51cto.com/data/1984836