杂记
- Ninepng 九图——用于安卓图标;教学
- “每当我们看到一些美妙的设计的时候,很多人心里面会有一种冲动,这种冲动会让你们想去创造一些新的东西,创造一些美妙的事物。”——罗子雄;
- GUI设计:Axure Rp、Mockplus与墨刀
Android自带DroidDraw;工程解析
1. res:存放资源文件的地方,有图片、字符串、动画、音频以及各式各样的XML文件;
图片资源:
- drawable:存放各种图片文件(peng,jpg,9png,gif···)以及drawable类型的XML文件;
- mipmap-hadpi:高分辨率
- mipmap-mdpi:中的分辨率
- mipmap-xhdpi:超高分辨率
-
布局资源:
-
菜单资源:
-
values目录:
demens.xml:定义资源的尺寸;
- string.xml:定义资源字符串;
- styles.xml:定义样式资源;
- colors.xml:定义资源颜色
- arrays.cml:定义数组资源;
theme主题与文件,与styles类似,对于整个应用中的Actvitiy或者指定的Activity起作用,一般用于窗口外观;
在Java中通过setTheme实验,或者在androidmanifest中为添加theme属性
eg:values-w820dp:w代表平板设备,820dp代表屏幕宽度;values-v11:v(11)代表API(11);raw目录:
存放各种资源,视频音频XML文件,通过openRawResource(int id)来获得资源的二进制流;与Asserts相似,资源文件R生成一个id;
动画:
animator:存放属性动画的XML文件;
-
2. 资源的使用
通过资源id完成对于资源的访问,使用于java代码以及XML中;
Java中的使用: Java文字
txtName.setText(getresourse().getText(R.string.name));
图片
imgIcon.setBackgroundDrawableResourse(R.drawable.icon);
颜色
textName.setTextColor(getSourse().getColor(R.color.red));
布局
setContentView(R.layout.main);
控件
txtName = (TextView)findViewById(R.id.txt_name);
XML中代码的使用
通过@xxx得到
<TextView android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_conttent" android:background = "@drawable/img_back"/>
三个文件
1. MainActivity
package jay.com.example.firstapp;
import android.suppor.v11.app.AppCompatActivity;
import android.os.Bundle;
public class MainACtivity extends AppCompatActivtiy {
/*定义MainActivity:继承Activity类:实现onCreate()抽象方法*/
@Override
protected void onCreate(Bundle saveInstanceState) {
super.onCreate(saveInstanceState);
/*调用父类方法:super.onCreate(saveInstanceStae);*/
setContentView(R.layout.activity_main);
/*setContentView():加载R.layout.activity,main的布局文件*/
//在AndroidMainifest.xml中进行声明否则报错
}
}
2.布局文件:activity_main
//activity_main.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/akp/res/android"
xmlns:tools="http://schemas.android.com.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:context=".MainActivity">
<TextView
andriod:layout_width="warp_content"
android:layout_height="wrap_content"
android:text="@string/hello_world"/>
</RelateiviveLayout>
xmlns:android=”http://schemas.android.com/akp/res/android“
xmlns:tools="http://schemas.android.com.com/tools<br /> 可以通过alt+/作为提示,应该输入的和不应该输入的;理解为语法文件
android:id=”@+id/LinearLayout1”———>为布局设置一个id值标记为LineearLayout1,且添加到R文件内部的id内部中;
android:layout_width=”match_parent” android:layout_height=”match_parent”
控制组件的宽高,有三个属性可以选择<br /> 1、warp_content:组件刚好显示组建的内容的大小;<br /> 2、fill_parent: 填充父容器水平方向的空间,拉伸<br /> 3、match_parent:同上
android:orientation=”vertical/horizontal”: 为线性布局上指定方向
- tools:context=”.MyActivity”
不打包进APK,只是ADT的Layout Editor在当前Layout文件中渲染上下文,说明当前Layout文件中的Layout所在的渲染上下文是activity 那么所对应的activity; android:text=”@string/hello_world”:为textview设置文本,引用string资源里面的hello_world的文本字符串文本
3.配置文件:AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> //定义使用的xml版本于编码方式
<manifest xmln:android="http://schemas.android.com/apk/res/android"
//定义使用的框架,···
package="jay.com.example.firstapp" >
//定义使用的Java包,用包名是应用唯一标识
android:versionCode="1"
android:versionName="1.0"
/**定义程序版本号*/
<uses-sdk android:minSdkVersion="8"
android:targetSdkVersion="21"/>
//使用该app的最低的sdk版本为2.2,开发的系统版本为4.2,后面岱海为每个版本的sdk
<application
android:allowBackup="true"
//是否允许备份文件
android:icon="@mipmap/ic_launcher"
//定义应用的图标,引用drawable中的ic_launchaer
android:label="@string/app_name"
//定义应用名称,引用string中的app_name
android:theme="@style/AppTheme" >
//定义使用的主题,app风格
<activity
android:name=".MainActivity"
//声明一个activity,包括activity所在的包和app的名称,前面部分可以用.表示
android:label="@string/app_name"
//Activity的名称,显示给用户看>
<intent-filter> //意图过滤器
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
//两个代码决定了程序入口,且app会被显示在home的应用程序列表中
<intent-filter>
</activity>
</appliaction>
</manifest>
若app包含了其他组件,都要使用类型说明语法在该文件中进行声明Server:元素BroadcastReciver元素ContentProvider元素IntentFilter
权限的声明:在该文件中显式的声明程序所有要的权限,防止app错误的使用服务,不恰当的访问资源,最终提高android app的健壮性android.permission.SEND_SMS 有这句话表示app需要使用发送信息的权限,安装的时候就会提醒用户,相关的权限可以在sdk手册中查找;