首页 > 数据库 > SQL Server > 正文

我也有微信朋友圈了 Android实现

2020-07-25 12:46:03
字体:
来源:转载
供稿:网友

本文实例分享了一个简单的朋友圈程序,包含了朋友圈的列表实现,视频的录制、预览与上传,图片可选择拍照,供大家参考,具体内容如下

FriendsListActivity  代码如下

public class FriendsListActivity extends BaseActivity implements OnRefreshListener<ListView>, PostListener {   private InteractionAdapter mAdapter;   private PullToRefreshListView mRefreshListView;   private View mFooter;   private Context mContext;   private Button btnToPost;   protected int mPage = 0;   private boolean isRefreshing = false;   @Override   protected void onCreate(Bundle savedInstanceState) {     // TODO Auto-generated method stub     super.onCreate(savedInstanceState);     setContentView(R.layout.friends_list);     mContext=getApplicationContext();     mAdapter = new InteractionAdapter(mContext);     mAdapter.setListener(this);     btnToPost=(Button) findViewById(R.id.btn_topost);     mRefreshListView = (PullToRefreshListView) findViewById(R.id.friends_list);     FriendsApi.getFriendsList(mContext, mCallBack);     mRefreshListView.setOnRefreshListener(this);     mFooter = LayoutInflater.from(mContext).inflate(R.layout.loading_footer, null); //   mRefreshListView.getRefreshableView().addFooterView(mFooter);     mRefreshListView.setAdapter(mAdapter); //   mRefreshListView.setOnLastItemVisibleListener(mLastListener); //   mRefreshListView.getRefreshableView().setDividerHeight(40);     btnToPost.setOnClickListener(new OnClickListener() {              @Override       public void onClick(View v) {         myPosts();       }     });   }      protected void myPosts() {     new AlertDialog.Builder(this).setItems(new String[]{"图片","视频","文字"}, new DialogInterface.OnClickListener() {              @Override       public void onClick(DialogInterface dialog, int which) {         Intent intent=new Intent();         switch (which) {         case 0:           intent.setClass(FriendsListActivity.this, CreatePostActivity.class);           break;         case 1:           intent.setClass(FriendsListActivity.this, RecorderActivity.class);           break;         case 2:           intent.setClass(FriendsListActivity.this, RecorderActivity.class);           break;         default:           break;         }         startActivity(intent);       }     }).show();        }   /**    * 查看更多操作    */   @Override   public void show(Interaction interaction) {        }      @Override   public void delete(Interaction interaction) {     // TODO Auto-generated method stub        }    @Override   public void onRefresh(PullToRefreshBase<ListView> refreshView) {     if (!isRefreshing) {        isRefreshing = true;        mPage = 0;       FriendsApi.getFriendsList(mContext, mCallBack);     }    }    protected NetCallBack mCallBack = new NetCallBack() {          public void friendslist(ArrayList<Interaction> friends) {       Log.i("friends size>>>>",friends.size()+"-------------");       mAdapter.setInteractions(friends); //     mRefreshListView.getLoadingLayoutProxy().setLastUpdatedLabel(null);       mRefreshListView.onRefreshComplete();       isRefreshing = false;       dismissLoading();     };          public void start() {       showLoading();     };          public void failed(String message) {       loadFailed();     };   };   @Override   public void play(Interaction interaction) {     Intent mIntent=new Intent();     mIntent.setClass(FriendsListActivity.this, RecorderPlayActivity.class);     Bundle data = new Bundle();     data.putString("path", interaction.videoPath);     mIntent.putExtras(data);     startActivity(mIntent);   } } 

布局文件 friends_list.xml

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"   android:layout_width="match_parent"   android:layout_height="match_parent"   android:background="@color/backgroud_color" >   <include     android:id="@+id/list_title"     android:layout_alignParentTop="true"     layout="@layout/list_title"/>      <com.yzl.xyb.friends.refresh.view.PullToRefreshListView     xmlns:app="http://schemas.android.com/apk/res-auto"     android:id="@+id/friends_list"     android:layout_width="match_parent"     android:layout_height="match_parent"      android:layout_margin="@dimen/padding_left"     android:divider="@android:color/transparent"     android:layout_below="@+id/list_title"     app:ptrOverScroll="false"     app:ptrHeaderTextColor="#ff666666"     app:ptrHeaderTextAppearance="@android:style/TextAppearance.Small"     app:ptrShowIndicator="false"/>    <include layout="@layout/loading"/> </RelativeLayout> 

适配器 InteractionAdapter 对朋友圈列表进行数据填充

public class InteractionAdapter extends BaseAdapter implements OnClickListener {   private ArrayList<Interaction> interactions;   private Context mContext;   private FinalBitmap mFinal;   private BitmapDisplayConfig config;   private BitmapDisplayConfig imageConfig;   private PostListener listener;   public InteractionAdapter(Context context) {     mContext = context;     mFinal = FinalBitmap.create(mContext);     Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.user_avatar);     config = new BitmapDisplayConfig();     config.setAnimationType(BitmapDisplayConfig.AnimationType.fadeIn);     config.setLoadfailBitmap(bitmap);     config.setLoadfailBitmap(bitmap);          bitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.image_failed);     imageConfig = new BitmapDisplayConfig();     imageConfig.setAnimationType(BitmapDisplayConfig.AnimationType.fadeIn);     imageConfig.setLoadfailBitmap(bitmap);     imageConfig.setLoadfailBitmap(bitmap);   }      public void setListener(PostListener listener) {     this.listener = listener;   }    public void setInteractions(ArrayList<Interaction> interactions) {     this.interactions = interactions;     notifyDataSetChanged();   }     @Override   public int getCount() {     // TODO Auto-generated method stub     return interactions == null ? 0 : interactions.size();   }    @Override   public Object getItem(int position) {     // TODO Auto-generated method stub     return interactions.get(position);   }    @Override   public long getItemId(int position) {     // TODO Auto-generated method stub     return position;   }    @Override   public View getView(int position, View convertView, ViewGroup parent) {     // TODO Auto-generated method stub     ViewHolder holder = null;     if (convertView == null) {       convertView = LayoutInflater.from(mContext).inflate(R.layout.friend_list_item, null);       holder = new ViewHolder();       holder.avatar = (CircleImageView) convertView.findViewById(R.id.avatar);       holder.content = (TextView) convertView.findViewById(R.id.content);       holder.title = (TextView) convertView.findViewById(R.id.title);       holder.subtitle = (TextView) convertView.findViewById(R.id.subtitle);       holder.image = convertView.findViewById(R.id.image_layout);       holder.image0 = (ImageView) convertView.findViewById(R.id.image0);       holder.image1 = (ImageView) convertView.findViewById(R.id.image1);       holder.image2 = (ImageView) convertView.findViewById(R.id.image2);       holder.conments = (TextView) convertView.findViewById(R.id.conment_count);       holder.praises = (TextView) convertView.findViewById(R.id.parise_count);       holder.praised = (ImageView) convertView.findViewById(R.id.praise_icon);       holder.more = (TextView) convertView.findViewById(R.id.more);       holder.viewLayout=(LinearLayout) convertView.findViewById(R.id.view_layout);       holder.surfaceView=(SurfaceView) convertView.findViewById(R.id.surface_view_result);       holder.playButton=(ImageButton) convertView.findViewById(R.id.btn_play_result);       holder.audioLayout=(FrameLayout) convertView.findViewById(R.id.audio_layout);       convertView.setTag(holder);     } else {       holder = (ViewHolder) convertView.getTag();     }          Interaction interaction = interactions.get(position);     if (TextUtils.isEmpty(interaction.avatar)) {       holder.avatar.setImageBitmap(config.getLoadfailBitmap());     } else {       mFinal.display(holder.avatar, interaction.avatar, config);     }     holder.title.setText(interaction.name);     holder.subtitle.setText(interaction.subtitle);     holder.content.setText(interaction.content);          holder.conments.setText(String.valueOf(interaction.commentCount));     holder.praises.setText(String.valueOf(interaction.praiseCount));          int images = interaction.images == null ? 0 : interaction.images.size();          if (images > 0) {       holder.image.setVisibility(View.VISIBLE);       holder.audioLayout.setVisibility(View.GONE);       holder.image.setOnClickListener(this);       holder.image.setTag(interaction);       if (images <= 1) {         mFinal.display(holder.image0, interaction.images.get(0), imageConfig);         holder.image1.setImageBitmap(null);         holder.image2.setImageBitmap(null);       } else if (images <= 2) {         mFinal.display(holder.image0, interaction.images.get(0), imageConfig);         mFinal.display(holder.image1, interaction.images.get(1), imageConfig);         holder.image2.setImageBitmap(null);       } else {         mFinal.display(holder.image0, interaction.images.get(0), imageConfig);         mFinal.display(holder.image1, interaction.images.get(1), imageConfig);         mFinal.display(holder.image2, interaction.images.get(2), imageConfig);                }     } else if(interaction.videoPath!=null)     {         holder.image.setVisibility(View.GONE);         holder.playButton.setBackgroundResource(R.drawable.play1pressed);         holder.audioLayout.setVisibility(View.VISIBLE);         holder.playButton.setTag(interaction);         holder.playButton.setOnClickListener(this);         holder.surfaceView.setTag(interaction);         holder.surfaceView.setOnClickListener(this);     }else{       holder.viewLayout.setVisibility(View.GONE);     }            holder.more.setTag(interaction);     holder.more.setOnClickListener(this);          return convertView;   }      private class ViewHolder {     CircleImageView avatar;     TextView title;     TextView subtitle;     TextView content;     View image;     ImageView image0;     ImageView image1;     ImageView image2;     TextView conments;     TextView praises;     ImageView praised;     View delete;     TextView more;     SurfaceView surfaceView;     ImageButton playButton;     FrameLayout audioLayout;     LinearLayout viewLayout;   }    @Override   public void onClick(View v) {     int id = v.getId();     if (id == R.id.btn_play_result) {       Interaction interaction = (Interaction) v.getTag();     }else if (id == R.id.surface_view_result) {       if (this.listener != null) {         this.listener.play((Interaction) v.getTag());       }     }else if (id == R.id.more) {       if (this.listener != null) {         this.listener.show((Interaction) v.getTag());       }     } else if (id == R.id.image_layout) {       Intent intent = new Intent(mContext, MainActivity.class);       Bundle data = new Bundle();       Interaction interaction = (Interaction) v.getTag();       data.putStringArrayList("images", interaction.images);       intent.putExtras(data);       mContext.startActivity(intent);     }   }      public interface PostListener {     void show(Interaction interaction);     void delete(Interaction interaction);     void play(Interaction interaction);   } 

          

多图片选择实现代码

MultipleActivity

package com.yzl.xyb.friends;  import java.io.File; import java.io.FilenameFilter; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List;  import android.app.Activity; import android.app.ProgressDialog; import android.content.ContentResolver; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.provider.MediaStore; import android.util.DisplayMetrics; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; import android.view.WindowManager; import android.widget.GridView; import android.widget.PopupWindow.OnDismissListener; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast;  import com.yzl.xyb.friends.adapter.MyAdapter; import com.yzl.xyb.friends.adapter.MyAdapter.SetCountListener; import com.yzl.xyb.friends.picture.ListImageDirPopupWindow; import com.yzl.xyb.friends.picture.ListImageDirPopupWindow.OnImageDirSelected; import com.yzl.xyb.friends.util.ImageFloder; /**  * 从相册选取图片  * 可以选择多张,最多可选9张  * 获取所有相册  * 确定:返回已选图片的路径  * @author hou  *  */ public class MultipleActivity extends Activity implements OnImageDirSelected, SetCountListener{   private TextView selectCount;   private TextView selectPicture;   private TextView mChooseDir;   private ProgressDialog mProgressDialog;   public static final int KITKAT_LESS = 2;   /**    * 存储文件夹中的图片数量    */   private int mPicsSize;   /**    * 图片数量最多的文件夹    */   private File mImgDir;   /**    * 所有的图片    */   private List<String> mImgs;   private ArrayList<String> pictures;    private GridView mGirdView;   private MyAdapter mAdapter;   /**    * 临时的辅助类,用于防止同一个文件夹的多次扫描    */   private HashSet<String> mDirPaths = new HashSet<String>();    /**    * 扫描拿到所有的图片文件夹    */   private List<ImageFloder> mImageFloders = new ArrayList<ImageFloder>();    private RelativeLayout mBottomLy;    int totalCount = 0;    private int mScreenHeight;    private ListImageDirPopupWindow mListImageDirPopupWindow;    private Handler mHandler = new Handler()   {     public void handleMessage(android.os.Message msg)     {       mProgressDialog.dismiss();       // 为View绑定数据       data2View();       // 初始化展示文件夹的popupWindw       initListDirPopupWindw();     }   };       @Override   protected void onCreate(Bundle savedInstanceState)   {     super.onCreate(savedInstanceState);     setContentView(R.layout.picture_selector);     getIntent().getExtras();     DisplayMetrics outMetrics = new DisplayMetrics();     getWindowManager().getDefaultDisplay().getMetrics(outMetrics);     mScreenHeight = outMetrics.heightPixels;      initView();     getImages();     initEvent();    }    /**    * 初始化View    */   private void initView()   {     mGirdView = (GridView) findViewById(R.id.id_gridView);     mChooseDir = (TextView) findViewById(R.id.id_choose_dir);     selectCount = (TextView) findViewById(R.id.tv_select_count); //   allPhotoAlum = (TextView) findViewById(R.id.tv_photoAlum);     selectPicture= (TextView) findViewById(R.id.tv_sure);     mBottomLy = (RelativeLayout) findViewById(R.id.id_bottom_ly);   }    private void initEvent()   {     /**      * 为底部的布局设置点击事件,弹出popupWindow      */     mBottomLy.setOnClickListener(new OnClickListener()     {       @Override       public void onClick(View v)       {         mListImageDirPopupWindow             .setAnimationStyle(R.style.anim_popup_dir);         mListImageDirPopupWindow.showAsDropDown(mBottomLy, 0, 0);          // 设置背景颜色变暗         WindowManager.LayoutParams lp = getWindow().getAttributes();         lp.alpha = .3f;         getWindow().setAttributes(lp);       }     });          selectPicture.setOnClickListener(new OnClickListener() {              @Override       public void onClick(View v) {         pictures=mAdapter.getSelectPath();         Log.i("选中的图片1>>>>>>",pictures.size()+"----------");         Intent intent=new Intent(); //       intent.setClass(MultipleActivity.this, CreatePostActivity.class);         Bundle bundle=new Bundle();         bundle.putStringArrayList("PICTURES", pictures);         intent.putExtras(bundle); //       startActivityForResult(intent, KITKAT_LESS);         setResult(KITKAT_LESS, intent);          finish();       }     });   }    /**    * 为View绑定数据    */   private void data2View()   {     if (mImgDir == null)     {       Toast.makeText(getApplicationContext(), "擦,一张图片没扫描到",           Toast.LENGTH_SHORT).show();       return;     }      mImgs = Arrays.asList(mImgDir.list());     /**      * 可以看到文件夹的路径和图片的路径分开保存,极大的减少了内存的消耗;      */     mAdapter = new MyAdapter(getApplicationContext(), mImgs,         R.layout.grid_item, mImgDir.getAbsolutePath());     mAdapter.setCountListener(this);     mGirdView.setAdapter(mAdapter); //   allPictureCount.setText("共"+totalCount + "张");   };    /**    * 初始化展示文件夹的popupWindw    */   private void initListDirPopupWindw()   {     mListImageDirPopupWindow = new ListImageDirPopupWindow(         LayoutParams.MATCH_PARENT, (int) (mScreenHeight * 1),         mImageFloders, LayoutInflater.from(getApplicationContext())             .inflate(R.layout.list_dir, null));      mListImageDirPopupWindow.setOnDismissListener(new OnDismissListener()     {        @Override       public void onDismiss()       {         // 设置背景颜色变暗         WindowManager.LayoutParams lp = getWindow().getAttributes();         lp.alpha = 1.0f;         getWindow().setAttributes(lp);       }     });     // 设置选择文件夹的回调     mListImageDirPopupWindow.setOnImageDirSelected(this);   }    /**    * 利用ContentProvider扫描手机中的图片,此方法在运行在子线程中 完成图片的扫描,最终获得jpg最多的那个文件夹    */   private void getImages()   {     if (!Environment.getExternalStorageState().equals(         Environment.MEDIA_MOUNTED))     {       Toast.makeText(this, "暂无外部存储", Toast.LENGTH_SHORT).show();       return;     }     // 显示进度条     mProgressDialog = ProgressDialog.show(this, null, "正在加载...");      new Thread(new Runnable()     {       @Override       public void run()       {          String firstImage = null;          Uri mImageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;         ContentResolver mContentResolver = MultipleActivity.this             .getContentResolver();          // 只查询jpeg和png的图片         Cursor mCursor = mContentResolver.query(mImageUri, null,             MediaStore.Images.Media.MIME_TYPE + "=? or "                 + MediaStore.Images.Media.MIME_TYPE + "=?",             new String[] { "image/jpeg", "image/png" },             MediaStore.Images.Media.DATE_MODIFIED);          Log.e("TAG", mCursor.getCount() + "");         while (mCursor.moveToNext())         {           // 获取图片的路径           String path = mCursor.getString(mCursor               .getColumnIndex(MediaStore.Images.Media.DATA));            Log.e("TAG", path);           // 拿到第一张图片的路径           if (firstImage == null)             firstImage = path;           // 获取该图片的父路径名           File parentFile = new File(path).getParentFile();           if (parentFile == null)             continue;           String dirPath = parentFile.getAbsolutePath();           ImageFloder imageFloder = null;           // 利用一个HashSet防止多次扫描同一个文件夹(不加这个判断,图片多起来还是相当恐怖的~~)           if (mDirPaths.contains(dirPath))           {             continue;           } else           {             mDirPaths.add(dirPath);             // 初始化imageFloder             imageFloder = new ImageFloder();             imageFloder.setDir(dirPath);             imageFloder.setFirstImagePath(path);           }            int picSize = parentFile.list(new FilenameFilter()           {             @Override             public boolean accept(File dir, String filename)             {               if (filename.endsWith(".jpg")                   || filename.endsWith(".png")                   || filename.endsWith(".jpeg"))                 return true;               return false;             }           }).length;           totalCount += picSize;            imageFloder.setCount(picSize);           mImageFloders.add(imageFloder);            if (picSize > mPicsSize)           {             mPicsSize = picSize;             mImgDir = parentFile;           }         }         mCursor.close();          // 扫描完成,辅助的HashSet也就可以释放内存了         mDirPaths = null;          // 通知Handler扫描图片完成         mHandler.sendEmptyMessage(0x110);        }     }).start();    }        @Override   public void selected(ImageFloder floder)   {      mImgDir = new File(floder.getDir());     mImgs = Arrays.asList(mImgDir.list(new FilenameFilter()     {       @Override       public boolean accept(File dir, String filename)       {         if (filename.endsWith(".jpg") || filename.endsWith(".png")             || filename.endsWith(".jpeg"))           return true;         return false;       }     }));     /**      * 可以看到文件夹的路径和图片的路径分开保存,极大的减少了内存的消耗;      */     mAdapter = new MyAdapter(getApplicationContext(), mImgs,         R.layout.grid_item, mImgDir.getAbsolutePath());     mAdapter.setCountListener(this);     mGirdView.setAdapter(mAdapter); //    mAdapter.notifyDataSetChanged(); //   mImageCount.setText(floder.getCount() + "张");     mChooseDir.setText(floder.getName());     selectCount.setText("/9");     mListImageDirPopupWindow.dismiss();    }    @Override   public void doCount(int a) {     selectCount.setText(a+"/9");   }     } 

                  

视频的录制与预览

package com.yzl.xyb.friends;   import android.annotation.SuppressLint; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.Button; import android.widget.Toast;  import com.yzl.xyb.friends.view.MovieRecorderView; import com.yzl.xyb.friends.view.MovieRecorderView.OnRecordFinishListener; /**  * 录制视频  * @author hou  *  */ public class RecorderActivity extends Activity {    private MovieRecorderView mRecorderView;   private Button mShootBtn;   private boolean isFinish = true;   private String userId = "";   @Override   protected void onCreate(Bundle savedInstanceState) {     // TODO Auto-generated method stub     super.onCreate(savedInstanceState);     setContentView(R.layout.record_activity); //   userId=getIntent().getParcelableExtra("userId");     mRecorderView = (MovieRecorderView) findViewById(R.id.movieRecorderView);     mShootBtn = (Button) findViewById(R.id.shoot_button);      mShootBtn.setOnTouchListener(new OnTouchListener() {        @Override        public boolean onTouch(View v, MotionEvent event) {         if (event.getAction() == MotionEvent.ACTION_DOWN) {           mRecorderView.record(new OnRecordFinishListener() {              @Override             public void onRecordFinish() {               Log.i("MotionEvent>>>","ACTION_DOWN");               handler.sendEmptyMessage(1);             }           });         } else if (event.getAction() == MotionEvent.ACTION_UP) {           Log.i("MotionEvent>>>","ACTION_UP");           if (mRecorderView.getTimeCount() > 1)             handler.sendEmptyMessage(1);           else {             if (mRecorderView.getmVecordFile() != null)               mRecorderView.getmVecordFile().delete();             mRecorderView.stop();             Toast.makeText(RecorderActivity.this, "时间太短,录制失败", Toast.LENGTH_SHORT).show();           }         }         return true;        }     });   }     @Override   public void onResume() {     super.onResume();     isFinish = true;   }    @Override   public void onSaveInstanceState(Bundle outState) {     super.onSaveInstanceState(outState);     isFinish = false;     mRecorderView.stop();   }    @Override   public void onPause() {     super.onPause();   }    @Override   public void onDestroy() {     super.onDestroy();   }    @SuppressLint("HandlerLeak")   private Handler handler = new Handler() {     @Override     public void handleMessage(Message msg) {       finishActivity();       Log.i("isFinish>>>",isFinish+"");     }   };    private void finishActivity() {     if (isFinish) {       mRecorderView.stop();              Intent intent = new Intent(RecorderActivity.this, TopicActivity.class);       Bundle mBundle = new Bundle();         mBundle.putString("path", mRecorderView.getmVecordFile().toString());         mBundle.putString("userId", userId);       intent.putExtras(mBundle);         startActivity(intent);      }    }     public interface OnShootCompletionListener {     public void OnShootSuccess(String path, int second);     public void OnShootFailure();   } } 

视频的预览

package com.yzl.xyb.friends;  import android.app.Activity; import android.media.AudioManager; import android.media.MediaPlayer; import android.os.Bundle; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageButton; import android.widget.ImageView;  public class RecorderPlayActivity extends Activity implements SurfaceHolder.Callback, OnClickListener {    private ImageView ivBack;   private ImageButton btnPlay;   private SurfaceView surfaceView;   private SurfaceHolder surfaceHolder;   private String path=null;   private MediaPlayer player;   private boolean play=false;      @SuppressWarnings("deprecation")   @Override   protected void onCreate(Bundle savedInstanceState) {     // TODO Auto-generated method stub     super.onCreate(savedInstanceState);     setContentView(R.layout.recorder_play);     ivBack=(ImageView) findViewById(R.id.iv_back);     btnPlay=(ImageButton) findViewById(R.id.ib_play);     surfaceView=(SurfaceView) findViewById(R.id.play_view);     btnPlay.setBackground(getResources().getDrawable(R.drawable.play1pressed));     path=this.getIntent().getStringExtra("path");     System.out.println("surface created>>>> path= "+path);     surfaceHolder=surfaceView.getHolder();     surfaceHolder.addCallback(this);     surfaceHolder.setFixedSize(320, 220);     surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);     System.out.println("oncreate--------------");     ivBack.setOnClickListener(this);     btnPlay.setOnClickListener(this);     surfaceView.setOnClickListener(this);   }       @Override   public void surfaceCreated(SurfaceHolder holder) {     player=new MediaPlayer();     player.setAudioStreamType(AudioManager.STREAM_MUSIC);     player.setDisplay(surfaceHolder);     try {       System.out.println("surface created>>>> path= "+path);       player.setDataSource(path);       player.prepare();     } catch (Exception e) {       e.printStackTrace();     }   }     @Override   public void surfaceChanged(SurfaceHolder holder, int format, int width,       int height) {     // TODO Auto-generated method stub        }     @Override   public void surfaceDestroyed(SurfaceHolder holder) {     // TODO Auto-generated method stub        }     @Override   public void onClick(View v) {     switch (v.getId()) {     case R.id.iv_back:       this.finish();       break;     case R.id.ib_play:       player.start();       btnPlay.setVisibility(View.GONE);       break;     case R.id.play_view:       player.pause();       /*if(play){         player.start();       }else {         player.pause();       }*/       btnPlay.setVisibility(View.VISIBLE);       break;      default:       break;     }   }      @Override   protected void onDestroy() {     // TODO Auto-generated method stub     super.onDestroy();     if(player.isPlaying())     {       player.stop();     }     player.release();   } } 

拥有一个属于自己的朋友圈是不是很开新,可以和好朋友随时随地分享,是不是很开心!

以上就是本文的全部内容,希望对大家学习Android软件编程有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表