Android编程权威指南-----(一)开发初体验、安装Android Studio、Building gradle project info 一直卡住解决

开发第一个应用 GeoQuiz

由一个activity和一个布局(layout)组成
使用 Android studio 来开发。
创建项目:
这里写图片描述
选择sdk版本等
这里写图片描述

选择一个空的模板
这里写图片描述
创建activity的子类和layout

这里写图片描述

**

Building gradle project info 一直卡住解决

**
然后创建发现了问题。一直停在build。。。。卡了好久。
百度。原来是gradle版本不同。然后更新下载。但是。。。。有墙。那么就在csdn上下载一个。放在应有的目录即可。
各个版本的gradle:http://download.csdn.net/album/detail/2265

放的路径:C:\Users\Administrator.gradle\wrapper\dists\gradle-2.14.1-all\8bnwg5hd3w55iofp58khbp6yv

还有个解决办法是找一个能运行的as项目文件。然后复制其/gradle/wrapper/gradle-wrapper.properties文件最后一行的url给需要创建的项目的相同地方即可。

注意创建的activity子类的名字,为 QuizActivity 而layout的名字是 activity倒过来的。即: activity-quiz

android的界面是用xml设置的。会默认创建出 activity-quiz.xml文件。
用来描述界面。

一些常用配置组件和常用属性

1、android:layout_width和android:layout_height

就是高宽。其对应的属性有两个
match_parent: 视图与其父视图的大小相同
wrap_content: 视图将其根据其展示的内容自动调整大小

还有android:padding=""24dp
这个的意思是说 告诉组件在决定大小的时候,除内容本身除外。还需增加额外指定量的空间。

2、android:orientation
是两个LinearLayout组件都具有的属性。决定的是子组件是水平还是垂直放置。

 android:orientation="vertical"

3、android:text
TextView与Button组件都具有这个属性。该属性指定组件要显示的内容。
注意:android:text的属性值不是字符串值,而是对字符串资源的引用。

   android:text="@string/question_text"

activity_quiz.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="center"
    android:orientation="vertical"
    >
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="24dp"
        android:text="@string/question_text"
        />
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/true_button"
        />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/false_button"
        />

字符串资源是放置 res/values目录下的strings.xml。
这里写图片描述

有一个根 元素resources,其下有很多个string标签。引用的时候根据其属性name来获取。

**如何将xml元素转换成视图

是在继承activity的子类中重写Activity的onCreate方法。传入参数R.layout.activity_quiz
而且是在调用这个setContentView(R.layout.activity_quiz)的时候才开始实例化。

public class QuizActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_quiz);
    }
}

添加监听器

比如说给一个按钮添加个监听器。
首先先对xml页面进行实例化。然后或R来获取按钮即:
private Button mTrueButton ;

mTrueButton = (Button) findViewById(R.id.true_button)
这样就获取到页面中的truebutton了。是利用的id来获取资源。他的id就是true_button 在xml中定义

添加监听器:

mTrueButton.setOnClickListener( new View.OnclickListener(){
@Override
public void onClick(View v){
//在这写监听到按钮事件触发的效果
}
}

);

传入setOnClickListener(OnclickListener)方法的参数是一个监听器。该参数是一个实现了OnClickListener接口的对象。

传入setOnClickListener(OnclickListener)方法的监听器参数是一耳光匿名内部类实现的。

       //获取button
        mTrueButton = (Button) findViewById(R.id.true_button);
        mFalseButton = (Button) findViewById(R.id.false_button);
        //设置监听器
        mTrueButton.setOnClickListener( new View.OnClickListener(){
            @Override
            public void onClick(View v){

            }

        });
//

android应用是典型的事件驱动型类型。

添加按钮事件触发弹出提示消息

public void onClick(View v ){
Toast.makeText(QuizActivity.this,R.string.incorrect_toast,Toast.LENGTH_SHORT).show();

}

传入的是QuizActivity.this而不是this。这个this指的是 监听器 View.OnClickListener。

public class QuizActivity extends AppCompatActivity {
    private Button mTrueButton;
    private Button mFalseButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_quiz);
        //获取button
        mTrueButton = (Button) findViewById(R.id.true_button);
        mFalseButton = (Button) findViewById(R.id.false_button);
        //设置监听器
        mTrueButton.setOnClickListener( new View.OnClickListener(){
            @Override
            public void onClick(View v){
                Toast.makeText(QuizActivity.this,R.string.incorrect_toast,Toast.LENGTH_SHORT).show();
            }

        });
//

        mFalseButton.setOnClickListener( new View.OnClickListener(){
            @Override
            public void onClick(View v){
                Toast.makeText(QuizActivity.this,R.string.correct_toast,Toast.LENGTH_SHORT).show();
            }

        });

这里的R.string.correct_toast也是在strings.xml中定义了的

运行

创建AVD
这里写图片描述
这里写图片描述

恩,然后创建一个,下载了好久后。运行。报错。发现我之前把strings.xml中的app_name删除了。再次添加。

成功运行!

这里写图片描述

java内存分为4块。一块是堆,用来存放new的对象,一个是栈,用来存放局部变量。然后是静态变量区,存放常量,静态变量,以及代码区,存放代码。

一定要注意版本问题

这个就解决了编程与平台版本不同
http://blog.csdn.net/leichelle/article/details/7988561

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值