若水新闻安卓客户端笔记

Lesson3 - 设计新闻分类导航UI

arrays.xml
定义一个数组
String[] categoryArray = getResources().get
GridView category = new GridView(this);
category.setNumColumns(GridView.AUTO_FIT);
category.setGravity(Gravity.CENTER);

px转化为dip格式
使用DensityUtil.java工具类

Adapter
SimpleAdapter
for(int i=0;i<categoryArray.length;i++)
{
HashMap
}

HorizontalScrollView

Lesson4 - 点击改变背景及文字颜色

小类可以重写,定制化,大类内部函数多,接口复杂,不建议写
bindView getView textView
position setbackground GridView 自定义SimpleAdampter

Lesson5 - 新闻列表布局信息

服务器信息调用,使用HashMap

Lesson6 - 评论框的编写

图片,点击后转为EditView

draw9patch 9.png

Lesson7 - 升级新闻内容UI

ViewFlipper

Lesson8 - 设计新闻回复UI

主要为界面布局设计
扩展<include>标签的使用

Lesson9 - 调用服务器接口,解析新闻信息

请求url
启动Tomcat
category
循环数组
if (temp == 2)

title
Category{
}
url = ?
name value键值对

private final int NEWSCOUNT = 5;

public
有异常则使用try { } catch { }
if(retCode == 0)

json
JSONObject dataObj =
int totalnum = dataObject()
Android中动态更新ListView

Lesson10 - 新闻分类显示及底部加载更多

Toast
声明为全局变量
List <HashMap<String, String>>;
ArrayList

category.
private
mCid = category.get(Position).get("category_title").getCid();
System.out.printIn("Ori:"+Cid)
private void getSpeCateNews(mCid, mNewsData);
mewsList.clear();
SimpleListAdapter;
mNewsList
mNewsData;
要么New出来,要么查找出来
mCid作为分类标识
notifyData

__底部加载Button

addFooterView(loadView)
View footerView = mInflater.inflate(R.layout.)
loadmore.xml
private OnClickListener loadMoreListener = new OnClickListener()
{
@Override
public void onClick(View v)
{
//获取该栏目下新闻
getSpeCateNews(mCid,mNewsData,mNewsData.size(),false);
//通知ListView更新
mNewsListAdapter.notifyDataSetChanged();}};
getSpaCateNews(mCid, boolen firsttime)
if(firsttime)
{}
函数是个好东西

Lesson11 - 使用AsyncTask异步更新UI界面及原理分析

即在操作时使UI变化
private class LoadNewsAsyncTask<Object, Integer, Void>
{
@Override
protected void onPreExecute(Bitmap result)
{
mTitlebarRefresh.setVisibility(View.GONE);
mLoadNewsProgress.setVisibility(View.VISIBLE);
mLoadMoreBtn.setText(R.string.loadmore_txt);
}
@Override
protect Void doInBackground(Object... params)
}
onPreExecute()

1编程时如何在输入小写完成后一键变成大写
2如何注释某行到行首

Toast 信息放入一类,调用其参数,使代码更友好

Lesson12 - 点击标题进入详细内容页面

新闻分类要传递,信息标题,时间,来源要传递,新闻内容通过接口获取
跟帖信息补充到HashMap里

全局变量mCategory,局部变量category

intent.putExtra("newsData", mNewsData);
startActovity(intent);

Java基础需要深化

intent.putExtra("position", posotion)
Intent intent = getIntent();
Bundle bundle = intent.getExtras();

//Position
mPosition = bundle.getInt("position");
serializable =
intent.getbundlerExtra("");
//获取传递的信息
TextView newsdetails_titlebar_title=

两个Activity的切换

跟帖即输入内容,保存且显示。

Lesson13 - 异步加载新闻内容

- 修正上下篇新闻
同步加载新闻内容,异步加载新闻内容
TextView中显示,UI所在主线程

Activity.runOnUoThread(Runnable)
View.post(Runnable)
View.postDelayed(Runnable, long)
Handler
复写AsyncTask

private handlermHandler = new Handler()
{
getNewsBody
newsDetails = (TextView)
nNewsDetails.setText(Html.fromHtml(msg.obg.toString()));

什么是同一个或不同一个线程?
异步加载新闻信息
服务器启动
mPostion++;
HashMap
动态的新闻信息
View放在Fliper里面
新闻回复数
在Titlebar里头
声明为全局的Button
一条一条分析
Position<mNewsData-1>

String newsStr = getNewsBody();
private final int FINISH = 0;

HandlerMessage{
mNewsDetails.setText(Html)}
}

Android异步加载图片

Lesson14 - 新闻回复功能

mNewsReply
onTouchListener
setVisibility(View.VISIABLE)
线程
ret
message
post
params.add(new Parameter("nid",mNId+""))

SyncHttp http = new SycHttp();
http.HttpPost(url,params)
Android根据手机号获取位置信息,根据GPS获取位置信息。
try
{
String retStr = http.httpPost(url,params);
JSONObject object = new JSONObject(retStr);
int retCode
drunable
}

点击时聚焦EditText并且显现软键盘输入法
Object.requestFocus();
m.toggleSoftInput(0, InputMethodManager.SHOW_IMPLICIT);
隐藏输入法:
m.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);

Lesson15 - 展示新闻回复信息

private List<HashMap<String, Object>> mCommsData;
private void getComments(int nid)
{
//请求URL和字符串
String url = "http://10.0.2.2:8080/web/getComments";
String params = "nid="+nid+"&startnid=0&count=10";
SyncHttp syncHttp = new SyncHttp();
try
{
//以
int retCode = jsonObject.getInt("ret");
if(0==retCode)
{
JSONObject dataObject = jsonObject.getJSONObject("data");
//获取返回数目
int totalnum = dataObject.getInt("totalnum");
if (totalnum>0)
{
//获取返回新闻集合
JSONArray commslist = dataObject.getJSONArray("commentslist");
for(int i=0;i<commslist.length();i++)
{
JSONObject commsObject = (JSONObject)commslist.opt(i);
HashMap<String, Object> hashMap = new HashMap<String, Object>();
hashMap.put("cid", commsObject.getInt("cid"));
hashMap.put("regipn", commsObject.getString("region"));
hashMap.put("ptime",commsObject.getString("ptime"));
hashMap.put("content", commsObject.getString("content"));
mCOmmsData.add(hashMap);
}
}
else
{
Toast.makeText(CommentsActivity.this, "暂无回复", Toast.LENGTH_LONG)
}
else
{ Toast.}
}
}

Lesson16 - 添加广告

选择广告提供商,广告联盟,可提取现金,如百度移动联盟。
推广安卓SDK
声明方式,代码方式实现广告,实例化,注释说明。

引用jar包
新建文件夹,复制jar包,右击->Build Path ->Add to Build Path

配置Manifest添加权限
添加APPSID,标识当前应用程序ID信息

添加应用详情Activity
创建attrs.xml文件

sdk包的路径申明

No Add to Show 有延迟

Lesson17 - 软件自动更新

获取服务器端版本号- 判断是否更新- 下载更新- 确认安装- 完成安装

执行更新的操作。
UpdateManager

XML解析 ParseXmlService.java

Builder构造Dialog
获取SD卡路径,下载apk放在Download目录下
file.mkdir();
cancelUpdate
更新进度条信息,更新UI信息需要放在UI线程里,放在Handler
通过判断进度,使Handler更新UI
installApk方法安装程序
直接拷贝使用

DDMS界面找到mnt-sdcard-download-baidunews1.0.13.apk
java+xml实现

Lesson18 - 自定义TextView(1)图文混排

CustomTextView.java
TextView textView = new TextView(this);
TextView
ArrayList<HashMap<String, String>> datas = ArrayList
复写父方法
public CustomTextView(Context context)
{
this(context, null);
}

if(type.epuals("image"))
{
ImageView imageView = new ImageView(mconText);
imageView.setLayoutParams(new LayoutPrams(LayoutParams.WRAP_CONTENT);)
imageView.setImageResource(R.drawable.kuka);
addView(imageView);
new DownloadPicThread(imageView, hashMap.get("value"));

}

setOrientation(LinearLayout.VERTICAL);

<com.szy.view.CustomTextView>

CustomTextView custom = new TextView

Html.fromHtml(Source, imageGetter, tagHandler)(须尝试,未测试)

attrs.xml
Android自定义属性
TypedArray 可引用并实例化自定义xml属性
<declare-styleable name="customTextView">

<attr name="image_width" format="dimension" />
get 方法,获取图片宽度和高度,20‘20"

szy:image_width="200dip"
XML的命名空间,系统自带及自己命名的空间
包的名字
图片宽度和高度有了改变
属性信息
LayoutParams(new Layout)
params.gravity = Gravity.CENTER_HORIZION
动态配置,异步加载图片信息
View.post

Lesson19 - 自定义TextView(2)将自定义组件应用到新闻客户端。

自定义控件有缺陷
没法区分图片还是文本
新闻内容必须按固定格式返回
接口信息
body
GetServerlate文件夹覆盖其一class文件
ArrayList里面有三个HashMap
文本信息的分割
图片的格式都已经固定了
文本信息是从数据库里读出来的
for (int )
return BodyList;

mNewsDetails

Lesson20 - 程序打包发布

版本测试每个版本都进行编译测试,机型测试,系统room定制后作修改i,可能使应用无法使用,需要进行多机型测试。

安装手机驱动程序,USB调试启用,可以将真机设备加入Eclipse模拟器设备。

可进行真机测试,提高效率。

打包apk,签名,反编译,生成。
保存好签名文件,唯一性。

友盟 统计应用的下载使用等情况和数据

时间: 2024-12-20 09:30:25

若水新闻安卓客户端笔记的相关文章

安卓开发笔记——深入Activity

在上一篇文章<安卓开发笔记——重识Activity >中,我们了解了Activity生命周期的执行顺序和一些基本的数据保存操作,但如果只知道这些是对于我们的开发需求来说是远远不够的,今天我们继续探索Activity,来了解下关于Activity任务栈和Activity四种启动模式的区别. 为什么需要了解关于Activity的任务栈,其实最直接的体现就是提高用户交互友好性. 举个例子,当我们去浏览一个新闻客户端的时候,我们进入了新闻详情页,在这个页面有相隔两条的新闻标题,当我们去点击这个标题的时

安卓开发笔记——高仿新浪微博文字处理(实现关键字高亮,自定义表情替换并加入点击事件实现)

先让大家看下效果图,这个是我自己在闲暇时间仿写的新浪微博客户端: 今天来讲讲如何实现上图的效果,这里需要用到SpannableString这个工具类,如果你对这个类并不熟悉,可以先看下我之前写的2篇文章: <安卓开发笔记——个性化TextView(新浪微博)>:http://www.cnblogs.com/lichenwei/p/4411607.html <安卓开发笔记——丰富多彩的TextView>:http://www.cnblogs.com/lichenwei/p/46120

安卓开发笔记——打造属于自己的博客园APP(二)

在上一篇文章<安卓开发笔记——打造属于自己的博客园APP(一)>中,我们基本上实现了博客园的主体UI框架(后面可能会有些小变化,等遇到了再说).今天来讲讲博客园首页模块的大体实现,国际惯例,先来看下效果图: 整体UI效果: 下拉刷新和上拉加载的动画效果: 在上篇文章中,我们定义的Tabs主题文字分别是(首页,精华,候选,推荐),这边的命名我是根据博客园网站首页的栏目来命名的,那时候我还没仔细看过博客园的开放接口,后来才发现原来博客园没有对应开放这些栏目的接口,博客园只开放了(文章列表,48小时

cocos2dx安卓客户端接入移动MM付费SDK

C++和java的调用需要使用JNI,这里使用cocos2dx提供的JniHelper就可以满足要求. 以游戏中购买炸弹道具为例 流程图: 先按照文档进行配置: 在Java工程中新建一个包"IAP",作为C++与mmsdk交互的中间层: Handler和Listener可以使用Demo自带的两个类,将Demo2.4.2中的IAPHandler.java和IAPListener.java复制到IAP中: 在package IAP下新建类IAPJni 1 package IAP; 2 3

安卓 开发笔记目录

安卓 开发笔记index 安卓基础 Fragment总结 安卓 BroadcastReceiver笔记 安卓 Notification-通知总结 开源框架笔记 安卓 okhttp小结 EventBus框架总结 安卓 图片加载框架ImageLoader 第三方SDK 安卓 短信验证MobSMS集成 开源项目 其他 安卓 常用属性设置代码笔记 安卓 代码混淆与打包 AOSP开发笔记 开发工具 SecureCRT连接Ubuntu配置 Ubuntu开发环境搭建 开发环境 AOSP android7.1.

安卓开发笔记——丰富多彩的TextView

随手笔记,记录一些东西~ 记得之前写过一篇文章<安卓开发笔记——个性化TextView(新浪微博)>:http://www.cnblogs.com/lichenwei/p/4411607.html 文章里实现个性化TextView的主要方法是通过替换的方式,对关键字进行一些个性化处理,晚上再来补充一种实现方式. 老规矩,先看下效果图: 晚上带来的这种实现方式是通过Android官方给我们提供的Html类下面的fromHtml方法,这个方法可以对字符串进行HTML格式化,让TextView等一些

安卓开发笔记——关于Handler的一些总结(上)

接上篇文章<安卓开发笔记——关于AsyncTask的使用>,今天来讲下在安卓开发里"重中之重"的另一个异步操作类Handler. 今天打算先讲下关于Handler的一些基本定义和使用方式 还是以一个下载图片为例,先看下实例效果: 好了,先来看下关于Handler的定义: 以上是官方对于Hanler类的描述,大致意思是说:Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分在消息队列中逐一将消息取出,然后对消息

【源码】c#编写的安卓客户端与Windows服务器程序进行网络通信

用c#开发安卓程序 (xamarin.android)系列之三 源码(包含客户端与服务器端所有工程文件)    数据库文件 为了方便您测试,我临时搭建了一个服务器  您可以安装apk文件,直接测试  apk文件下载地址  (测试服务器将会运行至2015年3月1日) 通信框架为来自英国的NetworkComms2.3.1开源通信框架    序列化采用Protobuf.net开源框架 客户端界面如下:        服务器端程序界面: 服务器搭建在winserver2003 上,基于.net4.0.

安卓第六天笔记--ListView

安卓第六天笔记--ListView 1.AdapteView AdapteView 继承ViewGroup它的本质是容器 AdapterView派生了3个子类: AbsListView AbsSpinner AdapterViewAnimation 这3个类是抽象类 实际使用中采用的是它们的子类 2.Adpate结构 3.使用ArrayAdapter完成ListView显示 ListView使用的是ListAdapter类型的适配器 由于只显示文字,所有使用ArrayAdapter ArrayA