访微信语音聊天
package com.alva.vcd;
import java.util.ArrayList;
import java.util.List;
import com.alva.vcd.adapter.RecorderAdapter;
import com.alva.vcd.pojo.Recorder;
import com.alva.vcd.view.AudioRecorderButton;
import com.alva.vcd.view.AudioRecorderButton.AudioFinishRecorderListener;
import com.alva.vcd.view.MediaManager;
import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.graphics.drawable.AnimationDrawable;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.FrameLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.os.Build;
public class MainActivity extends Activity implements
AudioFinishRecorderListener, OnItemClickListener {
private ListView mListview;
private AudioRecorderButton mAudioButton;
private ArrayAdapter<Recorder> mAdapter;
private List<Recorder> mDatas = new ArrayList<Recorder>();;
private View mAnimView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chat);
initViews();
initDatas();
initEvents();
}
private void initViews() {
mListview = (ListView) findViewById(R.id.listview_chat);
mAudioButton = (AudioRecorderButton) findViewById(R.id.recorderButton);
}
private void initDatas() {
mAudioButton.setAudioFinishRecorderListener(this);
mAdapter = new RecorderAdapter(getApplicationContext(), mDatas);
mListview.setAdapter(mAdapter);
}
private void initEvents() {
mListview.setOnItemClickListener(this);
}
@Override
public void onFinsh(float seconds, String filePath) {
Recorder mRecorder = new Recorder();
mRecorder.setFilePath(filePath);
mRecorder.setTime(seconds);
mDatas.add(mRecorder);
mAdapter.notifyDataSetChanged();
mListview.setSelection(mDatas.size() - 1);
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
Log.e("MediaManager", mDatas.get(arg2).getFilePath() + "sssss");
if (mAnimView != null) {
mAnimView.setBackgroundResource(R.drawable.adj);
mAnimView = null;
}
// 播放动画
mAnimView = arg1.findViewById(R.id.id_view);
mAnimView.setBackgroundResource(R.drawable.play_anim);
AnimationDrawable anim = (AnimationDrawable) mAnimView.getBackground();
anim.start();
// 播放音频
MediaManager.playSound(mDatas.get(arg2).getFilePath(),
new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer arg0) {
mAnimView.setBackgroundResource(R.drawable.adj);
}
});
}
@Override
protected void onPause() {
super.onPause();
MediaManager.pause();
}
@Override
protected void onResume() {
super.onResume();
MediaManager.resume();
}
@Override
protected void onDestroy() {
super.onDestroy();
MediaManager.release();
}
}
Android 柱状图
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initData();
LinearLayout layout = (LinearLayout) findViewById(R.id.rela);
layout.setGravity(Gravity.CENTER);
LinearLayout.LayoutParams pm = new LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT, 300);
zxView = new ZXView(this, xlist, ylist, params);
zxView.setLayoutParams(pm);
layout.addView(zxView);
}
Android 手绘折线图
package com.example.linchartdemo.view;
import java.util.List;
import android.R.color;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
public class ZXView extends View {
private List<Integer> xlist;// X坐标标签
private List<Integer> ylist;// Y坐标标签
private List<Integer> params;// 参数集合
private Paint paint;
private Paint paintLines;
private Paint paintArc;
private Paint paintText;
private int textsize = 20;
private float Xoffset = 0;// X轴偏移或叫间隔
private float Yoffset = 0;// Y轴偏移或叫间隔
public float XSpac = 50;
public float Xspac = 50;
public float YSpac = 50;
public float rightXspac = 50;
public float rightYspac = 50;
public float circleRadius = 10;
private float lastX = -1;
private float lastY = -1;
public ZXView(Context context, List<Integer> xlists, List<Integer> ylists,
List<Integer> paramss) {
super(context);
xlist = xlists;
ylist = ylists;
params = paramss;
initWidget();
}
public ZXView(Context context, AttributeSet attrs) {
super(context, attrs);
initWidget();
}
public ZXView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initWidget();
}
public void initViewData(List<Integer> xlists, List<Integer> ylists,
List<Integer> paramss) {
xlist = xlists;
ylist = ylists;
params = paramss;
}
@Override
protected void onDraw(Canvas canvas) {
drawXY(canvas);
drawLine(canvas);
super.onDraw(canvas);
}
public void updataUI() {
invalidate();
}
/**
* 画折线
*
* @param canvas
*/
private void drawLine(Canvas canvas) {
Xoffset = ((getWidth()) - 20) / (xlist.size());
Yoffset = (getHeight()) / (ylist.size());
Log.i("texts", "X=" + Xoffset + "Y=" + Yoffset);
float rulerOffset = 0;
if (xlist.size() < 2)
throw new IllegalArgumentException("the params argument is <2");
else
rulerOffset = (xlist.get(1) - xlist.get(0));
if (params == null && params.size() <= 0)
throw new IllegalArgumentException("the params is null or 0");
// Paint p = new Paint();
// p.setAntiAlias(true);
// p.setTextSize(25);
// p.setColor(Color.WHITE);
// canvas.drawText("KW", 10 + Xoffset, 20, p);
for (int i = 0; i < params.size(); i++) {
int param = params.get(i);
float histigramHight = param * (Yoffset / rulerOffset);
float currentX = (Xoffset * i + Xspac + 5);
float currentY = (getHeight() - YSpac - histigramHight);
canvas.drawCircle(currentX, currentY, circleRadius, paintArc);
if (lastX != -1) {
canvas.drawLine(lastX, lastY, currentX, currentY, paintLines);
}
lastX = currentX;
lastY = currentY;
}
// 重置lastX跟Y
lastX = -1;
lastY = -1;
}
/**
* 画坐标轴
*
* @param canvas
*/
private void drawXY(Canvas canvas) {
canvas.drawLine(XSpac, 0, XSpac, getHeight() - 5 - XSpac, paint);// x
canvas.drawLine(XSpac, getHeight() - XSpac, getWidth(), getHeight()
- XSpac, paint);// y
canvas.drawLine(getWidth(), 0, getWidth() - 1, getWidth() - YSpac,
paint);// 右边Y
float yoffset = getHeight() / ylist.size();
float xoffset = (getWidth() - XSpac) / xlist.size();
// 画字
for (int i = 0; i < ylist.size(); i++) {
canvas.drawText(ylist.get(i) + "", 0, getHeight() - yoffset * i
- YSpac, paintText);
}
for (int i = 0; i < xlist.size(); i++) {
canvas.drawText(xlist.get(i) + "", XSpac + xoffset * i, getHeight()
- YSpac + textsize, paintText);
}
// for (int i = 0; i < ylist.size(); i++) {
// for (int j = 0; j < 50; j++) {
// canvas.drawLine(XSpac + j * 303, yoffset * i - YSpac, XSpac + j
// * 30 + 20, yoffset * i - YSpac, paint);
// }
// }
}
/**
* 初始化画笔
*/
private void initWidget() {
paint = new Paint();
paint.setColor(Color.parseColor("#999999"));
paint.setTypeface(Typeface.DEFAULT);
paint.setAntiAlias(true);
paint.setStrokeWidth(2);
paintLines = new Paint();
paintLines.setColor(Color.parseColor("#00B4EA"));
paintLines.setTypeface(Typeface.DEFAULT);
paintLines.setAntiAlias(true);
paintLines.setStrokeWidth(3);
paintArc = new Paint();
paintArc.setColor(Color.parseColor("#EBEEEF"));
paintArc.setTypeface(Typeface.DEFAULT);
paintArc.setAntiAlias(true);
paintArc.setStrokeWidth(2);
paintText = new Paint();
// paintText.setColor(Color.parseColor("#ffffff"));
paintText.setTypeface(Typeface.DEFAULT);
paintText.setAntiAlias(true);
paintText.setStrokeWidth(2);
paintText.setTextSize(textsize);
}
}