android源码实例
‘壹’ android中如何把listview当作item放在listview里求源码实例
api demo里边不是有个expandable List 用那个就行了。。。
‘贰’ 请教如何在Window下编译android源码中的Browser例子
建议你还是在Ubuntu下开发吧关于debug的问题,google其实已经帮我们想好了策略了,就是陪州将android源码芦李蔽作为一个普通的java工程导入eclipse,然后就可以象调试普通的java工程一样的debug关于编译的扰培问题,确实是需要每次修改完了就使用make Browser,或者到Browser目录下执行mm,或者在根目录下执行mmm packages/apps/Browser,都可以在out目录的target/proct/generic/system/app/目录下生成Browser.apk,然后可以通过adb装载进你的Emulator,就可以看效果了希望以上信息对你有所帮助。。。
‘叁’ 《Android开发范例代码大全》源码
这个怎么可能有 除非买书附送的
‘肆’ 有没有什么好的android 实例开发的源代码网站
网上下载建站系统,例如:pageadmin cms、discha都是不错的、简单、方便、直接下载就可以使用。
‘伍’ Android源码追踪—android:onClick
之前对源码的阅读,总是用时一通乱七八糟的跳转,以学会使用为目的;过了一段时间,就忘记了,因此打算将一些源码的阅读经历记录下来,也通过敲一遍的带唤过程,加深理解。
最开始,用一个比较简单的例子来小试牛刀吧
对于View(Button、TextView等)的点击事件,常用的写法是通过 findViewById 获取View的实例,然后通过 setOnClickListener 设置监听事件,比如我们有如下Button控件。
设置点击事件(假设在Activity中)
但是还有一种写法是在xml布局中通过android:onClick属性直接指定嫌行锋点击执行的函数。
【思考】
首先我们知道诸如 android:xxx 之类的属性是会在某个attrs文件中定义的,此处的 android:onClick 是View的属性,定义在如下文件中。
在View的构造函数中,会解析出此属性的值。
看这里, 如果变量handlerName不为空,就会为此View设置点击事件了 ,这个handlerName就是onClick属性的值doSubmit,但这个点击事件,并不是我们所熟悉的OnClickListener。
进一步看看这个 DeclaredOnClickListener 类
DeclaredOnClickListener 实现了 OnClickListener ,其中重点是参数 mResolvedMethod 和 mResolvedContext 。
在onClick事件中最终通过反射 mResolvedMethod.invoke(mResolvedContext, v); 执行了doSubmit方法。
doSubmit的访问权限是否可以设置为private呢?
答案:不可以,因为源码中没有调用 mMethod.setAccessible(true); 注入所有修饰符。
其实在onClick属性的注释中就已经芹晌说明了。
‘陆’ 我想找找Android 开发的源码例子,在www.apkbus.com 找到一些,但是我知道除了安卓巴士还有其他的网站
SDK目录下就有很多啊,几乎包含了所有方面的例子.
我用的2.1版SDK,例子就在samples\android-7下面,android-7就是2.1版的.
如果你用的其它版本就找到对应版本就行了.
‘柒’ 求一个Android studio 的 tcpip 客户端收发的实例,希望大侠们能给一下源码工程
最基础的写法
server端
publicclassMyTcpServer{
publicstaticvoidmian(String[]args){
try{
//构造一个服务器端端口为12345的socket服务器;
ServerSocketserverSocket=newServerSocket(12345);
//等待接收一个socket客户端的连接,并得到客户端的socket对象。
//此方法在没有客户端连接的时候,会阻塞。
Socketclient=serverSocket.accept();
//获得socket客户端的输入管道
InputStreamis=client.getInputStream();
//获得socket客户端的输出管道
OutputStreamos=client.getOutputStream();
byte[]buffer=newbyte[1024];
intlen=is.read(buffer);
System.out.println("-->"+newString(buffer));
os.write("Helloclient".getBytes());
os.flush();
is.close();
os.close();
client.close();
serverSocket.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
client端
{
@Override
publicvoidrun(){
super.run();
try{
Socketclient=newSocket("192.168.3.173",12345);//IP为服务器IP,端口号为服务器端口号。
InputStreamin=client.getInputStream();
OutputStreamout=client.getOutputStream();
out.write("Helloserver".getBytes());//如果在服务器端先进行读操作。那么客户端就应先进行写操作。
//这样交替进行,不然将都阻塞在Read读操作。
out.flush();
byte[]buffer=newbyte[1024];
intlen=in.read();
in.read(buffer);
System.out.println("--->"+newString(buffer));
}catch(IOExceptione){
e.printStackTrace();
}
}
}
}
‘捌’ 求一简单ANDROID源码
main.xml
<?xml version="1.0" encoding="utf-8"?>让猛
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText android:id="@+id/edit" android:layout_width="200dp" android:layout_height="wrap_content"></EditText>
<Button android:id="@+id/bt" android:text="click" android:layout_width="wrap_content" android:layout_height="wrap_content">猜滑皮<穗差/Button>
<TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
</LinearLayout>
test.java:
package com.android.test;
import java.text.DecimalFormat;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class test extends Activity {
/** Called when the activity is first created. */
TextView tv;
Button bt;
EditText edit;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView) findViewById(R.id.tv);
bt = (Button) findViewById(R.id.bt);
edit = (EditText) findViewById(R.id.edit);
bt.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
String strEdit = edit.getText().toString();
float input = Float.parseFloat(strEdit);
Float output = input / 3;
DecimalFormat df = new DecimalFormat("0.##");
tv.setText(df.format(output));
}});
}
}
你试试哈
‘玖’ 求Android天气预报的开发源代码
package com.nrzc.weatherstation;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
import java.util.Timer;
import java.util.TimerTask;
/**
* 环境传感器
* 气象站
*/
public class MainActivity extends AppCompatActivity {
private SensorManager sensorManager;
private TextView temperatureTextView;
private TextView pressureTextView;
private TextView lightTextView;
private float currentTemperature=Float.NaN;
private float currentPressure=Float.NaN;
private float currentLight=Float.NaN;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
Timer updateTimer=new Timer("weatherUpdate");
updateTimer.scheleAtFixedRate(new TimerTask() {
@Override
public void run() {
updateGUI();
}
},0,1000);
}
private void init(){
temperatureTextView=(TextView)findViewById(R.id.temperature);
pressureTextView=(TextView)findViewById(R.id.pressure);
lightTextView=(TextView)findViewById(R.id.light);
sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);
}
private final SensorEventListener tempSensorEventListener=new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
currentTemperature=event.values[0];
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
};
private final SensorEventListener pressureSensorEventListener=new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
currentPressure=event.values[0];
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
};
private final SensorEventListener lightSensorEventListener=new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
currentLight=event.values[0];
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
};
@Override
protected void onResume() {
super.onResume();
Sensor lightSensor=sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
if (lightSensor!=null)
sensorManager.registerListener(lightSensorEventListener,
lightSensor,
SensorManager.SENSOR_DELAY_NORMAL);
else
lightTextView.setText("Light Sensor Unavailable");
Sensor pressureSensor=sensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE);
if (pressureSensor!=null)
sensorManager.registerListener(pressureSensorEventListener,
pressureSensor,SensorManager.SENSOR_DELAY_NORMAL);
else
pressureTextView.setText("Barometer Unavailable");
Sensor temperatureSensor=sensorManager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE);
if (temperatureSensor!=null)
sensorManager.registerListener(tempSensorEventListener,
temperatureSensor,
SensorManager.SENSOR_DELAY_NORMAL);
else
temperatureTextView.setText("Thermometer Unavailable");
}
@Override
protected void onPause() {
sensorManager.unregisterListener(pressureSensorEventListener);
sensorManager.unregisterListener(tempSensorEventListener);
sensorManager.unregisterListener(lightSensorEventListener);
super.onPause();
}
private void updateGUI(){
runOnUiThread(new Runnable() {
@Override
public void run() {
if(!Float.isNaN(currentPressure)){
pressureTextView.setText(currentPressure+"hPa");
pressureTextView.invalidate();
}
if (!Float.isNaN(currentLight)){
String lightStr="Sunny";
if (currentLight<=SensorManager.LIGHT_CLOUDY)
lightStr="night";
else if (currentLight<=SensorManager.LIGHT_OVERCAST)
lightStr="Cloudy";
else if (currentLight<=SensorManager.LIGHT_SUNLIGHT)
lightStr="Overcast";
lightTextView.setText(lightStr);
lightTextView.invalidate();
}
if (!Float.isNaN(currentTemperature)){
temperatureTextView.setText(currentTemperature+"C");
temperatureTextView.invalidate();
}
}
});
}
}
‘拾’ 如何使用Android Studio开发/调试Android源码
开发调试环境: Ubuntu 14.10,openJdk 1.7,Android Studio 1.0.2,android-5.0.1_r1源码
由于AS是基于IntelliJ IDEA开发的,所以本文也适用于IntelliJ IDEA
一、修改Android Studio(以下简称AS)的内存配置
因为在导入源码时需要消耗大量内存,所以先修改IDEA_HOME/bin/studio64.vmoptions(x86的机器修改studio.vmoptions)中-Xms和-Xmx的值。文档中使用的是748m,可自行修改。
二、配置AS的JDK、SDK
在IDE中添加一个没有classpath的JDK,这样可以确保使用源码里的库文件
在代码中加断点,然后选择'Run'->''或者直接点击下图所示的图标
在弹出的选择进程(Choose Process)对话框中,勾选显示所有进程,选择要DEBUG的代码所在的进程,点击OK即可.
六、其它
代码中很多地方提示CallrequiresAPILevelx.... 出现这个问题是因为AS将我们的工程当做安卓应用程序工程了,且源码中没有指定minSdkVersion.
我们只需在源码根目录加一个声明minSdkVersion的AndroidManifest.xml文件即可(分享了一个AndroidManifest.xml)。
也可以考虑使用build.gradle来解决该问题。