Android开发小记
一,下载解压adt-bundle,直接可以用来开发了
二,新建android项目时不勾选创建activity,来看看如何手动创建activity
1,在空项目添加class文件,选择超类为activity
package com.ciaos.demo;
public class DemoActivity extends Activity {
}
2,双击AndroidManifest.xml,选择Application/Add/Activity,配置Name为刚创建的activity
3,右键layout新建Android XML File,选择layout类型,生成main.xml文件,可以通过R.layout.main引用
4,编辑DemoActivity.java文件如下,设置Activity的Layout样式
package com.ciaos.demo; import com.ciaos.test1.R; import android.app.Activity;
import android.os.Bundle; public class DemoActivity extends Activity { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
5,运行android程序
问题1,如果eclipse编码时提示找不到R.layout.main(自定义layout)
-> 修改DemoActivity.java将import android.R改为import com.ciaos.test1.R
问题2,No Launcher activity found
-> 修改AndroidManifest.xml文件,添加起的那个activity
<activity android:name="com.ciaos.demo.DemoActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
三,通过button控制text的显示
1,设置res/values/strings.xml添加自定义文本
<resources>
<string name="app_name">Test1</string>
<string name="shige">锄禾日当午\n汗滴禾下土</string>
<string name="anniu">按钮显示文本</string>
</resources>
2,拖动Button和TextView控件到main.xml文件,配置TextView隐藏,Button的click事件,xml文件如下
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="left"
android:orientation="vertical" > <Button
android:id="@+id/button1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="onShowClicked"
android:text="@string/anniu" /> <TextView
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:visibility="invisible"
android:text="@string/shige" /> </LinearLayout>
3,编辑DemoActivity文件,实现onShowClicked函数
package com.ciaos.demo; import com.ciaos.test1.R; import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView; public class DemoActivity extends Activity { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
} public void onShowClicked(View view){
TextView tv = (TextView)this.findViewById(R.id.textView1);
tv.setVisibility(View.VISIBLE);
}
}
四,网络请求(应用加载时获取网络图片更新组件UI)
1,编辑AndroidManifest添加Uses Permission
<uses-permission android:name="android.permission.INTERNET"/>
2,编辑工具类ImageHandler,实现下载图片功能
package com.ciaos.demo; import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL; import android.graphics.Bitmap;
import android.graphics.BitmapFactory; public class ImageHandler{
private String url = "http://www.baidu.com/img/baidu_sylogo1.gif"; public Bitmap getImage() {
try {
HttpURLConnection connection =
(HttpURLConnection)new URL(url).openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
Bitmap bitmap = BitmapFactory.decodeStream(input);
input.close();
return bitmap;
} catch (IOException ioe) { return null; }
}
}
3,修改Activity文件,通过子线程调用图片下载服务,使用Handler更新主线程创建的控件
package com.ciaos.demo; import com.ciaos.test1.R; import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Handler;
import android.widget.ImageView; public class DemoActivity extends Activity { Handler handler; public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); //创建主窗口的引用
handler = new Handler(); //显示等待提示框
final ProgressDialog dialog = ProgressDialog.show(
this,
"Loading",
"Loading the image"); final ImageHandler nh = new ImageHandler();
Thread th = new Thread() {
public void run() {
//获取网页图片
final Bitmap bm = nh.getImage();
handler.post(new Runnable(){
@Override
public void run() {
//更新组件
resetDisplay(bm);
//取消等待提示框
dialog.dismiss();
}});
}
};
th.start();
} private void resetDisplay(Bitmap image){
//更新组件
ImageView iv = (ImageView)this.findViewById(R.id.imgView1);
iv.setImageBitmap(image);
}
}
运行程序后多次横屏竖屏后,程序会出现java.lang.IllegalArgumentException: View not attached to window manager错误,估计是我调用ProgressDialog创建及dismiss方法有误。
多个Activity之间切换
Intent it = new Intent(this,Demo2Activity.class);
startActivity(it);
附操作技巧:如果一个项目是生成jar包供别的android项目调用,可以右键项目->Property->Android(勾选IsLibrary),则每次clean后都会自动生成jar包。
Android开发小记的更多相关文章
- android 开发小记
1.fragment & activity when config changes, activity will restart but fragment can be store. 2.te ...
- Android开发-动态布局小记
android动态布局相比静态布局,动态布局不用再将xml转变了布局代码,提高了一定的效率,当然可以忽略不记.动态布局主要是比较灵活,可以很快的在代码中直接修改布局,并直接使用控件进行业务逻辑开发.但 ...
- ADT Android开发环境搭建小记
1.之前因为产品方向原因,Android开发暂时搁浅,最近重新启动,SDK Manager.exe不能启动的话用启动\sdk\tools\adroid.bat即可启动SDK Manager.exe 2 ...
- Linux环境下搭建Android开发环境
最近在折腾linux.因为咱是搞安卓开发的,所以少不了需要搭建Android开发环境,就此小记,希望能给向我一样的开发者一点帮助!开干! 1.安装JDK 下载JDK包,得到的是类似于jdk-8u65- ...
- 带农历日历的DatePicker控件!Xamarin控件开发小记
原文:带农历日历的DatePicker控件!Xamarin控件开发小记 闲来无事开发了个日期选择控件,感兴趣的同学前往: https://github.com/MatoApps/Mato.DatePi ...
- Android学习探索之Java 8 在Android 开发中的应用
前言: Java 8推出已经将近2年多了,引入很多革命性变化,加入了函数式编程的特征,使基于行为的编程成为可能,同时减化了各种设计模式的实现方式,是Java有史以来最重要的更新.但是Android上, ...
- Android 开发一定要看的15个实战项目
前言: 虽说网上有太多的Android课程,但是大多都是视频,有Android在线开发环境的几乎没有,但是对于学习Android的人来说拥有在线的Android开发环境是非常好的,可以随时动手操作学习 ...
- Android开发学习之路-关于Exception
Exception在Java中是表示异常的一个类.它是Throwable的子类. 而Exception的子类RuntimeException是一个特殊的异常类,在代码中不需要对此类进行throw,而是 ...
- Android开发学习之路-Android中使用RxJava
RxJava的核心内容很简单,就是进行异步操作.类似于Handler和AsyncTask的功能,但是在代码结构上不同. RxJava使用了观察者模式和建造者模式中的链式调用(类似于C#的LINQ). ...
随机推荐
- MySQL varchar和char类型
varchar和char是两种最主要的字符串类型.不幸的是,很难精确地解释这些值是怎么储存在磁盘和内存中的,因为这根存储引擎的具体实现有关.下面的描述假设使用的存储引擎是InnoDB或者MyISAM. ...
- Sunny谈软件架构
软件架构是软件工程一个很重要的分支,随着软件规模的扩大和软件寿命的延长,软件架构也越发重要.就像建筑领域,盖一个狗窝不需要进行分析与设计,但是如果是要盖一座万人体育场或者摩天大楼,那一定会离不开设计师 ...
- 批量修改文件名java
package test0715; import java.io.File; public class FileRename {public static void main(String[] arg ...
- 有意思,搞了这么多年WEB,还是第一次知道这个东西 关键字 前端模板
有意思,搞了这么多年WEB,还是第一次知道这个东西 关键字 前端模板 jquery-tmpl handlebars 项目中用的是handlebars jqtmpl配置不成功 不做记载 百度吧 小媳妇 ...
- poj 3592 Instantaneous Transference 缩点+最长路
题目链接 给一个n*m的图, 从0, 0这个点开始走,只能向右和向下. 图中有的格子有值, 求能获得的最大值. 其中有些格子可以传送到另外的格子, 有些格子不可以走. 将图中的每一个格子都看成一个点, ...
- Android Studio 中快速提取方法
在开发过程中,有时在一个方法内部写了过多的代码,然后想要把一些代码提取出来封装下,分离开放在一个单独的方法里,可能你的做法是直接选中后Ctrl + 叉,或者 Ctrl + C,但在Android St ...
- HDU 5820 Lights(扫描线+zkw线段树)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5820 [题目大意] 在一个大小为50000*50000的矩形中,有n个路灯. 询问是否每一对路灯之 ...
- 《windows程序设计》学习_3.4:实现雷区翻转
#include<windows.h> #include "resource.h" LRESULT CALLBACK WndProc (HWND, UINT, WPAR ...
- ZOJ 38727(贪心)
这道题真心坑.越想越远 想的飞起来了. 最后纠结起后缀表达式的定义来了. 题意: 就是给你一个串 , 让你用最少改动次数来实它变成一个合法的后缀表达式, 改动方式有两种, 一种是直接加入数字或者 ...
- c语言中-----分配内存函数
原型: void * realloc(void *p, size_t size); realloc 可以对给定的指针所指的空间进行扩大 或者 缩小, 原有内存的数据保持不变.当然,对于缩小,则缩小部 ...