ListView中加载ImageView,TextView和Button组件的小例子。
package com.listview;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.database.DataSetObserver;
import android.os.Bundle;
import https://www.doczj.com/doc/6510612435.html,youtInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class SecondActivity extends Activity{
//自定义一个MyAdapter,继承ListAdapter
public class MyAdapter implements ListAdapter{
private List
private LayoutInflater layouyinflater;
public MyAdapter(Context context,List
layouyinflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return list.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public int getItemViewType(int position) {
// TODO Auto-generated method stub
return position;
}
//获取item.xml文件之中的相关控件,并且为其设置相应的图片或标题
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
if(convertView == null){
convertView = layouyinflater.inflate(list.get(position).getLayoutId(), null);
ImageView imageview = (ImageView)convertView.findViewById(R.id.evaluateimage);
imageview.setBackgroundResource(list.get(position).getImage()) ;
TextView textview = (TextView)convertView.findViewById(R.id.evaluatetitle);
textview.setTag(list.get(position).getTitle());
Button button = (Button)convertView.findViewById(R.id.button);
button.setText(list.get(position).getButton());
//设置按钮监听事件
button.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(SecondActivity.this, position+"号按钮被按下",Toast.LENGTH_SHORT).show();
}
});
}
return null;
}
@Override
public int getViewTypeCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return true;
}
@Override
public boolean isEmpty() {
// TODO Auto-generated method stub
return true;
}
@Override
public void registerDataSetObserver(DataSetObserver observer) {
// TODO Auto-generated method stub
}
@Override
public void unregisterDataSetObserver(DataSetObserver observer) {
// TODO Auto-generated method stub
}
@Override
public boolean areAllItemsEnabled() {
// TODO Auto-generated method stub
return true;
}
@Override
public boolean isEnabled(int position) {
// TODO Auto-generated method stub
return true;
}
}
// 定义list
List
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(https://www.doczj.com/doc/6510612435.html,yout.activity_main);
// 定义图片ID集合
final int[] imageId = new int[]{
R.drawable.img13,R.drawable.img14,R.drawable.img15,R.drawable. img16,
R.drawable.img17,R.drawable.img18,R.drawable.img19,R.drawable. img20};
// 定义TextView内容集合
String[] title = new String[] { "保密设置", "安全", "系统设置", "上网", "我的文档",
"GPS导航", "我的音乐", "E-mail" };
// 定义Button标题集合
String[] button = new String[]{"1","2","3","4","5","6","7","8"};
// 用for循环将定义的集合之中的值放入list之中
for(int i = 0; i < 8; i++){
DetailEntity de = new DetailEntity();
de.setLayoutId(https://www.doczj.com/doc/6510612435.html,yout.item);
de.setImage(imageId[i]);
de.setTitle(title[i]);
de.setButton(button[i]);
list.add(de);
};
ListView lv = (ListView)this.findViewById(R.id.evaluatelistView);
// 自定义MyAdapter适配器
MyAdapter ma = new MyAdapter(this, list);
// 将适配器与ListView绑定
lv.setAdapter(ma);
// 为ListView设置监听器
lv.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView> arg0, View arg1, int int position,long id) {
// TODO Auto-generated method stub
Toast.makeText(SecondActivity.this,"您选中的是第"+position+"列",Toast.LENGTH_SHORT).show();
}
});
}
public class DetailEntity {
private String Buttontitle;
private int imageId;
private String Title;
private int LayoutId;
public void setLayoutId(int item) {
// TODO Auto-generated method stub
LayoutId = item;
}
public CharSequence getButton() {
// TODO Auto-generated method stub
return Buttontitle;
}
public Object getTitle() {
// TODO Auto-generated method stub
return Title;
}
public int getImage() {
// TODO Auto-generated method stub
return imageId;
}
public int getLayoutId() {
// TODO Auto-generated method stub
return LayoutId;
}
public void setButton(String buttontitle) {
// TODO Auto-generated method stub
Buttontitle = buttontitle;
}
public void setTitle(String title) {
// TODO Auto-generated method stub
Title = title;
}
public void setImage(int imageid) {
// TODO Auto-generated method stub
imageId = imageid;
}
}
}
XML文件:
MainActivity.xml文件:
xmlns:android="https://www.doczj.com/doc/6510612435.html,/apk/res/android" xmlns:tools="https://www.doczj.com/doc/6510612435.html,/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity"> android:id="@+id/evaluatelistView" android:layout_height="wrap_content" android:layout_width="match_parent">
Item.xml文件:
xmlns:android="https://www.doczj.com/doc/6510612435.html,/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> android:id="@+id/evaluateimage" android:paddingRight="10px" android:paddingTop="20px" android:paddingBottom="20px" android:adjustViewBounds="true" android:maxWidth="72px" android:maxHeight="72px" android:layout_height="wrap_content" android:layout_width="wrap_content"/> android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="10px" android:layout_gravity="center" android:id="@+id/evaluatetitle" android:layout_toRightOf="@id/evaluateimage" />
android 自定义圆角头像以及使用declare-styleable进行配置属性解析由于最新项目中正在检查UI是否与效果图匹配,结果关于联系人模块给的默认图片是四角稍带弧度的圆角,而我们截取的图片是正方形的,现在要给应用统一替换。应用中既用到大圆角头像(即整个头像是圆的)又用到四角稍带弧度的圆角头像,封装一下以便重用。以下直接见代码 [java] view plain copy 在CODE上查看代码片派生到我的代码片 package com.test.demo; import com.test.demo.R; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.BitmapShader; import android.graphics.Canvas; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.RectF; import android.graphics.Shader.TileMode; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Parcelable; import android.util.AttributeSet; import android.util.Log; import android.util.TypedValue; import android.widget.ImageView; /** * 圆角imageview */ public class RoundImageView extends ImageView { private static final String TAG = "RoundImageView"; /** * 图片的类型,圆形or圆角 */ private int type; public static final int TYPE_CIRCLE = 0; public static final int TYPE_ROUND = 1; /** * 圆角大小的默认值
Android四大组件 Android开发平台是开放的平台,而位于四层框架顶端的应用开发,必然涉及到Android组件。本文将为大家详细介绍Android组件。 组件(Component),在谈及所谓架构和重用的时候,是一个重要的事情。很多时候都会说基于组件的软件架构,指的是期望把程序做乐高似的,有一堆接口标准封装完整的组件放在哪里,想用的时候取上几个一搭配,整个程序就构建完成了。 在开篇的时候就在说,Android是一个为组件化而搭建的平台,它引入所谓Mash-Up的概念,这使得你在应用的最上层,想做的不组件化都是很困难的一件事情(底层逻辑,好吧,管不了...)。具体说来,Android有四大组件四喜丸子:Activity、Service、Broadcast Receiver、Content Provider。 Activity 做一个完整的Android程序,不想用到Activity,真的是比较困难的一件事情,除非是想做绿叶想疯了。因为Activity是Android程序与用户交互的窗口,在我看来,从这个层面的视角来看,Android的Activity特像网站的页面。 首先,一个网站,如果一张页面都没有,那...,真是一颗奇葩。而一张页面往往都有个独立的主题和功能点,比如登录页面,注册页面,管理页面,如是。 在每个页面里面,会放一些链接,已实现功能点的串联,有的链接点了,刷,跑到同一站点的另一个页面去了;有的链接点了,啾,可能跳到其他网站的页面去;还有的链接点了,恩...,这次没跑,但当前页面的样子可能有所变化了。这些模式,和Activity给人的感觉很像,只不过实现策略不同罢了,毕竟Android这套架构的核心思想,本身就来自源于Web的Mash-Up概念,视为页面的客户端化,也未尝不可。 Activity,在四大组件中,无疑是最复杂的,这年头,一样东西和界面挂上了勾,都简化不了,想一想,独立做一个应用有多少时间沦落在了界面上,就能琢磨清楚了。从视觉效果来看,一个Activity占据当前的窗口,响应所有窗口事件,具备有控件,菜单等界面元素。从内部逻辑来看,Activity需要为了保持各个界面状态,需要做很多持久化的事情,还需要妥善管理生命周期,和一些转跳逻辑。对于开发者而言,就需要派生一个Activity的子类,然后埋头苦干上述事情。对于Activity的更多细节,先可以参见:reference/android/app/Activity.html。后续,会献上更为详尽的剖析。 Service 服务,从最直白的视角来看,就是剥离了界面的Activity,它们在很多Android的概念方面比较接近,都是封装有一个完整的功能逻辑实现,只不过Service不抛头露脸,只是默默无声的做坚实的后盾。 但其实,换个角度来看,Android中的服务,和我们通常说的Windows服务,Web的后台服务又有一些相近,它们通常都是后台长时间运行,接受上层指令,完成相关事务的模块。
Android平台我的日记 设计文档 项目名称:mydiray 项目结构示意: 阶段任务名称(一)布局的设计 开始时间: 结束时间: 设计者: 梁凌旭 一、本次任务完成的功能 1、各控件的显示 二、最终功能及效果 三、涉及知识点介绍 四、代码设计 activity_main.xml: android:layout_centerHorizontal="true" android:layout_marginTop="88dp" android:text="@string/wo" android:textSize="35sp"/> android 自定义控件的过程 invalidate()会导致computeScroll()以及onDraw()方法的执行computeScroll()方法是在屏幕流动的时候不停的去调用,scrollTo(int x,int y)则是滚动到相应的位置; scrollBy(int x, int y)则是移动一些距离,X为正是向左移动,为负时向右移动,Y与X的意义一个,只是是上下移动而已View对象显示在屏幕上,有几个重要步骤: 1.构造方法创建对象 2.测量View的大小onMeasure(int,int); 3.确定View的位置,View自身有一些权,决定权在父View手中. onLayout();基本上不常用,在继承View的时候基本上用不着,但在继承ViewGroup的时候的就要用到了,因为要对View进行布局,确定View的位置,确定的时候使用 指定子View的位置,左,上,右,下,是指在ViewGroup坐标系中的位置https://www.doczj.com/doc/6510612435.html,yout(int xtop,int ytop, int xbottom, int ybottom); 4.绘制View的内容onDraw(Canvas) 实现过程: 1、构造方法: /** * 在布局文件中声名的view,创建的时候由系统调用 * * @param context * 上下文对象 * @param attrs * 属性集 */ public MyToggleButton(Context context, AttributeSet attrs) { super(context, attrs); initView(); } 2、测量View的大小: /** * 测量尺寸时的回调方法 */ 《Android 程序设计课程》课程教学大纲 一、课程基本信息 二、理论教学内容及基本要求 1 Android 操作系统 本章主要对Android 的发展、特点、环境搭建和体系结构进行简要介绍。并且讲解了JDK、Eclipse、Android SDK 软件的下载及安装的基本知识。对Android 应用程序进行解析,提高读者对程序的创建、目录的结构、资源的管理以及对程序权限的理解。最后讲解如何调试Android 程序。 2 Android 生命周期与组件通信 本章主要讲述了Android 生命周期和组件之间的通信。生命周期主要讲述了Android四大组件之一的Activity 生命周期, 包括生命周期函数、栈结构和基本状态三方面。组件的通信靠Intent 实现, 以及Intent 基本构成。 3 Android 用户界面设计 本章主要从Android 用户界面开发出发, 讲述了开发过程中经常使用到的控件, 包括菜单、常用基础控件、对话框与消息框。界面中控件的结构及位置等需要通过有效的界面布局控制, Android 中提供了5 种界面布局格式, 即线性布局、相对布局、表格布局、绝对布局和框架布局。界面中还有一种必要的操作处理———外部操作的响应, 通过有效的事件机制完成。 4 Android 数据存储与交互 本章主要讲述了Android 数据存储与交互方面的内容, 系统中数据交互主要通过五种方式实现, 共享优先数据机制、SQLite 数据库、File 文件机制、内容提供器控件和网络存储。其中在应用程序中最常用也是最有效的数据交互方式是使用SQLite 数据库。 5 Android 后台服务与事件广播 本章主要讲述了Android 后台服务、事件广播和常驻程序。后台服务由系统提供的Service 组件实现, 可分为本地服务和远程服务。事件广播机制主要依靠BroadCast Reciver 组件实现。常驻程序AppWidget又称为窗口小部件, 是在HomeScreen上显示的小部件, 开发时常用AppWidgetProvider 和AppWidgetProviderInfo 类实现。 6 媒介与网络 本章介绍了Android 平台下通过程序实现音频、视频播放等操作。分别介绍了从源文件播放、文件系统播放和流媒体播放等方式。并且介绍了Android 图形绘制与特效, 包括图形的平移、旋转及缩放等操作, 保存指定格式图形文件。编写专业的绘图或控制图形动画的应用程序。以及如何使用Android 手机中内置的高性能WebKit 内核浏览器浏览网页, 使用HTTP 和URL 获得网络资源等内容。 7 Android NDK 本章介绍了Android NDK 的相关知识, 从NDK 的简单介绍到开发环境的 Android进阶——自定义View之自己绘 制彩虹圆环调色板 引言 前面几篇文章都是关于通过继承系统View和组合现有View来实现自定义View的,刚好由于项目需要实现一个滑动切换LED彩灯颜色的功能,所以需要一个类似调色板的功能,随着手在调色板有效区域滑动,LED彩灯随即显示相应的颜色,也可以通过左右的按钮,按顺序切换显示一组颜色,同时都随着亮度的改变LED彩灯的亮度随即变化,这篇基本上把继承View重绘实现自定义控件的大部分知识总结了下(当然还有蛮多没有涉及到,比如说自适应布局等),源码在Github上 一、继承View绘制自定义控件的通用步骤 自定义属性和继承View重写onDraw方法 实现构造方法,其中public RainbowPalette(Context context, AttributeSet attrs) 必须实现,否则无法通过xml引用,public RainbowPalette(Context context) ,public RainbowPalette(Context context, AttributeSet attrs, int defStyleAttr)可选,通常在构造方法中完成属性和其他成员变量的初始化 重写onMeasure方法,否则在xml中有些设置布局参数无效 @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(width, height);//重新设置View的位置,若不重写的话,则不会布局,即使设置centerInParent为true也无效 //setMeasuredDimension(width,height); } 手动调用invalidate或者postInvalidateon方法完成界面刷新 重写onTouchEvent方法实现基本的交互 定义回调接口供外部调用 二、彩虹圆环调色板设计思想 选择题 1. 下面不是Android四大组件之一的(B ) A. Activity B.Intent C. Service D. ContentProvider 2. 下面关于广播叙述错误的是(A) A. 广播是Android四大组件之一 B. BroadcastReceiver有两种注册方式,静态注册和动态注册 C. 静态注册需要在Mainfest.xml中配置 D. 动态注册需要在应用退出时候接触广播的注册。 3. 下面关于BroadcastReceiver错误的是(B): A. BroadcastReceiver有两种注册方式,静态注册和动态注册。 B. BroadcastReceiver必须在AndroidMainfest文件中声明 C. BroadcastReceiver的使用,一定有一方发送广播,有一方监听注册广播,onReceive方法才会被调用。 D. 广播发送的Intent都是隐式启动。 4. 下面关于谁先接收广播顺序错误的是(B) A. 有序广播,优先级高的先接收 B. 有序广播,同优先级的动静态广播接收器,静态优先于动态。 C. 有序广播,同优先级的动态广播接收器,先注册的大于后注册的。 D. 普通广播时,无视优先级,动态广播接收器优先于静态广播接收器 5. 下面关于广播说法错误的是(B) A. 广播分为有序广播和无序广播 B. 使用abortBroadcast方法可以中断所有广播的传递。 C. 广播注册方式分为动态和静态 D. sendOrderBroadcast用来向系统广播有序事件,sendBroadcast()是用来广播无序事件。 6. 下列关于Intent启动组件说法错误的是(C) A.startActivity( ) B. startService( ) C. startBroadcastReceiver() D.startActivityForResult() 7. 对于广播的发送,Intent的启动方式是(B) A.显式启动 B. 隐式启动 C. A和B都可以 D. 以上说法都不正确。 8. 下面关于Notification的说法正确的是(D): A. NotificationManager man = new NotificationManager(); B. PendingIntent contentIntent= new PendingIntent(); C. RemoteViews contentView = new RemoteViews(); D. Notification notification = new Notification(); 9. 关于ContenValues类说法正确的是( A ) A、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的 名是String类型,而值都是基本类型 B、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的 名是任意类型,而值都是基本类型 C、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的 名,可以为空,而值都是String类型 D、他和Hashtable比较类似,也是负责存储一些名值对,但是他存储的名值对当中的名是String类型,而值也是String类型 10.在手机开发中常用的数据库是(A) A,SQLite3 B,Oracle C,Sql Server D,Db23 自定义Dialog; dialog = new Dialog(this); dialog.setContentView(https://www.doczj.com/doc/6510612435.html,yout.by_baseinfo); dialog.setTitle("dialog的title"); /* * 获取Dialog的窗口对象及参数对象以修改对话框的布局设置, 可以直接调用this.getWindow(),表示获得这个Activity的Window * 对象,这样这可以以同样的方式改变这个Activity的属性. * Activity不可见时getWindow()返回值为null; */ Window dialogWindow = dialog.getWindow(); // 对话框的布局设置参数; https://www.doczj.com/doc/6510612435.html,youtParams layoutParams = dialogWindow.getAttributes(); // 设置Window中的内容为左上对齐; dialogWindow.setGravity(Gravity.LEFT | Gravity.TOP); /* * lp.x与lp.y表示相对于原始位置的偏移. * 当参数值包含Gravity.LEFT时,对话框出现在左边,所以lp.x就表示相对左边的偏移,负值忽略. * 当参数值包含Gravity.RIGHT时,对话框出现在右边,所以lp.x就表示相对右边的偏移,负值忽略. * 当参数值包含Gravity.TOP时,对话框出现在上边,所以lp.y就表示相对上边的偏移,负值忽略. * 当参数值包含Gravity.BOTTOM时,对话框出现在下边,所以lp.y就表示相对下边的偏移,负值忽略. * 当参数值包含Gravity.CENTER_HORIZONTAL时 * ,对话框水平居中,所以lp.x就表示在水平居中的位置移动lp.x像素,正值向右移动,负值向左移动. * 当参数值包含Gravity.CENTER_VERTICAL时 * ,对话框垂直居中,所以lp.y就表示在垂直居中的位置移动lp.y像素,正值向右移动,负值向左移动. * gravity的默认值为Gravity.CENTER,即Gravity.CENTER_HORIZONTAL | * Gravity.CENTER_VERTICAL. * * 本来setGravity的参数值为Gravity.LEFT | Gravity.TOP时对话框应出现在程序的左上角,但在 * 我手机上测试时发现距左边与上边都有一小段距离,而且垂直坐标把程序标题栏也计算在内了, Gravity.LEFT, Gravity.TOP, * Gravity.BOTTOM与Gravity.RIGHT都是如此,据边界有一小段距离 */ // 相对于屏幕原位置(加上标题栏) 的偏移量; lp.x = 100; // 新位置X坐标 《Android基础》课程标准 一、课程定位 本课程是计算机专业基于Java方向的Android应用层程序开发的一门专业核心课程。作为Java程序设计、数据库原理与应用等课程的后续课程,主要在于培养学生应用Android技术进行Android应用程序开发的能力,并培养其良好的编程规范和职业习惯。 二、课程目标 通过案例驱动的学习和综合训练,熟练掌握Android应用程序开发的基本知识和技能,并能结合Android中的常用控件和四大系统组件进行Android应用程序的开发,并为后续Android高级知识的学习做下铺垫。在课程的学习中,培养诚实、守信、坚韧不拔的性格,培养善于沟通表达、善于自我学习、具备团队协作的能力。并养成规范的编码、按时交付软件等良好的工作态度。 (一)知识目标 1.掌握Android开发环境的搭建;熟悉Android应用的基本框架,了解Activity、layout的关系; 2.指导学生进行需求分析报告的拟定以及实训报告的编写; 3.熟练掌握Android常用的UI组件的用法,熟练使用Android的UI组件来搭建用户界面;掌握Android 中用户事件处理的基本方法; 4.掌握APP系统分层架构的搭建; 5.熟练掌握AdapterView相关UI组件以及Adapter模式、常见Adapter的定义; 6.熟悉Activity、Service和BroadcastReceiver的生命周期方法,熟练掌握它们的用法 7.熟悉Intent的用法,熟练使用Intent的诸多属性用途及用法; 8.熟练掌握Service与广播机制的使用和工作原理,为应用开发打下基础; 9.掌握SQLite的语法,熟练掌握Android SQLite 数据库的使用。能够用多种方式实现数据存储和数据 共享; 10.掌握Android的异步加载机制; 11.了解自定义控件的实现原理并掌握自定义技巧。 12.了解Android应用程序的屏幕适配、国际化方式及APP上架流程和盈利方式。 (二)职业能力目标 今天和大家分享下组合控件的使用。很多时候android自定义控件并不能满足需求,如何做呢?很多方法,可以自己绘制一个,可以通过继承基础控件来重写某些环节,当然也可以将控件组合成一个新控件,这也是最方便的一个方法。今天就来介绍下如何使用组合控件,将通过两个实例来介绍。 第一个实现一个带图片和文字的按钮,如图所示: 整个过程可以分四步走。第一步,定义一个layout,实现按钮内部的布局。代码如下: 1. 2. android自定义View之Android手机通讯录制作 我们的手机通讯录一般都有这样的效果,如下图: OK,这种效果大家都见得多了,基本上所有的Android手机通讯录都有这样的效果。那我们今天就来看看这个效果该怎么实现。 一.概述 1.页面功能分析 整体上来说,左边是一个ListView,右边是一个自定义View,但是左边的ListView 和我们平常使用的ListView还有一点点不同,就是在ListView中我对所有的联系人进行了分组,那么这种效果的实现最常见的就是两种思路: 1.使用ExpandableListView来实现这种分组效果 2.使用普通ListView,在构造Adapter时实现SectionIndexer接口,然后在Adapter 中做相应的处理 这两种方式都不难,都属于普通控件的使用,那么这里我们使用第二种方式来实现,第一种方式的实现方法大家可以自行研究,如果你还不熟悉ExpandableListView的使用,可以参考我的另外两篇博客: 1.使用ExpandableListView实现一个时光轴 2.android开发之ExpandableListView的使用,实现类似QQ好友列表 OK,这是我们左边ListView的实现思路,右边这个东东就是我们今天的主角,这里我通过自定义一个View来实现,View中的A、B......#这些字符我都通过canvas的drawText 方法绘制上去。然后重写onTouchEvent方法来实现事件监听。 2.要实现的效果 要实现的效果如上图所示,但是大家看图片有些地方可能还不太清楚,所以这里我再强调一下: 1.左边的ListView对数据进行分组显示 2.当左边ListView滑动的时候,右边滑动控件中的文字颜色能够跟随左边ListView 的滑动自动变化 3.当手指在右边的滑动控件上滑动时,手指滑动到的地方的文字颜色应当发生变化,同时在整个页面的正中央有一个TextView显示手指目前按下的文字 一、单选题 退出activity对一些资源以及状态的操作保存,可以在生命周期 的哪个函数中进行( A ) A、onPause() B、onCreate() C、onResume() D、onStart() Android项目工程下面的assets目录的作用是什么( B ) A、放置应用到的图片资源。Res/drawable B、主要放置一些文件资源,这些文件会被原封不动打包到apk里面 C、放置字符串,颜色,数组等常量数据res/values D、放置一些与UI相应的布局文件,都是xml文件res/layout 下列不属于android布局的是( C ) A、FrameLayout B、LinearLayout C、BorderLayout D、TableLayout E、RelativeLayout Intent的作用的是( A ) A、intent是连接四大组件的纽带,可以实现界面间切换,可以包含动作和动作数据; B、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失service C、实现应用程序间的数据共享contentprovider D、处理一个应用程序整体性的工作 下列哪个是AbsoluteLayout中特有的属性( B ) A、android:layout_height B、android:layout_x C、android:layout_above D、android:layout_toRightOf RatingBar组件中不能用属性直接设置的是( D) A、五角星个数 B、当前分数 C、分数的增量 D、五角星的色彩 在手机开发中常用的数据库是( A ) A、,sqlLite B、Oracle C、SqlServer D、Db23 关于BroadcastReceiver的说法不正确的是( B ) A)是用来接收广播Intent的 B),一个广播Intent只能被一个订阅了此广播的BroadcastReceiver所接收 C)对有序广播,系统会根据接收者声明的优先级别按顺序逐个执行接收者 D)接收者声明的优先级别在 一、单选题 退出 activity 对一些资源以及状态的操作保存,可以在生命周期 的哪个函数中进行( A ) A、onPause() B、onCreate() C、onResume() D、onStart() Android 项目工程下面的 assets 目录的作用是什么 ( B ) A、放置应用到的图片资源。 Res/drawable B、主要放置一些文件资源,这些文件会被原封不动打包到 apk 里面 C、放置字符串,颜色,数组等常量数据 res/values D、放置一些与 UI 相应的布局文件,都是 xml 文件 res/layout 下列不属于android布局的是( C ) A、FrameLayout B、LinearLayout C、BorderLayout D、TableLayout E、RelativeLayout Intent 的作用的是 ( A ) A、intent是连接四大组件的纽带,可以实现界面间切换,可以包含动作和动作数据; B、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失 service C、实现应用程序间的数据共享 contentprovider D、处理一个应用程序整体性的工作 下列哪个是AbsoluteLayout中特有的属性 ( B ) A、android:layout_height B、android:layout_x C、android:layout_above D、android:layout_toRightOf RatingBar组件中不能用属性直接设置的是( D) A、五角星个数 B、当前分数 C、分数的增量 D、五角星的色彩 在手机开发中常用的数据库是( A ) A、,sqlLite B、Oracle C、Sql Server D、Db23 关于BroadcastReceiver的说法不正确的是( B ) A)是用来接收广播Intent的 B),一个广播Intent只能被一个订阅了此广播的BroadcastReceiver所接收 C)对有序广播,系统会根据接收者声明的优先级别按顺序逐个执行接收者 D)接收者声明的优先级别在 Android高手进阶教程(三)之----Android 中自定义View的应用. 2010-04-18 21:11:25 标签:Android进阶View定义教程 原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。https://www.doczj.com/doc/6510612435.html,/1556324/311457 大家好我们今天的教程是在Android 教程中自定义View 的学习,对于初学着来说,他们习 惯了Android 传统的页面布局方式,如下代码: view plaincopy to clipboardprint? 1. 2. Android应用开发经典面试题 1、Android的四大组件是哪些,它们的作用? 答:Activity:Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为保持各界面的状态,做很多持久化的事情,妥善管理生命周期以及一些跳转逻辑 service:后台服务于Activity,封装有一个完整的功能逻辑实现,接受上层指令,完成相 关的食物,定义好需要接受的Intent提供同步和异步的接口 Content Provider:是Android提供的第三方应用数据的访问方案,可以派生Content Provider类,对外提供数据,可以像数据库一样进行选择排序,屏蔽内部数据的存储细节,向外提供统一的借口模型,大大简化上层应用,对数据的整合提供了更方便的途径 BroadCast Receiver:接受一种或者多种Intent作触发事件,接受相关消息,做一些简单 处理,转换成一条Notification,统一了Android的事件广播模型 2、请介绍下Android中常用的五种布局。 常用五种布局方式,分别是:FrameLayout(框架布局),LinearLayout(线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局)。 一、FrameLayout:所有东西依次都放在左上角,会重叠,这个布局比较简单,也只能放 一点比较简单的东西。 二、LinearLayout:线性布局,每一个LinearLayout里面又可分为垂直布局 (android:orientation=”vertical”)和水平布局(android:orientation=”horizontal”)。当垂直布局时,每一行就只有一个元素,多个元素依次垂直往下;水平布局时,只有一行,每一个元素依次向右排列。 三、AbsoluteLayout:绝对布局用X,Y坐标来指定元素的位置,这种布局方式也比较简单,但是在屏幕旋转时,往往会出问题,而且多个元素的时候,计算比较麻烦。 四、RelativeLayout:相对布局可以理解为某一个元素为参照物,来定位的布局方式。主 要属性有:相对于某一个元素android:layout_below、android:layout_toLeftOf相对于父 元素的地方android:layout_alignParentLeft、android:layout_alignParentRigh;五、TableLayout:表格布局,每一个TableLayout里面有表格行TableRow,TableRow里面可以具体定义每一个元素。每一个布局都有自己适合的方式,这五个布局元素可以相互嵌套应用,做出美观的界面。 Android应用程序由一些零散的有联系的组件组成,通过一个工程manifest绑定在一起。在manifest中,描述了每一个组件以及组件的作用,其中有6个组件,它们是Android 应用程序的基石: Activities(活动)应用程序的显示层。每一个画面对应于你的应用程序,将会是Activity类的扩展。Activity使用Views去构建UI来显示信息和响应用户的行为。就桌面开发而言,一个Activity相当于一张Form。你在这章中将会学习到更多关于Activities。 Services(服务)Android应用程序中不可见的“工人”。Service组件运行时不可见,但它负责更新的数据源和可见的Activity,以及触发通知。它们常用来执行一些需要持续运行的处理,当你的Activity已经不处于激活状态或不可见。你将在第8章学习怎样创建Service。 Content(内容)提供共享的数据存储。Content Provider(内容提供器)用来管理和共享应用程序的数据库。在应用程序间,Content Provider是共享数据的首选方式。这意味着,你可以配置自己的Content Provider去存取其他的应用程序或者通过其他应用程序暴露的Content Provider去存取它们的数据。Android设备本身包含了几个Content Provider来访问像联系人信息等有用的数据库。你将在第6章学习怎样创建和使用Content Provider。 Intents(意图)简单的消息传递框架。使用Intent,你可以在整个系统内广播消息或者给特定的Activity或者服务来执行你的行为意图。系统会决定那个(些)目标来执行适当的行为。 Broadcast Receivers(广播接收器)Intent广播的“消费者”。通过创建和注册一个Broadcast Receiver,应用程序可以监听符合特定条件的广播的Intent。Broadcast Receiver 会自动的启动你的Android应用程序去响应新来的Intent。Broadcast Receiver是事件驱动程序的理想手段。 Notifications(通知)用户通知的框架。Notification用来在不需要焦点或不中断它们当前Activity的情况下提示用户。它们是Service或Broadcast Receiver获得用户注意的首选方式。例如,当设备收到文本信息或外部来电时,它通过闪光,发声,显示图标或显示对话框信息来提醒你。在第8章里,你可以使用Notification来触发这些事件。 一、Activity详解 Activty的生命周期的也就是它所在进程的生命周期。android 自定义控件的过程
Android程序设计教程教学大纲
Android进阶——自定义View之自己绘制彩虹圆环调色板
(带答案)Android复习资料
android自定义布局或View
Android基础应用课程标准
Android自定义控件
android自定义View之Android手机通讯录制作
Android复习练习题
Android复习练习题
Android自定义View
Android应用开发经典面试题
Android四大组件的详细讲解