`
kerlubasola
  • 浏览: 677957 次
文章分类
社区版块
存档分类
最新评论

Android一些常用知识和代码(不断更新)

 
阅读更多

1.如何调用外部图片选择器,选择图片并返回结果

//获取照片
Intentin=newIntent(Intent.ACTION_GET_CONTENT);
in.setType("image/*");
startActivityForResult(in,0);

然后Activity中还要加上一个结果返回接收

@Override
protectedvoidonActivityResult(intrequestCode,intresultCode,
Intentintent)
{
super.onActivityResult(requestCode,resultCode,intent);

System.out.println(intent.getDataString());
ImageViewview=newImageView(this);
view.setImageURI(intent.getData());
((LinearLayout)findViewById(R.id.layout)).addView(view);

System.out.println(requestCode);
}


2.如何调用Google Web Search?
其实android提供了一个很方便的调用方式,就是用Intent去调用系统的Activity,代码如下:

//搜索
Intentsearch=newIntent(Intent.ACTION_WEB_SEARCH);
search.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
search.putExtra(SearchManager.QUERY,"tigertian");
finalBundleappData=getIntent().getBundleExtra(SearchManager.APP_DATA);
if(appData!=null){
search.putExtra(SearchManager.APP_DATA,appData);
}

startActivity(search);

执行这段代码之后,就会跳转到google的网站并自动搜索与tigertian相关的记录

3.为什么WebView在进行loadUrl的时候,有时候会弹出Android的自带浏览器进行浏览?
被访问页面如果不带跳转(Redirect)是不会弹出自带浏览器的。但如果带跳转(Redirect)的话WebView是做不到的,所以他会调用相应的浏览器进行跳转访问。

4.有按钮的列表项为可以点击吗?
可以,但是需要将按钮的Focusable属性置为false,Checkbox等控件同理。

5.android:layout_weight何时有效果?
<AutoCompleteTextView android:layout_height="wrap_content" android:layout_weight="2"
android:layout_width="wrap_content" android:completionThreshold="1"
android:id="@+id/AutoCompleteSearchGame"></AutoCompleteTextView>
当layout_height和layout_width都未wrap_content的时候有效果。

6、如果调用浏览器?
使用startActivity传递这个intent就可以调用浏览器了new Intent(Intent.ACTION_VIEW, Uri.parse(url))

读取所有电话号码:

  一、PhoneLookup.CONTENT_FILTER_URI的一般用法

Uriuri=Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI,Uri.encode(phoneNumber));
resolver.query(uri,newString[]{PhoneLookup.DISPLAY_NAME,...

    API见这里。如果直接如下使用PhoneLookup.CONTENT_FILTER_URI会报IllegalArgument Exception错

getContentResolver().query(PhoneLookup.CONTENT_FILTER_URI,...

  二、 技巧用法

Cursorc=getContentResolver().query(Uri.withAppendedPath(
PhoneLookup.CONTENT_FILTER_URI,"*"),newString[]{
PhoneLookup._ID,
PhoneLookup.NUMBER,
PhoneLookup.DISPLAY_NAME,
PhoneLookup.TYPE,PhoneLookup.LABEL},null,null,sortOrder);

    关键是这个"*",这样就能取到所有的号码以及相关的联系人的姓名以及其他相关字段,比通过联系人再查找其号码要方便很多。

Android ListView item中有按钮(Button)不能点击或者条目不能点击的问题:

增加了按钮之后,列表条目不能点击的原因是:需要把Button的相关属性设置成这样

android:focusable="false"

不过在开发过程中,我有个动态获取图片并刷新列表的机制,发现每次调用完notifyDataSetChanged()方法之后Button都不能点击了,后来发现如果有图片动态加载那么每次都要重新inflate整个列表的条目,所以我干脆重载了notifyDataSetChanged()方法。

/**
*Recyclebitmapresources
*/
publicvoidrecycleBitmapRes(){
if(mConvertViews!=null&&!mConvertViews.isEmpty()){
Collection<View>views=mConvertViews.values();
mConvertViews.clear();
for(Viewview:views){
ImageViewicon=(ImageView)view.findViewById(R.id.imgIcon);
if(icon!=null){
if(icon.getDrawable()!=null&&icon.getDrawable()instanceofBitmapDrawable){
Bitmapbitmap=((BitmapDrawable)icon.getDrawable()).getBitmap();
if(bitmap!=null&&!bitmap.isRecycled()){
bitmap.recycle();
}
}
}
}
}
}

@Override
publicvoidnotifyDataSetChanged(){
//Avoidingthatbuttonscannotbepressed
Utils.LogI("GameListAdapter","notifyDataSetChanged");
recycleBitmapRes();
super.notifyDataSetChanged();
}

Android弹出拨号界面和拨打电话实现:

需要使用反射机制将ITelephony反射出来进行操作。

privatevoiddial(Stringnumber){
Class<TelephonyManager>c=TelephonyManager.class;
MethodgetITelephonyMethod=null;
try{
getITelephonyMethod=c.getDeclaredMethod("getITelephony",
(Class[])null);
getITelephonyMethod.setAccessible(true);
}catch(SecurityExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(NoSuchMethodExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}

try{
TelephonyManagertManager=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
ObjectiTelephony;
iTelephony=(Object)getITelephonyMethod.invoke(tManager,(Object[])null);
Methoddial=iTelephony.getClass().getDeclaredMethod("dial",String.class);
dial.invoke(iTelephony,number);
}catch(IllegalArgumentExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IllegalAccessExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(SecurityExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(NoSuchMethodExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(InvocationTargetExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}

privatevoidcall(Stringnumber){
Class<TelephonyManager>c=TelephonyManager.class;
MethodgetITelephonyMethod=null;
try{
getITelephonyMethod=c.getDeclaredMethod("getITelephony",
(Class[])null);
getITelephonyMethod.setAccessible(true);
}catch(SecurityExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(NoSuchMethodExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}

try{
TelephonyManagertManager=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
ObjectiTelephony;
iTelephony=(Object)getITelephonyMethod.invoke(tManager,(Object[])null);
Methoddial=iTelephony.getClass().getDeclaredMethod("call",String.class);
dial.invoke(iTelephony,number);
}catch(IllegalArgumentExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IllegalAccessExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(SecurityExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(NoSuchMethodExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(InvocationTargetExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}

Android中短信拦截解决方案

经过测试,Android中是可以拦截短信的,解决方案如下:

packagecom.tigertian.sms;

importandroid.content.BroadcastReceiver;
importandroid.content.Context;
importandroid.content.Intent;
importandroid.os.Bundle;
importandroid.telephony.SmsMessage;

publicclassSMSReceiverextendsBroadcastReceiver{

@Override
publicvoidonReceive(Contextcontext,Intentintent){
//TODOAuto-generatedmethodstub
System.out.println("SMSReceiver,isOrderedBroadcast()="
+isOrderedBroadcast());

Bundlebundle=intent.getExtras();
Objectmessages[]=(Object[])bundle.get("pdus");
SmsMessagesmsMessage[]=newSmsMessage[messages.length];
for(intn=0;n<messages.length;n++){
smsMessage[n]=SmsMessage.createFromPdu((byte[])messages[n]);
if(smsMessage[n].getMessageBody().contains("hahaha")){
this.abortBroadcast();
}
System.out.println(smsMessage[n].getOriginatingAddress()+""+smsMessage[n].getMessageBody()+""+smsMessage[n].getIndexOnIcc());
}
}}

<receiverandroid:name=".SMSReceiver">
<intent-filterandroid:priority="10000">
<actionandroid:name="android.provider.Telephony.SMS_RECEIVED"></action>
<categoryandroid:name="android.intent.category.DEFAULT"/>
</intent-filter>
</receiver>

上面的代码是一个消息监听,监听接收短信的消息。我们可以从控制台打印信息里面看到,他是一个OrderedBroadcast,根据这一点我们就可以对短信机制进行拦截。如何拦截呢?首先要声明一个消息监听器,同时根据上面的配置文件需要在AndroidManifest.xml中配置好,注意它的优先级是10000,这一点很关键,因为OrderedBroadcast是根据优先级来传递消息的,优先级越高越先获取到消息,待处理完后才会传递给下一个监听器,如果当前监听器退出广播,那么后面的所有监听器都将无法收到消息。其次我们需要实现onReceive方法,根据上面的代码,我们可以从bundle中拿到短信内容并还原成SmsMessage,这样我们可以根据特定条件来判断哪些是需要我们拦截并且不要让用户知道的,哪些是我们可以放行的。需要我们拦截的短信,我们可以在收到后直接abortBroadcast()(上面的代码中是判断当短信内容包含hahaha的时候直接拦截),这样系统收件箱将无法接收到该条短信,继而也就不会有notification去通知用户。至此,应用编写好之后,短信拦截功能就完成了,当然基于此还可以做一些其他功能,这方面就看需求了。注意,优先级相同,则根据包名依次传递广播。想删除收件箱中已存在的短信,请参考Android源码SmsProvider类,可以在你的应用中使用ContentProvider机制进行操作。

Application保存全局变量

classMyAppextendsApplication{

privateStringmyState;

publicStringgetState(){
returnmyState;
}
publicvoidsetState(Strings){
myState=s;
}
}

classBlahextendsActivity{

@Override
publicvoidonCreate(Bundleb){
MyAppappState=((MyApp)getApplicationContext());
Stringstate=appState.getState();

}
}

<applicationandroid:name=".MyApp"
android:icon="@drawable/icon"
android:label="@string/app_name">

android异步图片加载中的图片缓存:

读取大文件流的问题:缓存
开多线程把图片从网络上荡下来以后,首先缓存至本地文件夹 //android.content.ContextWrapper.getCacheDir() android系统提供的一个存放和得到缓存文件夹的方法
然后对文件全路径截取后缀之前的内容进行MD5加密并与后缀拼成一个文件名,根据这个文件名和传入的路径构建一个文件 写一个缓存方法 判断是否存在缓存文件
如果是则返回加密后文件的Uri,如果不是则从网上下载文件并返回文件的Uri.做缓存的目的是用缓存的文件,而Uri就可以唯一标识一个文件。
public static Uri cacheFile(String path,File saveDir)throws Exception{

File file = new File(saveDir, MD5.getMD5(path)+ path.substring(path.lastIndexOf('.')));
if(file.exists()){
return Uri.fromFile(file);
}else{
FileOutputStream outStream = new FileOutputStream(file);
HttpURLConnection conn = (HttpURLConnection)new URL(path).openConnection();
conn.setConnectTimeout(5 * 1000);
conn.setRequestMethod("GET");
if(conn.getResponseCode()==200){
InputStream inStream = conn.getInputStream();
byte[] buffer = new byte[1024];
int len = 0;
while( (len = inStream.read(buffer)) !=-1 ){
outStream.write(buffer, 0, len);
}
outStream.close();
inStream.close();
return Uri.fromFile(file);
}else{
throw new Exception("文件下载失败!");
}
}
}

视频格式的压缩

l source=source.avi

l ffmpeg -t 600 -i $source -acodec libfaac -ab 128k -ac 2 -vcodec libx264 \

l -vpre hq -crf 22 -threads 0 tmp.mp4 && \

l /usr/bin/MP4Box -3gp -mtu 1450 -hint tmp.mp4 -out target.mp4

插入删除图片MediaScanner缓存问题

插入图片
当你打算在删掉时 : ContentValues values = new ContentValues();

values.put(Images.Media.TITLE, filename);

values.put(Images.Media.DATE_ADDED, System.currentTimeMillis());

values.put(Images.Media.MIME_TYPE, "image/jpeg");

Uri uri = this.getContentResolver().insert(Images.Media.EXTERNAL_CONTENT_URI, values);

File f = new File(imageURI);

f.delete();

在gallery中就会出现占位符 主要是因为MediaScanner有一个缓存

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));

AndroidManifest.xml:

<intent-filter>

<action android:name="android.intent.action.MEDIA_MOUNTED" />

<data android:scheme="file" />

</intent-filter>

屏幕旋转的设置:

1. @Override

2. publicvoidonConfigurationChanged(ConfigurationnewConfig){

3. super.onConfigurationChanged(newConfig);

4. ImageViewheader=(ImageView)this.findViewById(R.id.header);

5. if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){

6. header.setImageResource(R.drawable.header480);

7. }

8. elseif(newConfig.orientation==Configuration.ORIENTATION_PORTRAIT){

9. header.setImageResource(R.drawable.header320);

10. }

11. }

ListView适配器getView()优化

public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_item_icon_text, null);
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById(R.id.text);
holder.icon = (ImageView) convertView.findViewById(R.id.icon);
convertView.setTag(holder); //设置标记
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.text.setText(DATA[position]);
holder.icon.setImageBitmap((position & 1) == 1 ? mIcon1 : mIcon2);
return convertView;
}
static class ViewHolder {
TextView text;
ImageView icon;
}
android ListView几个比较特别的属性:

首先是stackFromBottom属性,这只该属性之后你做好的列表就会显示你列表的最下面,值为true和false

android:stackFromBottom="true"

第二是transciptMode属性,需要用ListView或者其它显示大量Items的控件实时跟踪或者查看信息,并且希望最新的条目可以自动滚动到可视范围内。通过设置的控件transcriptMode属性可以将Android平台的控件(支持ScrollBar)自动滑动到最底部。

android:transcriptMode="alwaysScroll"

第三cacheColorHint属性,很多人希望能够改变一下它的背景,使他能够符合整体的UI设计,改变背景背很简单只需要准备一张图片然后指定属性 android:background="@drawable/bg",不过不要高兴地太早,当你这么做以后,发现背景是变了,但是当你拖动,或者点击list空白位置的时候发现ListItem都变成黑色的了,破坏了整体效果。

如果你只是换背景的颜色的话,可以直接指定android:cacheColorHint为你所要的颜色,如果你是用图片做背景的话,那也只要将android:cacheColorHint指定为透明(#00000000)就可以了

第四divider属性,该属性作用是每一项之间需要设置一个图片做为间隔,或是去掉item之间的分割线

android:divider="@drawable/list_driver" 其中 @drawable/list_driver 是一个图片资源,如果不想显示分割线则只要设置为android:divider="@drawable/@null" 就可以了

第五fadingEdge属性,上边和下边有黑色的阴影

android:fadingEdge="none" 设置后没有阴影了~

第五scrollbars属性,作用是隐藏listView的滚动条,

android:scrollbars="none"与setVerticalScrollBarEnabled(true);的效果是一样的,不活动的时候隐藏,活动的时候也隐藏

第六fadeScrollbars属性,android:fadeScrollbars="true" 配置ListView布局的时候,设置这个属性为true就可以实现滚动条的自动隐藏和显示。

java和javascript互相调用

mWebView = (WebView) findViewById(R.id.webview);

WebSettings mWebSettings = mWebView.getSettings();

//加上这句话才能使用javascript方法

mWebSettings.setJavaScriptEnabled(true);

//增加接口方法,让html页面调用

mWebView.addJavascriptInterface(new Object() {

//这里我定义了一个拨打电话应用的方法

public void callPhone() {

Uri uri= Uri.parse("tel:12345");

Intent mIntent = new Intent(Intent.ACTION_CALL,uri);

startActivity(mIntent);

}

}, "demo");

//加载页面

mWebView.loadUrl("file:///android_asset/demo.html");

mButton = (Button) findViewById(R.id.button);

//给button添加事件响应,执行JavaScript的fillContent()方法

mButton.setOnClickListener(new Button.OnClickListener() {

public void onClick(View v) {

mWebView.loadUrl("javascript:fillContent()");

}

});

<html>

<head>

<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />

</head>

<script>

function fillContent(){

document.getElementById("content").innerHTML =

"java调用javascript哈哈,这些话是javascript搞出来的";

}

</script>

<body>

<p><a onClick="window.demo.callPhone()" href="">打电话</a></p>

<p id="content"></p>

<p>java和javascript相互调用</p>

</body>

</html>

1.每次启动新的Activity的时候,输入法总是弹出来,太烦人了。

主要原因就是页面上方有个EditTexit,每次都自动获取焦点。

注意要求是:每次启动新的Activity的时候,EditTexit不要获取到焦点或者获取到焦点也不让输入法弹出来,并不是阻止输入法使用。只要第一次启动的时候别弹出来就行了,如果主动点到EditTexit的时候输入法还是得正常的弹出来的

解决:
在OnCreate方法里面加下面这句代码
// 隐藏软键盘
Java代码收藏代码
  1. getWindow().setSoftInputMode(
  2. WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);


2.在editText中输入完以后,旁边有个send 按钮,当点击send button 关闭软键盘,再次输入的时候再弹出来。
解决:
Java代码收藏代码
  1. //closeinputmethodaftersend
  2. finalInputMethodManagerimm=(InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
  3. imm.hideSoftInputFromWindow(contentTextEdit.getWindowToken(),0);

Android应用如何实现换主题功能:

假设一个简单的场景:有2套主题,一套绿色,一套黑色的。应用界面就一个按钮,每点击一下,按钮和背景都切换为不同的主题,如当前为黑色主题,下一次就为绿色主题,再下一次为黑色,以此类推。

打开Eclipse,新建三个Android工程项目,名字分别为BlackSkin、GreenSkin和MainSkin。BlackSkin和GreenSkin分别对应黑色、绿色主题资源,MainSkin为主应用。

BlackSkin
该工程下没有任何代码,只是在res\drawable目录下放置2张图片,一张黑色的背景,一张黑色的按钮图片。接着修改AndroidManifest.xml文件。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1"
android:versionName="1.0"
package="net.toeach.blackskin"
android:sharedUserId="net.toeach.MainSkin">

<uses-sdk android:minSdkVersion="3" />

</manifest>













GreenSkin
与BlackSkin项目一样,该工程下也没有任何代码,只是在res\drawable目录下放置2张图片,一张绿色的背景,一张绿色的按钮图片。接着修改AndroidManifest.xml文件。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1"
android:versionName="1.0"
package="net.toeach.greenskin"
android:sharedUserId="net.toeach.mainskin">

<uses-sdk android:minSdkVersion="3" />

</manifest>















我们知道Android给每个APK进程分配一个单独的用户空间,其manifest中的userid就是对应一个Linux用户的(Android 系统是基于Linux)。所以不同APK(用户)间互相访问数据默认是禁止的,但是它也提供了2种APK间共享数据的形式:
1. Share Preference. / Content Provider
APK可以指定接口和数据给任何其他APK读取,需要自己实现接口和Share的数据.

2. Shared User id
通过Shared User id,拥有同一个User id的多个APK可以配置成运行在同一个进程中。所以默认就是可以互相访问任意数据。也可以配置成运行成不同的进程,同时可以访问其他APK的数据目录下的数据库和文件。就像访问本程序的数据一样。本文中的换主题功能就是通过这种方式来实现的。

MainSkin
该工程为主应用,我们新建立一个Activity类,叫MainActivity.java。代码如下:

public class MainActivity extends Activity {
private LinearLayout showBg;
private Button btn;
private Context greenSkinContext = null;
private Context blackSkinContext = null;
int flag = 0;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try {
greenSkinContext = this.createPackageContext("net.toeach.greenskin", Context.CONTEXT_IGNORE_SECURITY);
blackSkinContext = this.createPackageContext("net.toeach.blackskin", Context.CONTEXT_IGNORE_SECURITY);
} catch (NameNotFoundException e) {
e.printStackTrace();
}

showBg = (LinearLayout) findViewById(R.id.linear_layout_1);
btn = (Button) findViewById(R.id.btn_change_skin);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (flag == 0) {
//访问GreenSkin下的资源
showBg.setBackgroundDrawable(greenSkinContext.getResources().getDrawable(R.drawable.bg));
btn.setBackgroundDrawable(greenSkinContext.getResources().getDrawable(R.drawable.btn_normal));
flag = 1;
} else if (flag == 1) {
//访问BlackSkin下的资源
showBg.setBackgroundDrawable(blackSkinContext.getResources().getDrawable(R.drawable.bg));
btn.setBackgroundDrawable(blackSkinContext.getResources().getDrawable(R.drawable.btn_normal));
flag = 0;
}//end of if
});
}//end of method
}//end of class






分享到:
评论

相关推荐

    Android开发常用功能大集合。以及知识点的详解代码

    Android开发常用功能大集合。以及知识点的详解代码

    Android-Android开发常用功能大集合。以及知识点的详解代码

    Android开发常用功能大集合。以及知识点的详解代码

    Android知识点及重要代码合集 word文档

    1.1掌握Android四层体系架构 5 1.2 Eclipse工程文件 5 1.3 Android项目的编译及运行过程 6 2.1 AndroidStudio中R文件的位置 7 2.2 View继承结构图 7 2.3 LinearLayout布局基本属性 7 2.4 用户名密码 登陆重置常用...

    Android开发案例驱动教程 配套代码

    《Android开发案例驱动教程》 配套代码。 注: 由于第12,13,14章代码太大,无法上传到一个包中。 这三节代码会放到其他压缩包中。 作者:关东升,赵志荣 Java或C++程序员转变成为Android程序员 采用案例驱动模式...

    《Android应用开发揭秘》附带光盘代码.

    《Android应用开发揭秘》全部实例源代码,配合《Android应用开发揭秘》使用 前言  第一部分 准备篇  第1章 Android开发简介  1.1 Android基本概念  1.1.1 Android简介  1.1.2 Android的系统构架  1.1.3 ...

    android 常用资大全

    网上收集和自己总结的一些android使用资料,比较基础的知识,对全面了解一些知识很不错的 android ListView美化.docx androidshape.docx android_textview.设置文本属性.docx android_设置字体样式.docx ...

    Android代码-android开发资源分类的整理

    article:分类积累开发中一些不错的技术博文,主要针对某个知识点做讲解。 blog:包括国内外优秀开发者及其他们的博客。 project:整理开源社区中优秀的开源项目,话说看别人的代码也是一种很好的学习方式。 repo:...

    android应用开发范例精解

    第1篇为基础篇,涵盖Android背景及开发环境和Android常用工程组件。第2篇为应用开发篇,通过实例介绍了Android UI布局、Android人机界面、手机硬件设备的使用、Android本地存储系统、Android中的数据库、多线程设计...

    android文件管理代码

    下面介绍在代码中实现资源管理器,只需要一百行左右的一个类即可以最常用的文件选择功能。 2. 相关知识 文件管理器一般以固定大小的对话框的方式出现,使用ListView作为文件目录的显示载体。点选目录测进入,点选...

    Android代码-CommonDevKnowledge

    这个库主要是一些常用的Android开发的一些技能点汇集,有填坑总结,有面试总结,有冷门知识点总结等,会不定期更新,欢迎大家投稿和提意见。 目录结构 :fire: :one: README文档的规范写法 这一部分同步发布在我的...

    Android项目组件化示例代码,支持Fragment和View.zip

    资源包中的文件手册部分,详细记录了Android开发的核心知识点和常用技术。无论是初学者还是有一定经验的开发者,都能从中找到所需的学习资料。手册采用了简洁明了的排版方式,使得查阅更加方便快捷。同时,手册内容...

    Android移动应用开发从入门到精通[PDF+源代码]

    本书涉及面广,涵盖了Android系统几乎所有的应用领域,并详细介绍了Android系统常用工具的使用。在详细介绍Android开发基础知识的同时,全程配合实例讲解,使读者更容易上手。  本书内容丰富,实例典型,实用性强,...

    一些Android项目开发中的知识累积.zip

    资源包中的文件手册部分,详细记录了Android开发的核心知识点和常用技术。无论是初学者还是有一定经验的开发者,都能从中找到所需的学习资料。手册采用了简洁明了的排版方式,使得查阅更加方便快捷。同时,手册内容...

    Android应用开发揭秘源代码2(共2部分,请全部下载再解压)

    本书实战性强,书中的每个知识点都有配精心设计的示例,尤为值得一提的是,它还以迭代的方式重现了各种常用的Android应用和经典Android游戏的开发全过程,既可以以它们为范例进行实战演练,又可以将它们直接应用到...

    Google Android SDK开发范例大全源码 无解压密码

    主要以范例集的方式来讲述Android的知识点,详细介绍了开发Android的人机交互界面、Android常用的开发控件、使用Android手机收发短信等通信服务、开发Android手机的自动服务功能和娱乐多媒体功能以及整合Android与...

    婴儿项目Android代码.zip

    资源包中的文件手册部分,详细记录了Android开发的核心知识点和常用技术。无论是初学者还是有一定经验的开发者,都能从中找到所需的学习资料。手册采用了简洁明了的排版方式,使得查阅更加方便快捷。同时,手册内容...

    Android从入门到精通(明日科技著)3、4章源代码

    内容包括Android快速入门、Android模拟器与常用命令、用户界面设计、高级用户界面设计、基本程序单元Activity、Android应用核心Intent、Android事件处理、资源访问、图形图像处理技术、多媒体应用开发、Content ...

    Android程序技术:常用控件.pptx

    TextView是Android中很常用的用于显示文字(字符串)的控件,可以在代码中设置TextView控件属性,改变文字的大小、颜色、样式等。 其中: android:layout_width和android:layout_height用于设置控件的宽和高,match_...

    Android代码-WanAndroidClient

    玩Android接口 代码结构 Kotlin MVP Kotlin-Coroutines Retrofit2(GsonCallAdapterFactory CoroutineCallAdapterFactory) Kotlin Kotlin协程 Retrofit2 Retrofit2-Kotlin协程适配器 鸿神的Flowlayout BRVAH ...

Global site tag (gtag.js) - Google Analytics