实例介绍
【实例简介】口袋微博
【实例截图】

【核心代码】
package wyf.wpf;
import static wyf.wpf.ConstantUtil.IMAGESWITCHER_HEIGHT;
import static wyf.wpf.ConstantUtil.PHOTO_HEIGHT;
import static wyf.wpf.ConstantUtil.PHOTO_WIDTH;
import static wyf.wpf.ConstantUtil.SERVER_ADDRESS;
import static wyf.wpf.ConstantUtil.SERVER_PORT;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.opengl.Visibility;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.Gallery;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ViewSwitcher;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
public class AlbumActivity extends Activity implements ViewSwitcher.ViewFactory{
List<String []> photoInfoList = new ArrayList<String []>();
Bitmap [] photoList; //存放图片的数组
Gallery gl = null; //Gallery对象的引用
ImageSwitcher is = null; //ImageSwitcher对象的引用
Spinner sp = null; //Spinner对象的引用
MyConnector mc = null; //MyConnector对象的引用
String xid = ""; //存放相册的ID
String uno = ""; //存放用户ID
String visitor = ""; //存放访问者的ID
String pid = ""; //存放当前显示的照片ID
int from = -1; //启动该Activity的来源,0为MyAlbumListActivity,1为AlbumListActivity
List<String []> albumInfoList = new ArrayList<String []>(); //存放相册信息,id和相册名称
//Spinner的Adapter
BaseAdapter baSpinner = new BaseAdapter() {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView tv = new TextView(AlbumActivity.this);
tv.setTextSize(18.5f);
tv.setTextColor(Color.DKGRAY);
String [] sa = albumInfoList.get(position);
tv.setText(sa[1]);
return tv;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public int getCount() {
return albumInfoList.size();
}
};
//Gallery的Adapter
BaseAdapter baGallery= new BaseAdapter() {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView iv = new ImageView(AlbumActivity.this);
iv.setAdjustViewBounds(true);
iv.setLayoutParams(new Gallery.LayoutParams(PHOTO_WIDTH, PHOTO_HEIGHT));
iv.setMaxHeight(PHOTO_HEIGHT); //设置ImageView显示的高度
iv.setMaxWidth(PHOTO_WIDTH); //设置ImageView显示的宽度
iv.setImageBitmap(photoList[position]); //设置ImageView显示的内容
return iv;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public int getCount() {
if(photoList != null){
return photoList.length;
}
else{
return 0;
}
}
};
//点下Gallery中的图片后触发的事件监听器
OnItemClickListener myListener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position,
long id) {
if(is != null){ //如果ImageSwitcher不为空
Drawable d = new BitmapDrawable(photoList[position]);
is.setImageDrawable(d);
}
}
};
Handler myHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
switch(msg.what){
case 0:
gl.setAdapter(baGallery);
is.setImageDrawable(new BitmapDrawable(photoList[0]));
break;
}
super.handleMessage(msg);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.album); //设置当前屏幕
Intent intent = getIntent(); //获取启动该Activity的Intent
uno = intent.getStringExtra("uno"); //获得Extra字段的uno
visitor = intent.getStringExtra("visitor");
from = intent.getIntExtra("from", -1); //获得Extra字段的from
int position = intent.getIntExtra("position", 0); //获得被选中的相册
String [] albumInfoArray = intent.getStringArrayExtra("albumlist"); //获得相册信息数组
xid = intent.getStringExtra("xid"); //获得被选中的相册编号
albumInfoList = new ArrayList<String []>();
for(String s:albumInfoArray){ //遍历信息数组
String [] sa = s.split("\\|");
albumInfoList.add(sa); //构建相册信息列表
}
sp = (Spinner)findViewById(R.id.spAlbum); //获得Spinner对象
sp.setAdapter(baSpinner); //设置Spinner对象的Adapter
sp.setSelection(position); //选中在前一个Activity中被选中的相册
sp.setOnItemSelectedListener(new OnItemSelectedListener() { //为Spinner添加监听器
@Override
public void onItemSelected(AdapterView<?> parent, View v,
int position, long id) {
xid = albumInfoList.get(position)[0]; //修改存储相册ID的成员变量
getPhotoList(); //获得相册中的相片列表
}
@Override
public void onNothingSelected(AdapterView<?> parent) {}
});
gl = (Gallery)findViewById(R.id.galleryPhoto); //获得Gallery对象
gl.setOnItemClickListener(myListener); //设置Gallery的OnItemClickListener监听器
is = (ImageSwitcher)findViewById(R.id.isPhoto); //获得ImageSwitcher对象
is.setFactory(this); //设置ImageSwitcher的Factory
is.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in)); //设置ImageSwitcher的In动画
is.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));//设置ImageSwitcher的Out动画
Button btnBack = (Button)findViewById(R.id.btnAlbumBack); //获得返回按钮btnBack
btnBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
switch(from){ //判断启动该Activity的来源
case 0: //有MyAlbumListActivity启动
Intent intent1 = new Intent(AlbumActivity.this,FunctionTabActivity.class);
intent1.putExtra("uno", uno);
intent1.putExtra("tab", "tab5");
startActivity(intent1);
finish();
break;
case 1: //由AlbumListActivity启动
Intent intent2 = new Intent(AlbumActivity.this,HomePageActivity.class);
intent2.putExtra("uno", uno);
intent2.putExtra("visitor", visitor);
intent2.putExtra("tab", "tab2");
startActivity(intent2);
finish();
break;
}
}
});
Button btnDeletePhoto = (Button)findViewById(R.id.btnDeletePhoto);
if(visitor != null){ //不是查看自己的相册
btnDeletePhoto.setVisibility(View.GONE); //如果不是自己的相册,隐藏删除按钮
}
btnDeletePhoto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new AlertDialog.Builder(AlbumActivity.this)
.setTitle("提示")
.setIcon(R.drawable.alert_icon)
.setMessage("确认删除该照片?")
.setPositiveButton(
"确定",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
int pos = gl.getSelectedItemPosition();
pid = photoInfoList.get(pos)[0];
deletePhoto();
}
})
.setNegativeButton(
"取消",
null)
.show();
}
});
}
public void getPhotoList(){
new Thread(){
public void run(){
Looper.prepare();
try{
mc = null;
mc = new MyConnector(SERVER_ADDRESS, SERVER_PORT);
mc.dout.writeUTF("<#GET_ALBUM#>" xid);
int size = 0; //获得相册长度
size = mc.din.readInt(); //读取相册的长度
if(size == 0){
Toast.makeText(AlbumActivity.this, "该相册还未上传照片", Toast.LENGTH_LONG).show();
Looper.loop();
return;
}
photoInfoList = new ArrayList<String []>(size);
photoList = new Bitmap[size];
for(int i=0;i<size;i ){ //循环获取图片数据
String photoInfo = mc.din.readUTF(); //读取相片信息
String [] sa = photoInfo.split("\\|"); //切割字符串
photoInfoList.add(sa); //将相片信息添加到列表中
int photoLength = mc.din.readInt(); //读取相片长度
byte [] buf = new byte[photoLength]; //创建相应长度的数组
mc.din.read(buf); //读入图片数据
photoList[i] = BitmapFactory.decodeByteArray(buf, 0, photoLength); //创建Bitmap
}
myHandler.sendEmptyMessage(0);
}catch(Exception e){
e.printStackTrace();
}
}
}.start();
}
//方法:删除指定照片
public void deletePhoto(){
new Thread(){
public void run(){
Looper.prepare();
try{
if(mc ==null){
mc = new MyConnector(SERVER_ADDRESS, SERVER_PORT);
}
String msg = "<#DELETE_PHOTO#>" pid;
mc.dout.writeUTF(msg);
String reply = mc.din.readUTF();
if(reply.equals("<#DELETE_PHOTO_SUCCESS#>")){
Toast.makeText(AlbumActivity.this, "照片删除成功!", Toast.LENGTH_LONG).show();
}
else {
Toast.makeText(AlbumActivity.this, "删除失败,请重试!", Toast.LENGTH_LONG).show();
}
getPhotoList();
Looper.loop();
}catch(Exception e){
e.printStackTrace();
}
}
}.start();
}
@Override
public View makeView() {
ImageView iv = new ImageView(this);
iv.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
iv.setLayoutParams(new ImageSwitcher.LayoutParams(IMAGESWITCHER_HEIGHT,IMAGESWITCHER_HEIGHT));
return iv;
}
@Override
protected void onDestroy() {
if(mc != null){
mc.sayBye();
mc = null;
}
super.onDestroy();
}
}
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论