实现了获取用户主页微博之后,我们还需要实现查看详细微博的功能。除微博常见的属性外,如果微博中包含图片,还要实现浏览大图的功能。同时我们还需要实现转发,评论等功能!今天我们就来实现上述功能。

详细微博:

                    

用户点击一个微博Item从微博主页跳转到微博详细页,跳转的过程中我们要把微博(Status)数据传递到Activity中,在listview的setOnItemClickListener方法中添加如下代码:

Bundle bundle = new Bundle();
Status status = listStatus.get(position);
bundle.putSerializable("status", status);
Intent intent = new Intent(HomeActivity.this, StatusDetail.class);  //查看详细微博
intent.putExtras(bundle);
startActivity(intent);

跳转到StatusDetail类中,我们可以使用getIntent()来获取微博数据(Status)。代码如下:

Status status = (Status) getIntent().getSerializableExtra("status");

获取到微博数据之后就简单了。

接下来我们要实现,转发的功能,只需要为转发按钮设置一个监听器然后调用weibo.retweetStatus(status.getId())方法即可,需要设置参数status_id:要转发的微博Id。

发表评论与发表微博功能基本类似,这里不再详细介绍了,如有疑问可参考我的博文:新浪微博开发之发表微博功能的实现。

下面介绍实现浏览大图的功能:

有了微博数据,我们就可以获取大图的地址status.getOriginal_pic();即原图片地址。这里我使用了对话框的形式,新建一个Dialog将试图view设置为图片就可以了。代码如下:

                String imageUrl = status.getOriginal_pic();if(!"".equals(imageUrl)){          //如果微博中包含图片this.findViewById(R.id.scale_layout).setVisibility(View.VISIBLE);scaleImage = (ImageButton) findViewById(R.id.scale_btn);scaleImage.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {showOriginalImage(imageUrl);     //放大图片}});setImage(imageUrl, picture); picture.setVisibility(View.VISIBLE);}

需要注意的是一定要先检查微博中是否包含图片,否则会报异常!

showOriginalImage(imageUrl)方法代码:

/*** 显示大图* @param imageUrl*             图片地址*/private void showOriginalImage(String imageUrl) {View view = View.inflate(StatusDetail.this, R.layout.show_original_image, null);final AlertDialog dialog = new AlertDialog.Builder(StatusDetail.this).setView(view).create();dialog.show();ImageButton close = (ImageButton) view.findViewById(R.id.close_btn);    //关闭查看大图窗口close.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {dialog.dismiss();  }});ImageView image = (ImageView) view.findViewById(R.id.originalImage);setImage(imageUrl, image);   //设置大图}

整体的过程大致就是这样,效果图如下:

详细代码如下:

package com.cloay.weibo.ui;import weibo4android.Comment;
import weibo4android.Status;
import weibo4android.Weibo;
import weibo4android.WeiboException;
import android.app.AlertDialog;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;import com.cloay.weibo.R;
import com.cloay.weibo.WeiBoActivity;
import com.cloay.weibo.constants.OAuthConstant;
import com.cloay.weibo.service.MainService;
import com.cloay.weibo.utils.AsyncBitMapLoader;
import com.cloay.weibo.utils.AsyncBitMapLoader.ImageCallback;
import com.cloay.weibo.utils.AlertDlgUtil;
import com.cloay.weibo.utils.CheckNetUtil;
import com.cloay.weibo.utils.TextHightUtil;
import com.cloay.weibo.utils.TimeUtil;
import com.cloay.weibo.utils.ToastUtil;/*** 微博详细信息* 可以进行转发,评论查看大图等* @author Cloay* 2012-2-30* 下午03:31:18*/
public class StatusDetail extends WeiBoActivity{private Weibo weibo = OAuthConstant.getInstance().getWeibo();  private ImageButton redirect;    //右侧转发按钮private ImageView user_icon;     //用户头像private TextView user_name;      //用户昵称private TextView time;         //微博发表时间private TextView status_text;  //微博内容private ImageView picture;    //微博图片private EditText comment_text;  //评论内容private Button commentBtn;     //评论按钮private ImageButton scaleImage;   //查看大图按钮@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);   //去掉系统标题栏MainService.allActivity.add(this);setContentView(R.layout.detail_status);//不让输入法自动弹出getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);final Status status = (Status) getIntent().getSerializableExtra("status");redirect = (ImageButton) findViewById(R.id.title_bt_right);redirect.setOnClickListener(new OnClickListener() {   //转发微博@Overridepublic void onClick(View v) {try {Status reStatus = weibo.retweetStatus(status.getId());if(!"".equals(reStatus.getText())){ToastUtil.showToast(StatusDetail.this, "转发成功!");}} catch (WeiboException e) {ToastUtil.showToast(StatusDetail.this, "转发失败!");}}});initStatus(status);   //初始化微博内容initComment(status);   //评论}/*** 初始化微博内容* @param status*/private void initStatus(final Status status) {user_icon = (ImageView) findViewById(R.id.user_logo);setImage(status.getUser().getProfileImageUrl(), user_icon);  //设置用户头像user_name = (TextView) findViewById(R.id.user_name);user_name.setText(TextHightUtil.setTextHight(status.getUser().getName())); //设置用户昵称并高亮显示time = (TextView) findViewById(R.id.time);time.setText(TimeUtil.getCreateAt(status.getCreatedAt()));    //设置微博发表时间status_text = (TextView) findViewById(R.id.status_content);   //微博内容String statusStr = status.getText();if(null != status.getRetweeted_status()){   //如果包含转发的内容statusStr += status.getRetweeted_status().getText();}TextHightUtil.textHighlight(statusStr, status_text);    //设置微博内容picture = (ImageView) findViewById(R.id.picture);final String imageUrl = status.getOriginal_pic();if(!"".equals(imageUrl)){            //如果微博中包含图片this.findViewById(R.id.scale_layout).setVisibility(View.VISIBLE);scaleImage = (ImageButton) findViewById(R.id.scale_btn);scaleImage.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {showOriginalImage(imageUrl);     //放大图片}});setImage(imageUrl, picture); picture.setVisibility(View.VISIBLE);}}/*** 显示大图* @param imageUrl*             图片地址*/private void showOriginalImage(String imageUrl) {View view = View.inflate(StatusDetail.this, R.layout.show_original_image, null);final AlertDialog dialog = new AlertDialog.Builder(StatusDetail.this).setView(view).create();dialog.show();ImageButton close = (ImageButton) view.findViewById(R.id.close_btn);    //关闭查看大图窗口close.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {dialog.dismiss();  }});ImageView image = (ImageView) view.findViewById(R.id.originalImage);setImage(imageUrl, image);   //设置大图}/*** 发表评论* @param status*/private void initComment(final Status status) {comment_text = (EditText) findViewById(R.id.comment_edit_text);commentBtn = (Button) findViewById(R.id.comment_status_btn);commentBtn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {updateComment(status);}});}/*** 发布微博* 微博内容不能为空且字数小于140*/private void updateComment(Status status) {String commentText = comment_text.getText().toString();if("".equals(commentText)){  //微博内容不能为空且字数小于140.ToastUtil.showToast(StatusDetail.this, "评论内容不能为空!");//  为空时提示}else{if(commentText.length() > 140){ToastUtil.showToast(this, "字数不能多于140!");  //大于140个字符时}if(CheckNetUtil.checkNet(StatusDetail.this)){  //检查网络是否可用try {Comment comment = weibo.updateComment(commentText, ""+status.getId(), "");if(!"".equals(comment.getText())){ToastUtil.showToast(StatusDetail.this, "评论成功!");}} catch (WeiboException e) {ToastUtil.showToast(StatusDetail.this, "评论失败!");}}else{AlertDlgUtil.alertDialogNetErr(StatusDetail.this);}}}/*** 异步获取图片并设置* @param imageUrl* @param image*/private void setImage(String imageUrl, final ImageView image) {AsyncBitMapLoader asyncBitMapLoader = new AsyncBitMapLoader();asyncBitMapLoader.loadBitMap(imageUrl, new ImageCallback() {@Overridepublic void imageLoaded(Bitmap bitmap, String imageUrl) {image.setImageBitmap(bitmap);}});}}

该注释的地方都注释了,不再多说了!有问题请留言,大家一起学习交流!

说明:转载请注明出处!

新浪微博开发之查看详细微博的实现相关推荐

  1. 新浪微博开发之微博主页的实现

    用户使用已授权用户登录成功之后,我们就可以获取微博了.微博主页既是用户登录新浪微博时看到的内容,即自己关注用户的微博内容.我们可使用SDK中Weibo的getHomeTimeline()方法,该方法通 ...

  2. JS实现仿新浪微博大厅和腾讯微博首页滚动效果_前端开发

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  3. 经验分享:查看手机微博二维码名片方法

    分享一个和技术开发无关的经验,但是对手机微博不熟悉的话,这个经验还是很有作用的,就是通过手机微博查看个人的微博二维码.感觉微博二维码完全是照搬照抄微信二维码来弄的,微博二维码和微信二维码的作用类似,就 ...

  4. 基于JavaWeb 开发和实现一个微博系统【100010104】

    JavaWeb 微博系统 一.设计要求: 使用 JavaWeb 开发和实现一个微博系统,可参考新浪微博,要求具备微博的基本功能: 1)注册.登录和注销等功能: 2)发布信息,如:文字.图片: 3)用户 ...

  5. 新浪微博开发平台基于php的sdk包(包含demo程序),新浪微博API开发简介之用户授权(PHP基础篇)...

    现在玩微博的人越来越多了,而关于微博的第三方应用开发也越来越多,自己在偶然间开始接触了新浪微博API开发,新浪微博API开发的资源比较多,新浪微博提供了一个开发者的平台,网址是:http://open ...

  6. linux python2.7安装教程_Linux中RedHat下安装Python2.7开发环境的详细教程-学派吧-

    这篇文章主要为大家详细介绍了Linux RedHat下安装Python2.7.pip.ipython环境.eclipse和PyDev环境,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 Linux ...

  7. 用VS2015开发Linux程序详细教程-配置篇

    VS2015推出了跨平台开发,其中包括了对Linux程序开发的支持,最近刚好需要开发Linux程序,对其进行了一些研究. 首先介绍下涉及到的开发工具 开发工具 VS2015Update3,下文简称VS ...

  8. 新浪微博开发平台基于php的sdk包(包含demo程序),新浪微博API开发教程(一)-体验篇...

    现在新浪微博开放平台(http://open.weibo.com)非常火啊,所以...,你懂的! 首先,想要开发新浪微博API,你就必须获取APP KEY和APP SECRET,我毫不犹豫的就用新浪微 ...

  9. 新浪微博开发(五)AppList界面

    这是客户端开发部分很重要的一个类,但是在开发之前需要用到有关GridView的知识. 若要临时充充电,请移步:GridView(九宫图)的使用介绍. 下面是AppList类的代码: /* * 用来显示 ...

最新文章

  1. php7 curl_init(),php7.3-curl_init获取301、302跳转后的数据
  2. Cloud for Customer的mobile setting前台实现
  3. 多线程—并发容器与机制
  4. linux shell 引号 参数,shell(三)变量,基本语法,单双引号
  5. 什么是mysql显错注入_十种MYSQL显错注入原理讲解(三)
  6. [POI2009]石子游戏Kam
  7. Denise God Mode for mac(磁带饱和器音频插件)
  8. 搜索框 UISearchBar的取消按钮改为中文
  9. 最常用的PHP正则表达式收集整理
  10. 罗技 连点 脚本_罗技G933S无线游戏耳机评测
  11. c语言实例100_pic单片机,PIC单片机C语言编程实例
  12. 大数据经典案例与谬误
  13. RPG游戏制作:(1)自定义角色
  14. 网吧台式计算机配置,2017网吧电脑配置
  15. 【SEED Lab】ARP Cache Poisoning Attack Lab
  16. 穿西服和穿皮鞋有那些讲究?
  17. 江南计算机研究所招聘物联网学院,江南大学:物联网工程学院培育物联网精英人才...
  18. 一键自动生成字幕、制作双语字幕,懒人必备
  19. 关于输入法,想说点什么了
  20. 数据异常检测方法以及实际应用

热门文章

  1. JS项目—电子时钟的设计与实现
  2. 抓住那头牛(POJ NO.2971)
  3. 【Android】01---界面布局
  4. 从 12.67s 到 1.06s 的网站性能优化实战
  5. 我司发哈根达斯,就很人性化
  6. C语言--memset结构体初始化
  7. Go结构体初始化的几种方式
  8. IE8浏览器的访问网页显示证书错误的解决方法
  9. java 火龙劫,火龙畅想圆满完成 最终结果即将揭晓
  10. python Django之 DRF(一)框架介绍、源码分析