- 浏览: 11461 次
- 性别:
- 来自: 邯郸市
最新评论
文章列表
有时候需要显示动图,可安卓有没有现成的控件,很烦。用过GifView(一个开源的第三方GIF显示控件),后来用android-gif-drawable(另一个GIF开源控件)。简单点可以用第一种,这里选第二种。
GitHub下载地址:https://github.com/koral--/android-gif-drawable-eclipse-sample(eclipse的一个例程,需要其他请百度)
点击Download ZIP下载:
将libs文件夹下所有文件夹拷到工程目录libs下(如:.\Dp Notes\libs)下,将s ...
有时候图片很长,预览只是其一部分,有个类似按钮点击之后加载全图并显示,类似于GIF的加载显示。
ListAdapter中:
else if("lmg".equals(data.type)){
Drawable drawable=lmgload.loadImage(viewparent,tagpre,data.dataurl,null);
if(drawable!=null){
LayoutParams lp=holder.rl_data.getLayoutParams();
lp.height=itemwidth*drawable.g ...
ListView显示图片(只有文字显得很傻),很多了,效果图就不找了,这里主要是网络图片,利用上节网络图片获取的类。
先定义了一个类,ModelList,主要是存放ListView Item中的一些信息,比如用户名、标题、 ...
如上节,有时候需要显示网络图片,QListView的Item中或其他地方。写一个类负责将网络图片下载下来,供使用。
public class ImageLoad {
private Context context;
private Map<String, Drawable> imageMap;
private ThreadPoolExecutor executor = null;
BlockingQueue<Runnable> queue =null;
private String path=Environment.getExt ...
大多时候,需要后台(异步)去执行一些费时操作。如网络数据获取、复杂的算法、图片处理等,当执行这些操作时,又不想失去用户响应(类似Windows有时候程序会卡死,失去鼠标键盘响应),所以需要放到用户界面之外的一个线程里去处理这些操作。
安卓中主要有两种实现方式,1、建立线程,Runnable中run方法执行费时操作,完成时通过Handler发送消息(这种方式在之后的网络图片加载会用到),2、使用安卓自带的AsyncTask异步类,这里先考虑第二种。
先说一下AsyncTask异步类,网上复制的,理解。
Android提供了一套专 ...
当然想要ListView显示自定义的布局,显示文字、图片,如下:
布局什么的都不是很难的,多试试就好。其实是不想多说关于布局什么的。修改item_list.xml如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
...
实现了显示的效果,接着来实现一些监听器(接口),下拉刷新、上拉加载、Item划出屏幕(之后会用到)等监听器(接口),定义两个接口:
public interface QRecyclerListener{
void onMovedToScrapHeap(View view);//Item划出屏幕回调函数
}
public void setQRecyclerListener(QRecyclerListener listener){//设置
this.rclistener=listener;
}
public interface QPullListener{
...
下拉刷新,上拉加载,很流行的啊,总的来说有两种。一种当ListView下拉时整个页面一块下移,露出顶部的提示,另一种当ListView下拉到最顶端时,页面不移动,而是在上面出现一层提示或图标。上拉加载都是判断页面有没有快要滑到底部。
注:第二种想贴知乎的下拉效果,无奈知乎在模拟器上怎么都装不上
这里来实现第二种。原理就是自定一种布局,包含一个ListView和头部的刷新提示,代码里就在触摸事件函数判断状态,改变刷新提示的显示位置、信息就可以。新建一个类继承自RelativeLayout(提示图标在中间而且位于ListView上层,所以选择RelativeLa ...
完成了一些空架子,开始填内容,从列表开始吧(主页没想好),列表很简单,一个ListView(从上往下能一直滑的那种,而且每块布局很类似)。ListView的使用和ViewPager很像,主要是Adapter。先在布局中引入ListView:
<ListView
android:id="@+id/lv_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:la ...
完成了底部导航栏,再来顶部导航栏(叫什么?菜单栏?有脚没头显得不协调)。软件顶部默认是有一个ActionBar,为了使各自顶部的事件处理放到各自的Fragment中,将顶部自带的ActionBar给去掉(res/values下styles.xml中把style改为一个带.NoTitleBar的Theme即可),自己加一块布局在上面,一个假的ActionBar。布局内容左侧一个TextView,显示当前页名字(主页、列表、消息、我的),右侧一个搜索或刷新的图标。
先来,主页,新建布局文件header_home.xml,布局较简单:
<?xml version ...
有卡顿的现象(可能模拟器原因),滑动时没有渐变,设置一下渐变,主要是OnPageChangeListener中的onPageScrolled(int position, float offset, …),参数position表示当前页,offset表示位置偏移(0-1)。在函数中处理一下图标的透明度,实现渐变:
if(position>=0&&position<=3){
if(offset>0){
alphaItem[position]=(int)(255-255*offset);
alphaItem ...
将ViewPager和QEndBar结合起来,点击图标时切换ViewPager页面,ViewPager滑动时改变图标状态。打开QEndBar.java,定义ViewPager对象viewPager,新建一个函数setViewPager():
public void setViewPager(ViewPager viewPager){
if(this.viewPager!=null){
this.viewPager.setOnPageChangeListener(null);
}
this.viewPager=viewPager;
...
实现了点击切换效果(只是图标状态变化),如何结合页面,点击时切换页面,页面滑动时图标有渐变。需要一个新的控件ViewPager,看名字就知道是管理页面切换的,在底部的QEndBar之上加入一个ViewPager:
<android.support.v4.view.ViewPager
android:id="@+id/vp_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:lay ...
想要的图标呢?怎么弄上去。从网上找了几个图标,并做成了字体(为什么做成字体,做成字体,相当于每个图标对应一个字符,如"0"对应着主页的图标,在View里drawText(0),就把对应的图标画上去了(当然要为paint设置字体),方便改变大小,颜色等。怎么做成字体,图标字体(ICONFONT),百度一下),这里只是想介绍一种投机取巧的方法来实现图标显示和之后的颜色渐变。
字体做好了,QEndBarIcon.ttf,0-主页,1-列表,2-消息,3-用户,4-中间的新建,先是这么想的。工程/assets目录右键→新建folder取名fonts, ...
已经看到了安卓的一角,正式开始Dp Notes开发工作。安卓开发一般是先有美工设计设计好界面,按照界面再布局(没正式开发过,不太清楚)。没有美工(美学,什么?),直接按自己想的来好了。
主要实现一个底部的导航栏,一般软件底部都有导航栏,包含3-5项,点击时切换不同的页面。像微信,不止可以点,还可以滑动,而且滑动时导航栏图标还会有不同的变化,仿一下这个效果。图标颜色的的渐变,不可能有那么多张颜色不同的图片。不知道微信用的什么原理,这里用自定义View来实现一下(之前说过安卓很多控件的基类都是View,那定义一个类来继承View,实现想要的效果,就是自定义控件)。 ...