通过前面一篇,“我的”页面的后台就搭建完整了,接下来就继续处理一下Android端下“我的”页面剩余还未完成的功能——修改密码、查看我的分享、查看我的日记、查看我的收藏、查看iShare相关
1.修改密码的页面设计——activity_change_password.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="#eeeeee">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="70dp"
android:background="@color/color_minefragment_top"
>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAlignment="center"
android:text="修改密码"
android:textColor="#fff"
android:textSize="20dp"
android:layout_centerVertical="true"
android:layout_marginLeft="20dp"
/>
</RelativeLayout>
<LinearLayout
android:id="@+id/password_change_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginTop="120dp"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="旧 密 码:"
android:textSize="@dimen/textSize_normal"/>
<EditText
android:id="@+id/et_old_login_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/textSize_normal"
android:inputType="textPassword"
android:hint="这里填写旧密码"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="12dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="@dimen/textSize_normal"
android:text="新 密 码:"/>
<EditText
android:id="@+id/et_new_login_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/textSize_normal"
android:inputType="textPassword"
android:hint="这里填写新密码"/>
</LinearLayout>
</LinearLayout>
<Button
android:id="@+id/bt_change_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/password_change_layout"
android:layout_marginTop="20dp"
android:layout_marginLeft="150dp"
android:layout_marginRight="150dp"
android:background="@drawable/selector_loginactivity_button"
android:text="修改"
android:textColor="#fff"
android:gravity="center"
android:onClick="onClick"
/>
<TextView
android:id="@+id/bt_changePassword_view_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginVertical="30dp"
android:text="信息反馈"
android:textColor="#B3B3B3"
android:gravity="center"
/>
</RelativeLayout>
2.修改密码页面的逻辑
- 在之前创建好的com.example.discover包中创建class命名为ChangePassword.java
- 在AndroidManifest.xml中添加配置:
<activity android:name=".ChangePassword"
android:label="更改密码">
</activity>
- ChangePassword.java文件处理的逻辑就是获取到用户的昵称、用户输入的旧密码、用户输入的新密码,然后请求已经创建好的servlet——ChangePassword,然后得到是否修改成功的返回信息,ChangePassword.java文件具体代码如下
package com.example.discover;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class ChangePassword extends Activity {
EditText old_pass_et; //旧密码
EditText new_pass_et; //新密码
Button sure_change_pass; //确定修改
String baseUrl = "http://10.0.2.2:8080/iShareService/servlet/"; //web服务器的地址
String imgBaseUrl = "http://10.0.2.2:8080/iShareService/images/"; //图片资源
String userName,oldPass,newPass; //存放用户基本信息
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_change_password);
old_pass_et = (EditText) findViewById(R.id.et_old_login_password); //新密码
new_pass_et = (EditText) findViewById(R.id.et_new_login_password); //新密码
sure_change_pass = (Button)findViewById(R.id.bt_change_password) ;//确定修改密码的按钮
setBaseInfo();
sure_change_pass.setOnClickListener(new ChangePassword.onClick());
}
class onClick implements View.OnClickListener {
@Override
public void onClick(View v) {
oldPass = old_pass_et.getText().toString();
newPass = new_pass_et.getText().toString();
StringBuilder stringBuilder = new StringBuilder();
BufferedReader buffer = null;
HttpURLConnection connGET = null;
if(oldPass.length()==0||newPass.length()==0){
Toast.makeText(ChangePassword.this, "密码不能为空", Toast.LENGTH_LONG).show();
return;
}
try {
String registerUrl = baseUrl+"ChangePassword?oldPass="+oldPass+"&newPass="+newPass+"&username="+userName;
URL url = new URL(registerUrl);
connGET = (HttpURLConnection) url.openConnection();
connGET.setConnectTimeout(5000);
connGET.setRequestMethod("GET");
if (connGET.getResponseCode() == 200) {
buffer = new BufferedReader(new InputStreamReader(connGET.getInputStream()));
for (String s = buffer.readLine(); s != null; s = buffer.readLine()) {
stringBuilder.append(s);
}
Toast.makeText(ChangePassword.this, stringBuilder.toString(), Toast.LENGTH_LONG).show();
//通过handler设置延时1秒后执行r任务,跳转到我的页面
new Handler().postDelayed(new ChangePassword.LoadMainTask(),500);
buffer.close();
}else{
Toast.makeText(ChangePassword.this,"非200.."+connGET.getResponseCode() , Toast.LENGTH_LONG).show();
}
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(ChangePassword.this, "get 提交 err.." + e.toString(), Toast.LENGTH_LONG).show();
}
}
}
//启动线程,加载我的页面
private class LoadMainTask implements Runnable{
@Override
public void run() {
Intent intent = new Intent(ChangePassword.this,MyTabFragment.class);
/*startActivity(intent);*/
setResult(2, intent); //这里的2就对应到onActivityResult()方法中的resultCode
finish();
}
}
//获取用户信息
public void setBaseInfo(){
//获取最新的登录状态,SharePreferences为永久存储,需要手动退出
SharedPreferences sp = ChangePassword.this.getSharedPreferences("save", Context.MODE_PRIVATE);
userName = sp.getString("name","");
}
}
3.我的分享、我的日记、我的收藏 页面设计
- 这三个功能按钮都是跳转到的页面其实是同一个,只不过内容获取是不一样的,所以在这里只需要写一个详情页就可以了
- 在layout下新建activity_about_me.xml文件,在该布局下就只需要要一个ListView就可以了,详细代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:orientation="vertical"
android:paddingTop="20dp"
android:paddingBottom="20dp">
<ListView
android:id="@+id/my_share_listView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:dividerHeight="15dp" />
</LinearLayout>
</LinearLayout>
4.我的分享、我的日记、我的收藏 页面的逻辑
- 在已经创建好的com.example.discover包中创建class——MyShareList.java
- 因为是跳转页面,所以在AndroidMainifest.xml中要添加配置
<activity android:name=".MyShareList"
android:label="关于我的">
</activity>
- 该文件处理的主要部分就是,获取到上一个页面传递的type(用于判断请求的是我的分享、我的日记还是我的收藏),然后获取到该用户的昵称,通过这两个参数请求后台的servlet——QueryAboutMe.java,返回相对应类型的内容,MyShareList.java具体代码如下:
package com.example.discover;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Handler;
import android.os.StrictMode;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.example.bean.FindInfo;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ScheduledExecutorService;
public class MyShareList extends Activity implements AbsListView.OnScrollListener{
Activity mActivity; //存放当前的activity
String baseUrl = "http://10.0.2.2:8080/iShareService/servlet/"; //web服务器的地址
String imgBaseUrl = "http://10.0.2.2:8080/iShareService/images/"; //图片资源
int requestType=0; //请求类型,0:我的分享、1:我的日记;2:我的收藏
String userName="";
String requestUrl="";
private TextView title;
private MyShareList.PaginationAdapter adapterAction;
private ScheduledExecutorService scheduledExecutorService;
private ListView listView;
private int page = 1; //请求页数
private int count = 10; //每次请求的数量
private int visibleLastIndex = 0; //最后的可视项索引
private int visibleItemCount; // 当前窗口可见项总数
private int dataSize = 28; //数据集的条数
private MyShareList.PaginationAdapter adapter;
private View loadMoreView;
private Button loadMoreButton;
private Handler handler = new Handler();
//返回测试信息
/*TextView testTxt;*/
public void refreshDiscover(){
page = 1;
visibleLastIndex = 0;
listView.setAdapter(null); //将ListView控件的内容清空
initializeAdapter();
listView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_about_me);
mActivity = MyShareList.this;
//取得启动该Activity的Intent对象
Intent intent =getIntent();
//获取最新的登录状态,SharePreferences为永久存储,需要手动退出
SharedPreferences sp = MyShareList.this.getSharedPreferences("save", Context.MODE_PRIVATE);
userName = sp.getString("name","");
requestType =intent.getIntExtra("requestType",0);
//取出Intent中附加的数据
if(requestType==0){
requestUrl = baseUrl+"QueryAboutMe?username="+userName+"&type=0&page="+page+"&count="+count;
}else if(requestType==1){
requestUrl = baseUrl+"QueryAboutMe?username="+userName+"&type=1&page="+page+"&count="+count;
}else{
requestUrl = baseUrl+"QueryAboutMe?username="+userName+"&type=2&page="+page+"&count="+count;
}
loadMoreView = getLayoutInflater().inflate(R.layout.activity_find_loadmore, null);
loadMoreButton = (Button)loadMoreView.findViewById(R.id.loadMoreButton);
loadMoreButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
loadMoreButton.setText("正在加载中..."); //设置按钮文字
handler.postDelayed(new Runnable() {
@Override
public void run() {
loadMoreData();
adapter.notifyDataSetChanged();
loadMoreButton.setText("查看更多..."); //恢复按钮文字
}
},2000);
}
});
//返回测试信息
/* testTxt = (TextView)getActivity().findViewById(R.id.test_discover_tab);*/
listView = (ListView)findViewById(R.id.my_share_listView);
listView.addFooterView(loadMoreView); //设置列表底部视图
initializeAdapter();
listView.setAdapter(adapter);
listView.setOnScrollListener(this);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
TextView getTvId = (TextView)view.findViewById(R.id.cardId);
/*Toast.makeText(mActivity,"点击了"+getTvId.getText().toString()+"id", Toast.LENGTH_SHORT).show();*/
SharedPreferences sp = mActivity.getSharedPreferences("save", Context.MODE_PRIVATE);
Boolean isLogin = sp.getBoolean("isLogin",false);
if(isLogin){
//点击了进入详情
Intent display_info_intent = new Intent();
display_info_intent.setClass(mActivity, DisplayDetail.class); //创建intent对象,并制定跳转页面
display_info_intent.putExtra("infoId",getTvId.getText().toString());
mActivity.setResult(1, display_info_intent); //这里的1就对应到onActivityResult()方法中的resultCode
startActivity(display_info_intent); //跳转到详情页面
}else{
//尚未登录
Toast.makeText(MyShareList.this,"请先登录", Toast.LENGTH_LONG).show();
}
}
});
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
int itemsLastIndex = adapter.getCount()-1; //数据集最后一项的索引
int lastIndex = itemsLastIndex + 1;
if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE
&& visibleLastIndex == lastIndex) {
// 如果是自动加载,可以在这里放置异步加载数据的代码
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
this.visibleItemCount = visibleItemCount;
visibleLastIndex = firstVisibleItem + visibleItemCount - 1; //最后的可视项索引
//如果所有的记录选项等于数据集的条数,则移除列表底部视图
if(totalItemCount == dataSize+1){
listView.removeFooterView(loadMoreView);
Toast.makeText(MyShareList.this, "数据全部加载完!", Toast.LENGTH_LONG).show();
}
}
/**
* 查询数据库中的数据
*/
private JSONArray loadDataFromDataBase(String loadDataUrl){
StringBuilder stringBuilder = new StringBuilder();
BufferedReader buffer = null;
HttpURLConnection connGET = null;
try {
URL url = new URL(loadDataUrl);
connGET = (HttpURLConnection) url.openConnection();
connGET.setConnectTimeout(5000);
connGET.setRequestMethod("GET");
if (connGET.getResponseCode() == 200) {
buffer = new BufferedReader(new InputStreamReader(connGET.getInputStream()));
for (String s = buffer.readLine(); s != null; s = buffer.readLine()) {
stringBuilder.append(s);
}
if(stringBuilder.toString()!="null"){
//返回测试信息
JSONArray jsonArray = new JSONArray(stringBuilder.toString());
//获取到的数据,对Json进行解析
page = page+1; //一次成功请求后更新请求页面
buffer.close();
return jsonArray;
}else{
return null;
}
}else{
Toast.makeText(MyShareList.this,"非200", Toast.LENGTH_LONG).show();
}
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(MyShareList.this, "get 提交 err.." + e.toString(), Toast.LENGTH_LONG).show();
}
return null;
}
//初始化将详情设置到FindInfo bean中
public List<FindInfo> initSetDataToBean(String detail){
List<FindInfo> findInfo = new ArrayList<FindInfo>();
try {
JSONArray detailJsonArray = new JSONArray(detail);
for (int i = 0; i < detailJsonArray.length(); i++) {
FindInfo items = new FindInfo();
JSONObject temp = (JSONObject) detailJsonArray.get(i);
Integer infoId = temp.getInt("infoId"); //内容ID
String infoTitle = temp.getString("infoTitle"); //内容标题
String infoDescribe = temp.getString("infoDescribe"); //内容简述
String infoDetail = temp.getString("infoDetail"); //内容详情
Integer type = temp.getInt("infoType"); //类型:0表示日记,1表示趣事
Integer support = temp.getInt("infoSupport"); //点赞数
String infoAuthor = temp.getString("infoAuthor"); //作者
items.setInfoId(infoId);
items.setInfoTitle(infoTitle);
items.setInfoDescribe(infoDescribe);
items.setInfoDetail(infoDetail);
items.setType(type);
items.setSupport(support);
items.setInfoAuthor(infoAuthor);
findInfo.add(items);
}
return findInfo;
}catch (JSONException e){
Toast.makeText(MyShareList.this, "initSetDataToBean异常 err.." + e.toString(), Toast.LENGTH_LONG).show();
return null;
}
}
//加载更多将详情设置到FindInfo bean中
public void loadMoreSetDataToBean(String detail){
try {
JSONArray detailJsonArray = new JSONArray(detail);
for (int i = 0; i < detailJsonArray.length(); i++) {
FindInfo items = new FindInfo();
JSONObject temp = (JSONObject) detailJsonArray.get(i);
Integer infoId = temp.getInt("infoId"); //内容ID
String infoTitle = temp.getString("infoTitle"); //内容标题
String infoDescribe = temp.getString("infoDescribe"); //内容简述
String infoDetail = temp.getString("infoDetail"); //内容详情
Integer type = temp.getInt("infoType"); //类型:0表示日记,1表示趣事
Integer support = temp.getInt("infoSupport"); //点赞数
String infoAuthor = temp.getString("infoAuthor"); //作者
items.setInfoId(infoId);
items.setInfoTitle(infoTitle);
items.setInfoDescribe(infoDescribe);
items.setInfoDetail(infoDetail);
items.setType(type);
items.setSupport(support);
items.setInfoAuthor(infoAuthor);
adapter.addNewsItem(items); //与初始化是有差异的
}
}catch (JSONException e){
Toast.makeText(MyShareList.this, "loadMoreSetDataToBean异常 err.." + e.toString(), Toast.LENGTH_LONG).show();
}
}
/**
* 初始化ListView的适配器,即打开页面展示的数据
*/
private void initializeAdapter(){
// 设置线程策略
setVersion();
JSONArray jsonArray = loadDataFromDataBase(requestUrl);
if(jsonArray!=null){
try {
JSONObject totalObject = (JSONObject)jsonArray.get(0);
dataSize = totalObject.getInt("totalRecord"); //总记录数
String detail= totalObject.getString("RecordDetail"); //详情
if(initSetDataToBean(detail)!=null) {
adapter = new MyShareList.PaginationAdapter(initSetDataToBean(detail)); //将详情设置到bean中
}
}catch (JSONException e){
Toast.makeText(MyShareList.this, "initializeAdapter异常 err.." + e.toString(), Toast.LENGTH_LONG).show();
}
}else{
listView.removeFooterView(loadMoreView);
Toast.makeText(MyShareList.this, "查询为空" , Toast.LENGTH_LONG).show();
}
}
//APP如果在主线程中请求网络操作,将会抛出异常,所以需要用线程来操作网络请求
void setVersion() {
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork()
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects() //探测SQLite数据库操作
.penaltyLog() //打印logcat
.penaltyDeath()
.build());
}
/**
* 加载更多数据
*/
private void loadMoreData(){
JSONArray jsonArray = loadDataFromDataBase(requestUrl);
try {
JSONObject total = (JSONObject) jsonArray.get(0);
dataSize = total.getInt("totalRecord"); //总记录数
String detail= total.getString("RecordDetail"); //详情
loadMoreSetDataToBean(detail); //将更多的详情设置到bean中
}catch (JSONException e){
Toast.makeText(MyShareList.this, "loadMoreData()异常 err.." + e.toString(), Toast.LENGTH_LONG).show();
}
}
/**
* 将一组数据传到ListView等UI显示组件
*/
class PaginationAdapter extends BaseAdapter {
List<FindInfo> newsItems;
public PaginationAdapter(List<FindInfo> newsitems) {
this.newsItems = newsitems;
}
@Override
public int getCount() {
return newsItems.size();
}
@Override
public Object getItem(int position) {
return newsItems.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
//在这里将Item设置到每个卡片
@Override
public View getView(int position, View view, ViewGroup parent) {
if (view == null) {
view = getLayoutInflater().inflate(R.layout.activity_find_list_item, null);
}
//标题
TextView tvTitle = (TextView) view.findViewById(R.id.cardTitle);
tvTitle.setText(newsItems.get(position).getInfoTitle());
//文章ID
TextView tvId = (TextView) view.findViewById(R.id.cardId);
tvId.setText(newsItems.get(position).getInfoId().toString());
int type = newsItems.get(position).getType();
if (type == 0 || type == 3) {
ImageView cardImgTip = (ImageView) view.findViewById(R.id.cardImgTip);
if (type == 0) {
cardImgTip.setImageResource(R.drawable.share_funny_select);
} else {
cardImgTip.setImageResource(R.drawable.share_diary_select);
}
TextView tvContent = (TextView) view.findViewById(R.id.cardContent);
tvContent.setVisibility(View.VISIBLE); //显示文字框
ImageView ivContent = (ImageView) view.findViewById(R.id.cardContent_pic);
ivContent.setVisibility(View.GONE); //设置图片显示框隐藏
LinearLayout layoutMusic = (LinearLayout) view.findViewById(R.id.cardContent_music);
layoutMusic.setVisibility(View.GONE); //设置音乐显示框隐藏
//分享的普通内容
tvContent.setText(newsItems.get(position).getInfoDescribe());
} else if (type == 1) {
ImageView cardImgTip = (ImageView) view.findViewById(R.id.cardImgTip);
cardImgTip.setImageResource(R.drawable.share_pic_select);
//分享图片
TextView tvContent = (TextView) view.findViewById(R.id.cardContent);
tvContent.setVisibility(View.GONE); //隐藏文字框
LinearLayout layoutMusic = (LinearLayout) view.findViewById(R.id.cardContent_music);
layoutMusic.setVisibility(View.GONE); //设置音乐显示框隐藏
ImageView ivContent = (ImageView) view.findViewById(R.id.cardContent_pic);
//通过网络链接获取图片
Bitmap one;
String describeUrl = newsItems.get(position).getInfoDescribe().trim();
try {
one = LoadImgByNet.getBitmap(imgBaseUrl + describeUrl); //设置图片
ivContent.setImageBitmap(one);
} catch (IOException e) {
e.printStackTrace();
}
ivContent.setVisibility(View.VISIBLE); //设置图片显示框
} else if (type == 2) {
ImageView cardImgTip = (ImageView) view.findViewById(R.id.cardImgTip);
cardImgTip.setImageResource(R.drawable.share_music_select);
//分享的音乐
TextView tvContent = (TextView) view.findViewById(R.id.cardContent);
tvContent.setVisibility(View.GONE); //显示文字框
ImageView ivContent = (ImageView) view.findViewById(R.id.cardContent_pic);
ivContent.setVisibility(View.GONE); //设置图片显示框隐藏
LinearLayout layoutMusic = (LinearLayout) view.findViewById(R.id.cardContent_music);
TextView tvMusicContent = (TextView) view.findViewById(R.id.cardTitle_music);
tvMusicContent.setText(newsItems.get(position).getInfoDescribe());
layoutMusic.setVisibility(View.VISIBLE); //设置音乐显示框显示
}
return view;
}
/**
* 添加数据列表项
*
* @param infoItem
*/
public void addNewsItem(FindInfo infoItem) {
newsItems.add(infoItem);
}
}
}
5.iShare相关页面设计
- 在layout下新建文件activity_about_ishare.xml,具体代码如下
- 这个页面设计比较简单,主要就是介绍iShare应用的开发目的和实现功能,没有功能,只是展示信息
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:fadingEdge="none" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:paddingLeft="14dp"
android:paddingRight="14dp"
android:paddingBottom="60dp"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="22dp"
android:textStyle="bold"
android:text="关于iShare" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:textSize="18sp"
android:layout_weight="1"
android:textColor="#000000"
android:text="开发者学号:\n
201611671208\n
201611671206\n
201611671221\n
" />
</LinearLayout>
<TextView
android:background="@drawable/list_card_style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_10"
android:padding="10dp"
android:textSize="18sp"
android:textColor="#000000"
android:text="iShare应用:发现有趣的人和事,在这个平台可以发布自己感兴趣的内容以及查看大家的分享,简历良好的交流氛围"/>
<TextView
android:id="@+id/detail_info_detail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_10"
android:padding="10dp"
android:textSize="18sp"
android:textColor="#000000"
android:singleLine="false"
android:text=" 开发目的:Android课程设计\n\n
开发时间:2019年5月\n\n
素材来源:LOGO是网络资源图,Icon来自www.iconfont.cn,其中用于测试的图片均来自网络\n\n
项目代码:部分结构参考自CSDN、GitHub\n\n
实现功能:起始页、注册、登录、更新签名、更改密码、浏览分享、按标题和简述关键字查找分享的内容、根据用户昵称查找用户、查看分享详情、点赞、收藏、发布四种类型的内容、查看按点赞数排行前十的内容、删除发布的内容、评论、查看我的分享、查看我的日记、查看我的收藏" />
</LinearLayout>
</ScrollView>
</LinearLayout>
6.“我的”页面跳转事件
- 打开之前创建好的MyTabFragment.java文件,给对应的五个Button——“修改密码”、“查看我的分享”、“查看我的日记”、“查看我的收藏”、“查看iShare相关”添加点击监听
//“我的”页面中相关点击事件
class mClick implements View.OnClickListener {
public void onClick(View v) {
if(isLogin) {
if (v == account_set_bt) {
//点击了账号管理
Intent account_manage_intent = new Intent();
account_manage_intent.setClass(mActivity, AccountManagement.class); //创建intent对象,并制定跳转页面
startActivity(account_manage_intent); //跳转到账号管理页面
/*TextView textView = (TextView) getActivity().findViewById(R.id.test_text_view); //用于放测试的提示信息
Toast.makeText(getActivity(), textView.getText(), Toast.LENGTH_LONG).show();*/
}else if(v == signature_set_bt){
//点击了更改签名
Intent signature_manage_intent = new Intent();
signature_manage_intent.setClass(mActivity, ChangeSignature.class); //创建intent对象,并指定跳转页面
//startActivity(signature_manage_intent); //跳转到更新签名页面
startActivityForResult(signature_manage_intent,1); //需要返回该页面
}else if(v == password_set_bt){
//点击了更改密码
Intent password_manage_intent = new Intent();
password_manage_intent.setClass(mActivity, ChangePassword.class); //创建intent对象,并指定跳转页面
/*startActivity(password_manage_intent); */
startActivityForResult(password_manage_intent,2); // 跳转到修改密码页面
}else if(v == share_list_bt){
//点击了我的分享
Intent intent = new Intent();
intent.setClass(mActivity, MyShareList.class); //创建intent对象,并指定跳转页面
intent.putExtra("requestType",0);
mActivity.setResult(4, intent); //这里的4就对应到onActivityResult()方法中的resultCode
startActivity(intent); //跳转到list
}else if(v==diary_list_bt){
//点击了我的日记
Intent intent = new Intent();
intent.setClass(mActivity, MyShareList.class); //创建intent对象,并指定跳转页面
intent.putExtra("requestType",1);
mActivity.setResult(5, intent); //这里的4就对应到onActivityResult()方法中的resultCode
startActivity(intent); //跳转到list
}else if(v==focus_list_bt){
//点击了我的收藏
Intent intent = new Intent();
intent.setClass(mActivity, MyShareList.class); //创建intent对象,并指定跳转页面
intent.putExtra("requestType",2);
mActivity.setResult(6, intent); //这里的4就对应到onActivityResult()方法中的resultCode
startActivity(intent); //跳转到list
} else if(v==about_iShare){
//点击了关于iShare
Intent about_iShare_intent = new Intent();
about_iShare_intent.setClass(mActivity, AboutIShare.class); //创建intent对象,并指定跳转页面
startActivity(about_iShare_intent); //跳转到iShare介绍页面
}
}else{
Toast.makeText(getActivity(), "请先登录!", Toast.LENGTH_LONG).show();
}
}
}
——到这整个iShare项目就开发完成了,整个过程可能会有部分代码或者配置不是很完整,接下来将会分模块写一下整个项目的详细代码,以及如何运行整个项目 和运行的结果