fenlan

Everything gonna be fine in the end, if it's not fine, it's not the end.

0%

许久没有更新的流水账

好久没有更新博客了,有很多原因。一方面,前段时间事情太多,大概花了一个月来写一个android聊天软件来参加,学校的比赛,虽然写好了,也还像个样子,但在最后答辩的时候选择了放弃。因为国创答辩失败了,恰好那个比赛的答辩和国创答辩同时进行的,所有带着沮丧的心情离开了。另一方面,换了一台电脑工作,而我的博客后台在原来的电脑上,我一直想将它迁移到新的电脑上,然而一直没有成功。因此,大概有托更了3个月的博客,现在静下心来总结一下最近的学习。

Android项目经验

1.Toolbar上实现返回按钮

1
2
3
4
5
6
backButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed(); //实现返回功能
}
});

1
2
3
4
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
}

2.listview自定义Adapter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
public class Chatting_Adapter extends BaseAdapter {
private static final int PAGE_MESSAGE_COUNT = 30;
public static String USERNAME = "com.example.username";
public static String MYNAME = "com.example.myname";
private List<cn.jpush.im.android.api.model.Message> chatting_list;
private LayoutInflater myInflater;
private Context mContext;
private int mStart;
private int mOffset = PAGE_MESSAGE_COUNT;
private Conversation mConversation;

public Chatting_Adapter(Context context, String UserName, List<Message> chatting_list) {
this.USERNAME = UserName;
this.mContext = context;
this.mStart = mOffset;
this.chatting_list = chatting_list;
myInflater = LayoutInflater.from(context);
}

//返回数据集长度
@Override
public int getCount() {
return chatting_list.size();
}

@Override
public Object getItem(int position) {
return chatting_list.get(position);
}

@Override
public long getItemId(int position) {
return position;
}

public void setData(List<Message> chatting_list)
{
// TODO Auto-generated method stub
this.chatting_list = chatting_list;
}

@Override
public View getView(final int position, View view, ViewGroup viewGroup) {
Message message = chatting_list.get(position);
ViewHolder holder;

if(view == null) {
view = myInflater.inflate(R.layout.chat_text_ui, viewGroup, false);
holder = new ViewHolder();
holder.left_layout = (RelativeLayout)view.findViewById(R.id.left_layout);
holder.friend_username = (TextView)view.findViewById(R.id.left_tv_name);
holder.friend_head = (ImageView)view.findViewById(R.id.left_iv_portrait);
holder.left_chatting_message = (TextView)view.findViewById(R.id.left_tv_content);
holder.left_chatting_time = (TextView)view.findViewById(R.id.left_tv_time);
holder.right_layout = (RelativeLayout)view.findViewById(R.id.right_layout);
holder.myname = (TextView)view.findViewById(R.id.right_tv_name);
holder.my_head = (ImageView)view.findViewById(R.id.right_iv_portrait);
holder.right_chatting_message = (TextView)view.findViewById(R.id.right_tv_content);
holder.right_chatting_time = (TextView)view.findViewById(R.id.right_tv_time);

view.setTag(holder);
}
else {
holder = (ViewHolder)view.getTag();
}

if (message.getFromUser().getUserName() == JMessageClient.getMyInfo().getUserName()) {
holder.right_layout.setVisibility(View.VISIBLE);
holder.left_layout.setVisibility(View.GONE);
holder.myname.setText(message.getFromUser().getUserName());
//holder.friend_head.setImageResource(R.mipmap.friend_head);
TimeFormat timeFormat = new TimeFormat(mContext, message.getCreateTime());
holder.right_chatting_time.setText(timeFormat.getTime());
TextContent textContent = (TextContent) message.getContent();
holder.right_chatting_message.setText(textContent.getText());
}
else {
holder.left_layout.setVisibility(View.VISIBLE);
holder.right_layout.setVisibility(View.GONE);
holder.friend_username.setText(message.getFromUser().getUserName());
//holder.friend_head.setImageResource(R.mipmap.friend_head);
TimeFormat timeFormat = new TimeFormat(mContext,message.getCreateTime());
holder.left_chatting_time.setText(timeFormat.getTime());
TextContent textContent = (TextContent) message.getContent();
holder.left_chatting_message.setText(textContent.getText());
}
return view;
}

private void incrementStartPosition() {
++mStart;
}

public void clearMsgList() {
chatting_list.clear();
mStart = 0;
notifyDataSetChanged();
}

public Message getLastMsg() {
if (chatting_list.size() > 0) {
return chatting_list.get(chatting_list.size() - 1);
} else {
return null;
}
}

public void addMsgToList() {
chatting_list.clear();
mConversation = JMessageClient.getSingleConversation(USERNAME);
chatting_list = mConversation.getMessagesFromNewest(0,mOffset);
Collections.reverse(chatting_list);
//chatting_list.add(msg);
//incrementStartPosition();
notifyDataSetChanged();
}

private class ViewHolder {
RelativeLayout left_layout;
TextView friend_username;
TextView left_chatting_message;
TextView left_chatting_time;
ImageView friend_head;
RelativeLayout right_layout;
TextView myname;
TextView right_chatting_message;
TextView right_chatting_time;
ImageView my_head;
}
}

使用自定义Adapter
1
2
friendListAdapter = new FriendListAdapter(Friend_List.this, friendlist);
Friend_List.setAdapter(friendListAdapter);

3.退出确认Dialog

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public void exitActivity(){
new AlertDialog.Builder(this).setTitle("确认退出吗?")
.setIcon(android.R.drawable.ic_dialog_info)
.setPositiveButton("确定", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// 点击“确认”后的操作
JMessageClient.logout();
Friend_List.this.finish();

}
})
.setNegativeButton("返回", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// 点击“返回”后的操作,这里不设置没有任何操作
}
}).show();
}

4.不结束软件退出
1
2
3
4
5
6
7
8
9
10
11
12
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

if (keyCode == KeyEvent.KEYCODE_BACK) {
Intent home = new Intent(Intent.ACTION_MAIN);
home.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
home.addCategory(Intent.CATEGORY_HOME);
startActivity(home);
return true;
}
return super.onKeyDown(keyCode, event);
}

5.为软件插入启动广告
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class LaunchActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//加载启动界面
setContentView(R.layout.activity_launch);
//当计时结束时,调至主界面
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
startActivity(new Intent(LaunchActivity.this, MainActivity.class));
LaunchActivity.this.finish();
}
}, 3000); //界面停留时间
}
}

更多内容在github上

目前学习进度

现在已经将之前的电脑作为了服务器,目前正在熟悉网站开发一整套流程。目标是熟悉使用php大法,css和javascript,数据库这个东西讲道理我不想接触,但是没办法,这一关必须得过。虽然有xml,但是xml并不是合理的选择,所以继续学呗。
最近在一些新闻上看到android可能有新的发展方向,可能会逐渐走向闭源。怎么说呢,即使google是这样想的,但是这肯定是一个比较漫长的过程,不管怎么说,google不会放弃中国这个市场的,因此也不会拒绝中国的开发人员,因此,学习Android仍然是可行的,最近从图书馆借了一本书,准备系统性的学习一下Android,结束以前的野路子。

对于国创失败的感悟

很不幸,我的第一次国创之路失败了,对此做个总结。
首先,在找队友的路上,我就走得很不顺。找不到可靠的队友,最后无奈自己来做队长,基本上所有的事情都由我一手独揽。原本准备让一个队友写计划书,然而到了要交计划书的时候他告诉我他没有电脑,写不出来,所以退出。在最后一两天临时找了一个学弟凑人数,然后自己一个人忙着所有的事情。其次,在方向上出现问题。之前一直找不到方向,然后找了一个高中同学聊了半天,决定了一个方向,然而由于我迫切地想要接入小米的接口,使得我计划的整个项目没有创新点,这也成了国创失败的主要原因。归咎下来,主要还是因为我太一意孤行了,之前迫切想要接入小米接口,队友也不好阻止我,就放任我走向一个死胡同。
不知道是什么原因,一直没有找到可以一起学习、一起做项目的同伴,在一个人瞎摸索的路上举步维艰,时不时地出现迷茫的情况,不知道自己想要学什么,不知道自己想要做出个什么项目。总是在一个人的路上走走停停。所以,现在真的想寻求一个可靠的同伴一起学习、一起做项目。

新的信仰

国创答辩刚刚结束,学院就来了一个讲座,dota女神前来宣讲。讲道理,女神真的很优秀,特别喜欢她信仰的那句话

:所有事情到最后都将是好的结局,如果不好,那么就不是结局.
:Everything gonna be fine in the end,if it’s not fine,it’s not the end.