android 开发的步骤

android ui 事件触发机制

Activity 编写中一般为三部曲
1。bending视图
setContentView(R.layout.open);

2。初始化UI
 (Button)this.findViewById(R.id.ok);

3。绑定事件
ok.setOnClickListener(this);

localhost 代表是本机ip 127.0.0.1
在android 模拟器上用 10.0.2.2访问你的电脑本机

因为在android中,每个应用程序是可以实现数据共享的,
对于每一个应用程序程序都拥有一个contentprovider实例进行存储,
而contentresolver则是用于管理所有程序的contentprovider实例,
通过contentrescolver可以获得数据,插入数据等……至于getcontentrescolver()就是获取实例

二   。。。。自定义adapter

1。extends baseAdapter类

2。构造一个有参方法
public UserListAdapter(Context context,List<User> list)
{
     //2.1  取得布局管理器(为下面的获取自定义视图准备)
	layoutInflater = LayoutInflater.from(context);
	View view=layoutInflater.inflate(R.layout.list, null);
      }

3.在重写getView方法中编辑自定义视图

public View getView(int position, View convertView, ViewGroup parent) {
		   ListItemView  listItemView = null;   
	if (convertView == null) {   
		 listItemView = new ListItemView();    
		 //获取list_item布局文件的视图   
		 convertView = layoutInflater.inflate(R.layout.list, null);   
		  //获取控件对象   
		 listItemView.image = (ImageView)convertView.findViewById(R.id.IV_imageItem);   
		 listItemView.name= (TextView)convertView.findViewById(R.id.show_name);   
		 listItemView.age= (TextView)convertView.findViewById(R.id.show_age); 
		 listItemView.name.setText(list.get(position).getName()+"");
		 listItemView.age.setText(list.get(position).getAge()+"岁");
		 listItemView.image.setImageResource(Integer.parseInt(list.get(position).getImage()+""));
		 	            //设置控件集到convertView   
			            convertView.setTag(listItemView);   
        	}
		 	       return convertView;
	}

  ///4.反射机制drawble包下的所有图片
  File[] fields=R.drawble.class.getDeclaredFields();
     for(Filed field:fields){

            index=field.getInt(R.drwable.class);
	    //保存图片id
	    imgList.add(index);
     }


三 。。。。自定义dialog

 1。extends Dialog
 . 构造有参方法
  (注意自定义dialog本身没有上下文的对象,所以要引入目标Activity对象IndexActivity)
   public NewBudleDialog(Context context,IndexActivity main) {
		super(context);
		this.context=context;
		this.main=main;
	}
  2。  // 重写它的onCreate
          @Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.open);//自定义布局
		findView();//初始化控件
		setListeners();	//监听
	}
  

四  SimpleAdapter和gridview在帮助文档中挺好的

五  动态给editText赋值的时候,int类型要转换为String(不然报source Id String 错误)

六  Button和listItemOnClkic ,焦点覆盖问题

七 SlidingDrawer(上下屏车换)

    iv= (ImageView) this.findViewById(R.id.handle);
        drawer.setOnDrawerOpenListener(new MyDrawerOpenListener());
        drawer.setOnDrawerCloseListener(new MyDrawerCloseListener());
    }
    
    class MyDrawerOpenListener implements OnDrawerOpenListener{

		@Override
		public void onDrawerOpened() {
			iv.setImageResource(R.drawable.icon);
		}
    }
    class MyDrawerCloseListener implements OnDrawerCloseListener{
		@Override
		public void onDrawerClosed() {
			iv.setImageResource(R.drawable.bt03);
		}
    } 
    class MyOnclick implements OnClickListener{
		@Override
		public void onClick(View v) {
			  
		}
    }

 八。 两个页面间回调函数

   A activity 中重写onActivityResult方法
            @Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
             //tresultCode返回结果值
		if(requestCode==1&this.RESULT_OK==resultCode)
		result=data.getExtras().getString("result");
		Toast.makeText(this,result,Toast.LENGTH_LONG).show();
	}

	class Mybnt implements OnClickListener{
		@Override
		public void onClick(View arg0) {
			Intent intent=new Intent(MainActivity.this, b.class);
                  //startActivityForResult跳转,并设定回调值
			MainActivity.this.startActivityForResult(intent, 1);
	}
    }

   在B Activity中
  	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		this.setContentView(R.layout.b);
		Intent intent=new Intent();
		intent.putExtra("result","你通过了");
		this.setResult(this.RESULT_OK,intent);
		this.finish();
	}

九。contentProvider(数据提供者)
    继承一个ContentProvider
    public class UserDao extends ContentProvider{
     private DBHelper helper;
     private static final UriMatcher MATCHER=new UriMatcher(UriMatcher.NO_MATCH);
     public static final String PROVIDER_URL="com.org.userdao";//这里uri必须注册provider中authorities com.org.userdao

     static{	
    	       MATCHER.addURI(PROVIDER_URL, "qingyou", 1);//qingyou为表名称
 	       MATCHER.addURI(PROVIDER_URL, "qingyou/#", 2);
     }
     @Override
 	public boolean onCreate() {
 		helper=new DBHelper(this.getContext());
 		return true;
 	}
	@Override
	public int delete(Uri uri, String selection, String[] selectionArgs) {
		int num=0;
		switch (MATCHER.match(uri)) {
		case 1:
		 num=helper.getReadableDatabase().delete("qingyou",selection, selectionArgs);
			break;
         case 2:
        	 long id=ContentUris.parseId(uri);
        	 num=helper.getReadableDatabase().delete("qingyou","_id="+id, null);	
			break;
		}
		return num;
	  }
 2.在activity中
   //注意一定要加qingyou表名称和前缀content://
	 private Uri uri=Uri.parse("content://com.org.userdao/qingyou");
	 IndexActivity.this.getContentResolver().query(,,"name=? and password=?");
	
 十。receive(广播)
    1.非常住性
                Intent intent = new Intent();
		intent.setAction("com.szy.aaBroadcastReceiver");
		intent.putExtra("message", "又是一个好人!");
		TestMainActivity.this.sendBroadcast(intent);
               //在extends BroadcastReceiverl类中
		Bundle bundle = this.getResultExtras(false);
		String tt = bundle.getString("message");
    2.常住性广播
      注册系统自带的action
  3.有序广播 (按级别分,级别高得到先)//得到后可以截断:this.abortBroadcast();
  4.无序广播(同时发送)

 
  十一。服务
     //
  1.public class MyService extends Service{
    private MyBinder binder2;
    /* 成功绑定Activity和Service后调用该方法 */
	@Override
	public IBinder onBind(Intent arg0) {
		binder2=new MyBinder();
		return binder2;
	}
	/* 解除绑定Activity和Service时调用该方法 */
	@Override
	public boolean onUnbind(Intent intent) {
		return super.onUnbind(intent);
	}
	/* 重新绑定Activity和Service时调用该方法 */
	@Override
	public void onRebind(Intent intent) {
		super.onRebind(intent);
	}
	/* 当服务第1次创建时调用该方法,只执行一次 */
	@Override
	public void onCreate() {
		super.onCreate();
	}

	/* 当开始服务时调用该方法,执行多次 */
	@Override
	public void onStart(Intent intent, int startId) {
		super.onStart(intent, startId);
	}

	/* 当服务销毁时调用该方法,只执行一次 */
	@Override
	public void onDestroy() {
		super.onDestroy();
	}
		
	public void aa(){
		for(int i=0;i<50;i++){
			try {
				Thread.sleep(600);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			System.out.println("aa"+i);
		}
		
	}
	
	//注意activity只提供绑定serviceconnection对象,而serviceconnection只能传递IBinder
	  //所以只能通过他取得service对象
   //创建一个binder,写一个方法为他返回要绑定的Service对象
  class MyBinder extends Binder implements IBinder{
	  
        public MyService getMyService(){
        	return MyService.this;
        }
  }
}
  2.在activity中写
            1.绑定  Intent intent = new Intent(MainActivity.this, MyService.class);
			/*MainActivity.this.startService(intent);*/
			MainActivity.this.bindService(intent, serviceConection,
					Context.BIND_AUTO_CREATE);
	   2.解绑  /*MainActivity.this.startService(intent);
			对应是MainActivity.this.stopService(intent)*/
			MainActivity.this.unbindService(serviceConection);

         //创建ServiceConnection通过取得service的binder对象
        class MyServiceConect implements ServiceConnection{
	@Override
	public void onServiceConnected(ComponentName arg0, IBinder service) {
		myService = ((MyService.MyBinder) service).getMyService();
		   myService.aa();
			myService.bb();
	}

//获取sdcard存放路径
String path=Environment.getExternalStorageDirectory()+"/";//获取外部设备路径
 十二 作用

android中flag设置 Intent intent = new Intent(this,xxx.class);
//如果activity在task存在,拿到最顶端,不会启动新的Activity
intent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
//如果activity在task存在,将Activity之上的所有Activity结束掉
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//默认的跳转类型,将Activity放到一个新的Task中
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//如果Activity已经运行到了Task,再次跳转不会在运行这个Activity
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

 

 

Android开发:获取安卓App版本号的方法步骤 今天国庆节,在这举国欢庆的日子里,发一篇博文留念一下这个特殊的日子,国庆依然奋战在工作一线。 在Android开发过程中,想要开发一个完整功能的App,各个地方的内容都要涉及到,比如获取App的系统版本号就是必须要有的功能。Android的App版本号相关内容比iOS的App版本号内容要多,而且iOS版的App版本信息跟Android的还不一样。本篇文章就来介绍一下Android开发中获取A... 阅读详情

相关推荐

创建您的第一个Android应用程序

本文还有配套的精品资源,点击获取 简介:每个Android开发新手都会从创建“第一个Android应用程序”开始。本指南将介绍使用Android Studio、基本布局设计、用户交互处理以及Java编程语言的知识点。我们将学习如何创建一个新的Android Studio项目,使用Java编程语言,初始化UI组件,并通过设置事件监听器来处理用户交互。此外,还会讲解如何使用XM...

weixin_32836713的博客 2369

安卓开发环境的搭建(安卓app开发流程)

安装Android Studio时,需要选择安装Android SDK,Android SDK是Android开发所必须的工具包,包括了各种版本的Android系统镜像、开发工具、API文档等。安装完Android Studio后,需要打开Android SDK Manager,安装需要的Android版本、构建工具和SDK组件。以上就是安卓开发环境的搭建流程,需要注意的是,Android开发环境的安装过程可能因为不同的操作系统、版本和网络环境而略有不同,具体还需根据自己的情况进行安装和配置。

m0_48096446的博客 3406

license文件

at com.android.okhttp.internal.http.HttpConnection.readResponse(HttpConnection.java:191) at com.android.okhttp.internal.http.HttpTransport.readResponseHeaders(HttpTransport.java:80) at com.android.okhttp.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:906) at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:782) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:463) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:405) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getHeaders(HttpURLConnectionImpl.java:162) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getHeaderField(HttpURLConnectionImpl.java:206)

Android破解之Lic文件加密程序(首例)

我不会写Android,这是我第一个破解Android的例子,耗时接近一天,希望大神不要见笑! 本程序为商业软件,不便发布APK程序。 不要给我发消息,我不得回,有问题,直接回帖就可以了。 准备工作 在开始之前,要进行以下准备工作: (1)安装JDK,至于版本,自己选择吧,目前我是用JDK1.6版,可以去官网下载安装,并进行环境配置; (2)安装模拟器,APK软件要运行测试,需要...

weixin_34033624的博客 930

Flink CDC 3.0 详解

Flink CDC 是基于数据库日志 CDC(Change Data Capture)技术的实时数据集成框架,支持全增量一体化、无锁读取、并行读取、表结构变更自动同步、分布式架构等高级特性。配合Flink 优秀的管道能力和丰富的上下游生态,Flink CDC 可以高效实现海量数据的实时集成。Flink CDC 于2023年12月7日重磅推出其全新的 3.0 版本,3.0版本的发布对 Flink CDC 而言具有里程碑的意义,自此 Flink CDC 从捕获数据变更的Flink 数据源正式迈向为以 Flink

奔跑的蜗牛的博客 2639

详解机器人标定

这里是机器人在取料之前,先把自己的角度补正到与 物料当前角度一致,到(X’,Y’)位置处,然后移动 CDx,Cdy,与物料位置也重合,然后去取料。可以使用实物标定,机器人抓住工件摆放9个位置,得到9个机械坐标,相机也得到9个像素坐标,(机器人每次需要回到固定位置拍照),然后标定。(X0,Y0)为旋转中心, (X1,Y1)及(X2,Y2)为工件在视野中旋转角度a的前后坐标,(Xt,Yt)为两点连线的延长。(rx0, ry0)为旋转中心,( x, y)为被旋转的点,(x0,y0)旋转后的点。

weixin_56819992的博客 7631

JRebel

官网:https://zeroturnaround.com/software/jrebel-for-android/ 简介:实时开发你的android应用。所做的代码、资源改动将自动被应用到正在运行的程序中。在真机和模拟器上都是ok的。 破解版下载地址:http://download.youkuaiyun.com/detail/bjgfs/9456906 安装方法: 1. 解压jrebel-for-an

616

WangEditor 5.0版本dangerouslyInsertHtml方法的正确使用方式

WangEditor 5.0版本dangerouslyInsertHtml方法的正确使用方式

yang1067155909的专栏 4291

在Android实现client授权

OAuth对你的数据和服务正在变成实际上的同意訪问协议在没有分享用户password。实际上全部的有名公司像Twitter。Google,Yahoo或者LinkedIn已经实现了它。在全部流行的程序语言里有很多的库和代码样例也在你的d桌面程序。移动程序,或者web程序上实现了OAuth。 也有给Android的參考指南,然而他们中的大多数不是最新的,精确地或者在时间紧张...

aoe41606的博客 306

黑马Java第二阶段:JavaWeb(笔记)

黑马Java第二阶段:JavaWeb(笔记)

chen的博客 5655

《生成式AI引发的“认知污染”:社交媒体虚假信息的治理困局》

认知污染与生成式AI“认知污染”指信息环境被大量虚假、误导性内容所充斥,干扰公众对事实的认知判断。在社交媒体时代,虚假信息的生产和传播门槛大幅降低,呈现出工业化、规模化的趋势。近年兴起的生成式人工智能(Generative AI)技术,如大型语言模型(LLM)和深度伪造(deepfake),更是加剧了这一问题。AI可以自动生成看似真实的文本、图像、音视频,将虚假信息批量生产并快速散播到社交平台上。

那谁的博客 5912

用java进行安卓开发的步骤_如何在windows下Android开发IDE搭建步骤

学习Android开发前,我们必须要先学会Android开发的环境搭建,本文主要是基于Windows下搭建Android开发环境,详细的步骤以及需要下载的工具在下面也有说明。现在说明一下IDE,IDE是集成开发环境(IDE,Integrated Development Environment ),是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面工具。集成了代码编写...

weixin_32008105的博客 2726

测试用例设计工具大盘点:总有一款适合你

本文旨在帮助测试工程师、开发人员及团队管理者快速了解主流测试用例设计工具的特点、适用场景和选择逻辑。覆盖工具类型包括传统文档工具、开源管理工具、商业集成平台及新兴AI工具,范围涵盖中小团队到大型企业的不同需求。本文从“测试用例设计的痛点”切入,用生活案例解释核心概念;接着按“工具类型”分类盘点主流工具(附优缺点对比表);再通过“小团队/中大型团队/敏捷团队”等真实场景教你选工具;最后展望AI等未来趋势,帮你“一次学透,终身受用”。

项目管理的博客 1590

安卓的开发步骤

山鹰的专栏 582

R语言生存分析之限制性立方样条分析:样条回归、和多项式回归有什么不同?是否存在非线性关系、限制性立方样条cox回归模型

R语言生存分析之限制性立方样条分析:样条回归、和多项式回归有什么不同?是否存在非线性关系、限制性立方样条cox回归模型

statistics+insight+vista+power 634

【TC3xx芯片】TC3xx DMA模块详解

TC3xx DMA模块详解

qq_36056498的博客 5917

苹果(apple)ios系统和安卓(Android) apk系统开发者账号类型及申请步骤

请注意,以上信息可能会随时间发生变化,请务必以苹果和Google的官方网站为准。在实际申请过程中,遇到任何问题都可以通过官方提供的帮助文档或客服支持进行咨询,确保申请过程顺利。一、苹果iOS系统开发者账号类型及申请步骤。二、安卓APK系统开发者账号类型及申请步骤。

gulu230220的博客 1091

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Qt | Qt For Android、Qt5.14.2安卓开发环境搭建详细步骤

JAVA SDK其中Android NDK直接下载的压缩包,解压即可。Android SDK提供了安装包和压缩包,用哪个都行。Qt For Android开发环境的搭建说简单也简单,说复杂也比较复杂。说它简单是因为安装的软件就一两个,安装完在Qt Creator中填入安装的目录即可。说复杂是因为这三个和Qt的版本必须要需要对应起来!

^_^ 2万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Android简介:安卓开发环境搭建步骤

1. 下载安装jdk,配置环境变量 window10:jdk 8下载和安装步骤:https://blog.youkuaiyun.com/lanxuan1993/article/details/84943416 2. 下载安装配置Android Studio https://blog.youkuaiyun.com/lanxuan1993/article/details/84947259 3. 下载安装配置代码版本管理工具GIT / SVN 3.1 GIT代码版本管理方式 1.下载安装...

lanxuan1993的博客 975

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

android广播开发步骤,安卓开发入门教程-广播

什么是广播广播是安卓系统内应用内各组件、应用间进行轻量化通信的一种机制.发出者发出广播,接收者接收广播.广播类型广播分为两种:普通广播(normal broadcasts)和有序广播(ordered broadcasts)普通广播普通广播发出后,所有接收者都会同时收到这条广播.有序广播有序广播发出后,系统会按照接收者的优先级将依次发给这些接收者,上一个接收者处理完,才轮到下一个接收者处理.而且当前...

weixin_42511879的博客 531

android获取安卓版本,Android开发:获取安卓App版本号的方法步骤

今天国庆节,在这举国欢庆的日子里,发一篇博文留念一下这个特殊的日子,国庆依然奋战在工作一线。在Android开发过程中,想要开发一个完整功能的App,各个地方的内容都要涉及到,比如获取App的系统版本号就是必须要有的功能。Android的App版本号相关内容比iOS的App版本号内容要多,而且iOS版的App版本信息跟Android的还不一样。本篇文章就来介绍一下Android开发中获取App版本...

weixin_39525865的博客 2018

Window下QtForAndroid Qt5.12.12 安卓开发环境搭建超详细步骤

Qt安卓开发环境搭建

weixin_44111250的博客 4295

安卓应用开发利器:Android Studio制作App的完整步骤

安卓应用开发利器:Android Studio制作App的完整步骤 【下载地址】AndroidStudio制作App的完整步骤 本资源文件详细讲解了使用Android Studio开发App的全流程,从项目创建、代码编写、界面设计,到应用打包和发布,每一步都清晰明了。无论你是刚入门的开发者,还是有一定经验的程序员,这份指...

gitblog_06768的博客 961

安卓App开发步骤

做了几个android企业应用项目后,总结了项目的基本开发步骤,希望能够交流。 一 应用规划:     ※确定功能。     ※必须的界面及界面跳转的流程。     ※需要的数据及数据的来源及格式。     ※是否需要服务端支持。     ※是否需要本地数据库支持。     ※是否需要特殊权限。     ※是否需要后台服务。 二 架构设计:     ※分层。     ※网络连接。     ※数据处...

曹同学的博客 1548

Android开发步骤

一、在 Windows 下搭建 Android 开发环境 1、安装 JDK(Java Development Kit) http://download.java.net/jdk6/   2、安装Android SDK http://developer.android.com/sdk   3、安装Eclipse http://www.eclipse.org/   4、打开Ecli

Ada 822

搭建Android开发环境 以及 ionic 编译安卓app步骤

1. 下载安装JDK 下载地址: https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 安装好后,配置系统环境变量:控制面板\系统和安全\系统 → 高级系统设置 → 高级 → 环境变量。 set PATH=%JAVA_HOME%\bin; set JAVA_HOME=D:\java 测试JDK是否安装成功 $ java -version 2. 下载安装android stu...

cnmeimei的博客 642
上一篇: hashCode方法的作用
下一篇: 线程的同步与锁
Li Chuan
博客等级 码龄14年 0粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值