随笔分类 - Android UI设计
Android UI设计,以及控件View的使用
摘要:Launcher是系统启动后第一个启动的程序,是其它应用程序的入口,也就是我们的手机程序的桌面程序;一、Launcher的定义及构成:通过查看官方提供的Launcher源码可以知道其实Launcher也是一个Activity,不过它的intent-fliter有点特殊; ...
阅读全文
摘要:ActionBar取代了以前的TitleBar,是一种更加灵活的人机交互方式;ActionBar并不是完全自立门户的一个新兴的东西,而是和3.0以下版本的menu进行了合并整合;so,添加actionbar的方式肯定和添加menu方式类似;1.常见普通ActionBar先来看一个menu的xml配置...
阅读全文
摘要:一、ListView圆角:重写ListView的onInterceptTouchEvent方法,通过pointToPosition(x,y)方法判断当前点击位置所对应的项,有三种情况:分别是第一项、最后一项、中间项;其实第一种情况又分为两种情况:列表总共只有一项和列表不止一项;参照下边的代码即可理解; @Override public boolean onInterceptTouchEvent(MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: ...
阅读全文
摘要:虽然网上有很多关于Fragment的文章,但我这里还是要写这篇笔记,因为我在编写程序的过程中发现了一个问题,至今未解决,希望得到大家的帮助; PS:当我在Fragment中定义一个名为setIndex(int index)的方法之后,运行程序,就会报错(打印的错误信息显示错误为找不到这个Fragment对应的类),但当把这个方法的名称改为其它的名称之后,程序即可正常运行,我的api level为17和18;先看看Fragment的生命周期方法,其实和Activity基本还是相似的,了解Activity的生命周期,再看Fragment的生命周期方法,也就比较容易理解;先介绍相关概念一、fr...
阅读全文
摘要:View动画效果:1.>>Tween动画通过对View的内容进行一系列的图形变换(平移、缩放、旋转、透明度变换)实现动画效果,补间动画需要使用节点作为根节点,子节点里可以为下表格中的四种动画标签,也可以包继续含标签;动画的定义xml文件需要添加到res/anim文件夹中;动画类型Xml定义动画使用的节点编码定义动画使用的类渐变透明度动画效果AlphaAnimation渐变尺寸缩放动画效果ScaleAnimation画面位置移动动画效果TranslateAnimation画面旋转动画效果RotateAnimation android:toAlpha="0" >
阅读全文
摘要:先看看图片的效果,左边是原图,右边是旋转之后的图;之所以把这个写出来是因为在一个项目中需要用到这样的效果,我试过用FrameLayout布局如上的画面,然后旋转FrameLayout,随之而来也就存在了一些问题——锯齿!在网上搜索之后,有两种方法,一是利用Paint,二是利用Canvas;(1)、p...
阅读全文
摘要:在android应用程序中,经常需要用到dialog对话框让用户知道现在所在进行的操作(比如耗时的操作),或者提示某些信息和状态等,算是比较常用的一个知识点;1、简单对话框 protected void dialog1(AlertDialog.Builder builder) { ...
阅读全文
摘要:public class MyGesture extends SimpleOnGestureListener { private GestureDetector gd; // onGestureListener需要F和onTouchListener配合使用,实际上是onTouchListenerF监听到用户的 // 触摸,他把他所有监听到的用户触摸通知"手势识别"类对象,手势识别类对象处理后触发对应的函数,例如onFling, onLongPress等等。 public void test(MotionEvent ev) { gd.onTouchEvent...
阅读全文
摘要:最近的项目中有通讯录这个模块,里面的通讯录涉及的联系人数量很大,导致在加载页面的时候有点卡,所以就必须得进行优化,优化的最终实现理论是什么?就是让ListView一次性加载的数据较少,后续根据用户操作{向下滑动}再加载更多的数据,避免了一次性加载数据导致程序运行不畅的问题;在参考网上的一些方法之后,总觉得那些方法都不是我想要的,都是一个模子里面刻出来的,大多数都是加footerview,因为我的项目中的ListView的数据源是需要按照一定的顺序排列的,如果加载之后再进行排序又会导致程序运行不畅,所以我想要寻找一种个人认为更容易的方法;实现思路:首先在adapter中保存全部的数据记录,在ad
阅读全文
摘要:Android中对View的更新有很多种方式,使用时要区分不同的应用场合。1.不使用多线程和双缓冲 这种情况最简单,一般只是希望在View发生改变时对UI进行重绘。你只需显式地调用View对象中的invalidate(){关于invalidate的解释:当调用线程处于空闲状态时,会调用onDraw,刷新界面,也就是说,该函数仅是标记当前界面过期,并不直接负责刷新界面;}方法即可。系统会自动调用View的onDraw()方法。2.使用多线程但不使用双缓冲 这种情况需要开启新的线程,新开的线程就不好访问View对象了。强行访问的话会报:android.view.ViewRoot$CalledFro
阅读全文
摘要:一、设置Activity透明度有几种方法:1>.在清单文件中配置Activity时声明android:theme="@android:style/Theme.Translucent"2>.使用自定义主题,先看看自定义主题中需要用到的一些属性设置说明下面是一个简单的半透明效果,类似微信登录切换账号时,下面会弹出三个按钮,上面是半透明的效果; #9000 定义好主题之后需要在Activity配置中进行对主题的引用!在代码中对窗体设置透明度灰度的方法设置透明度(这是窗体本身的透明度,非背景) WindowManager.LayoutParams windowLP =
阅读全文
摘要:ListView往往可能会有不同的数据类型,单类型的数据可能运用会比较少些,这也是最近项目中的一个需求{在发送消息的时候,需要选择联系人,而联系人列表由英文字母索引+联系人组成},上一篇文章只是一个基调,这篇是更复杂的情况;先看一下效果图最开始的时候,打算把两种数据类型放入一个List中,参考上一篇随笔的状态保持的实现,在代码写完了开始测试的时候,发现问题众多,上下滚动的时候左边的CheckBox的选择状态没有很好的保存,会出现混乱选择的情况,于是参考网上的一些做法{寻找的参考方法并没有描述像这样稍稍复杂点的情况,都是TextView,没有状态的保持,没有View的重用,所以写了这篇随笔}并延
阅读全文
摘要:最近在一个项目中,需要在ListView的item中加入CheckBox,但是遇到的一个问题是上下滑动的时候如果有选择了的CheckBox,就会出现选择项错误的问题,下面将个人的解决方法总结如下;先说思路:在ListView的Adapter中,用一个Map保存每一项item的选择状态,在getView方法中,设置Map中保存的某一项的选择状态就实现了状态的保存;每一项的视图child.xml Adapter.javapublic class CAdapter extends BaseAdapter { private List list; private Layout...
阅读全文
摘要:一、缓存:在assets文件夹下添加index.html,里面有一个img标签获取图片!MainActivity:public class MainActivity extends Activity { private WebView webview; private static String url = "file:///android_asset/index.html"; public void getcache(View v) { // 点击获取缓存数据 ImageView iv = new ImageButton(MainActivity.this);...
阅读全文
摘要:画布(Canvas)是图形编程中一个很普通的概念,通常由三个基本的绘图组件组成: Canvas 提供了绘图方法,可以向底层的位图绘制基本图形。 Paint 也称为"刷子",Paint可以指定如何将基本图形绘制到位图上。 Bitmap 绘图的表面。 Android绘图API支持透明度、渐变填充、圆边矩
阅读全文
摘要:在Activity中进行功能的实现,需要用到第三方jar包:pinyin4j.jar,此jar包用于将汉字转换为汉语拼音。首先,设置右侧边栏索引列表(A-Z),并且设置列表点击,Touch事件,点击索引,如果在内容列表中存在对应的数据,则自动跳转显示到那一条数据,如果没有则不处理,长按的时候在内容列...
阅读全文
摘要:Android程序默认的Activity标题栏只能显示一段文字,而且不能改变它的布局、颜色、标题栏的高度等。如果想要在标题栏加上个图标、 button、输入框、进度条、修改标题栏颜色等,只能使用自定义的标题栏。自定义标题栏可以通过在onCreate函数中添加以下代码来实现,需要注意的是代码的顺序必须按照下面的样式,否则将无效。 public static void setTitle(Activity activity, int resId) { activity.requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); ...
阅读全文
摘要:Insert title here 姓名 存款 电话 刷新1.以上是布局页面!2.在MainActivity对应的Layout文件中,添加一个WebView控件,用于显示上面的html;3.获取数据源的两个类:public class BeanService { public List getBeans() { List list = new ArrayList(); list.add(new Bean(1, "1", "138837416x...
阅读全文
摘要:TabWidget类似于Android 中查看电话薄的界面,通过多个标签切换显示不同内容。要实现这一效果,首先要了解TabHost,它是一个用来存放多个Tab标签的容器。每一个Tab都可以对应自己的布局,比如,电话薄中的Tab布局就是一个List的线性布局了。要使用TabHost,首先需要通过getTabHost方法来获取TabHost的对象,然后通过addTab方法来向TabHost中添加 Tab。当然每个Tab在切换时都会产生一个事件,要捕捉这个事件需要设置TabActivity的事件监听 setOnTabChangedListener。1、布局文件 ...
阅读全文
摘要:当我们第一次下载QQ并且打开的时候,会有一个新手引导,引导是几张图片,再加上一些文字说明,向右滑动,直到结束,今天一大早起来研究了一下关于此种效果的实现之ViewPager控件。下面这个例子将用ViewPager实现横向移动相册,ViewPager有一个对应的PagerAdapter,用于绑定数据;我们需要继承此类并实现自己的功能。1、首先定义一个显示项所需要使用的数据对象ImageItempublic class ImageItem { private int id;// 资源id private String name;// 显示的名称 public String get...
阅读全文
浙公网安备 33010602011771号