2.然后定义一个CircleFlowIndicator类。
具体代码依然见源码;
3.接下来就在布局文件中开始使用了
<framelayout android:id="@+id/framelayout" android:layout_height="300dip" android:layout_width="fill_parent" android:orientation="vertical">
</framelayout>代码中有个app:activeType,app:radius 这样的东西,可能新手不是很明白到底是个shenmegui,解释一下这是自定义属性。
使用自定义属性首先要记得把这个属性相应的命名空间给加在布局文件的开头,否则无法编译。
xmlns:app=”http://schemas.android.com/apk/res-auto”
这些属性都对应在attrs.xml文件中可以找到。
4.然后就可以在Activity中调用了,具体的代码是:
/**
* @Description:显示广告条的主页
* @author http://blog.csdn.net/finddreams
*/
public class MainActivity extends Activity {
private ViewFlow mViewFlow
private CircleFlowIndicator mFlowIndicator
private ArrayList imageUrlList = new ArrayList()
ArrayList linkUrlArray= new ArrayList()
ArrayList titleList= new ArrayList()
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
initView()
imageUrlList.add(http://b.hiphotos.baidu.com/image/pic/item/d01373f082025aaf95bdf7e4f8edab64034f1a15.jpg)
imageUrlList.add(http://g.hiphotos.baidu.com/image/pic/item/6159252dd42a2834da6660c459b5c9ea14cebf39.jpg)
imageUrlList.add(http://d.hiphotos.baidu.com/image/pic/item/adaf2edda3cc7cd976427f6c3901213fb80e911c.jpg)
linkUrlArray.add(http://blog.csdn.net/finddreams/article/details/44301359)
linkUrlArray.add(http://blog.csdn.net/finddreams/article/details/43486527)
linkUrlArray.add(http://blog.csdn.net/finddreams/article/details/43194799)
titleList.add(Android开发面试经——)
titleList.add(Android控件GridView之仿支付宝钱包首页带有分割线的GridView九宫格的完美实现)
titleList.add(Android动画之仿美团加载数据等待时,小人奔跑进度动画对话框 )
initBanner(imageUrlList)
}
private void initView() {
mViewFlow = (ViewFlow) findViewById(R.id.viewflow)
mFlowIndicator = (CircleFlowIndicator) findViewById(R.id.viewflowindic)
}
private void initBanner(ArrayList imageUrlList) {
mViewFlow.setAdapter(new ImagePagerAdapter(this, imageUrlList,
linkUrlArray, titleList).setInfiniteLoop(true))
mViewFlow.setmSideBuffer(imageUrlList.size())// 实际图片张数,
// ImageAdapter实际图片张数为3
mViewFlow.setFlowIndicator(mFlowIndicator)
mViewFlow.setTimeSpan(4500)
mViewFlow.setSelection(imageUrlList.size() * 1000)// 设置初始位置
mViewFlow.startAutoFlowTimer()// 启动自动播放
}
}
5.有一个很关键的就是ImagePagerAdapter这个适配器,因为加载网络图片是在这个类里实现的,还有广告条的点击,进入一个Web界面的实现。在这里加载网络图片使用了一个很火的开源项目,UniversalImageLoader(异步加载网络图片) 。
ImagePagerAdapter.class 类:
/**
* @Description: 图片适配器
* @author http://blog.csdn.net/finddreams
*/
public class ImagePagerAdapter extends BaseAdapter {
private Context context
private List imageIdList
private List linkUrlArray
private List urlTitlesList
private int size
private boolean isInfiniteLoop
private ImageLoader imageLoader
private DisplayImageOptions options
public ImagePagerAdapter(Context context, List imageIdList,
List urllist, List urlTitlesList) {
this.context = context
this.imageIdList = imageIdList
if (imageIdList != null) {
this.size = imageIdList.size()
}
this.linkUrlArray = urllist
this.urlTitlesList = urlTitlesList
isInfiniteLoop = false
// 初始化imageLoader 否则会报错
imageLoader = ImageLoader.getInstance()
imageLoader.init(ImageLoaderConfiguration.createDefault(context))
options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.ic_launcher) // 设置图片下载期间显示的图片
.showImageForEmptyUri(R.drawable.meinv) // 设置图片Uri为空或是错误的时候显示的图片
.showImageOnFail(R.drawable.meinv) // 设置图片加载或解码过程中发生错误显示的图片
.cacheInMemory(true) // 设置下载的图片是否缓存在内存中
.cacheOnDisc(true) // 设置下载的图片是否缓存在SD卡中
.build()
}
@Override
public int getCount() {
// Infinite loop
return isInfiniteLoop ? Integer.MAX_VALUE : imageIdList.size()
}
/**
* get really position
*
* @param position
* @return
*/
private int getPosition(int position) {
return isInfiniteLoop ? position % size : position
}
@Override
public View getView(final int position, View view, ViewGroup container) {
final ViewHolder holder
if (view == null) {
holder = new ViewHolder()
view = holder.imageView = new ImageView(context)
holder.imageView
.setLayoutParams(new ViewGroup.LayoutParams(-1, -1))
holder.imageView.setScaleType(ImageView.ScaleType.FIT_XY)
view.setTag(holder)
} else {
holder = (ViewHolder) view.getTag()
}
imageLoader.displayImage(
(String) this.imageIdList.get(getPosition(position)),
holder.imageView, options)
holder.imageView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
String url = linkUrlArray.get(ImagePagerAdapter.this
.getPosition(position))
String title = urlTitlesList.get(ImagePagerAdapter.this
.getPosition(position))
/*
* if (TextUtils.isEmpty(url)) {
* holder.imageView.setEnabled(false)return}
*/
Bundle bundle = new Bundle()
bundle.putString(url, url)
bundle.putString(title, title)
Intent intent = new Intent(context, BaseWebActivity.class)
intent.putExtras(bundle)
context.startActivity(intent)
Toast.makeText(context, 点击了第 + getPosition(position) ,
0).show()
}
})
return view
}
private static class ViewHolder {
ImageView imageView
}
/**
* @return the isInfiniteLoop
*/
public boolean isInfiniteLoop() {
return isInfiniteLoop
}
/**
* @param isInfiniteLoop
*the isInfiniteLoop to set
*/
public ImagePagerAdapter setInfiniteLoop(boolean isInfiniteLoop) {
this.isInfiniteLoop = isInfiniteLoop
return this
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return arg0
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0
}
}
6.点击进入一个带进度条的WebView的Activity,加载成功就可以了。
在可用字段里选择HyperLinkField,单击添加按钮。然后选择在【选定的字段】中,选择刚添加的这个HyperLinkField。在右边按照图示进行设置:
1、外观-Text:设置链接的文字。
2、外观-HeaderText:设置链接列的标题。
3、数据-DataNavigateUrlFields:设置超链接要传递的参数,这里写的“id,name”表示要传递id和name这两个字段的值,注意用逗号分隔,可以设置多个字段。
1.设计数据库。这个是重中之重。主要就是构建数据库的ER模型。
也就是表,视图,存储过程,主键,外键的确定,这个非常重要,如果设计不好,后面实现起来很棘手。可用的工具:visio2003,powerdesigner,ER-win等等。
2.建数据库。
建表,建视图,索引,编写存储过程,考虑使用什么样的数据类型。工具:sql server2005,oracle10g等等。
3.编写页面。
页面分为前台的GUI和后台的逻辑功能。分别使用asp.net和c#。
asp.net处理页面的显示,c#则处理逻辑功能。比如数据库连接,查询,事件的响应。由于vs2005本身的数据源控件十分强大,因此大部分时候不需要自己写C#代码,而是直接在asp.net页面调用控件:比如datasource,gridview等等。工具:vs2005
经过这三部,基本上网页就可以运作起来了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)