UI_1

依然按照视频讲解,但是 AppCompatActivity和ActionBarActivity一直弄不好,现在也不明白有什么区别。
所以想回到《疯狂安卓讲义第三版》在那上面阅读代码,明白代码,一步一步走
今天做的是UI_1一个图片循环浏览:
首先引入一下(我不知道引入的是什么玩意儿)import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
接下来创建图片数组,格式R.Drawable.q,这里的q是图片名字。当然需要把图片放在Drawable文件夹下。这是我自己想出来的,毕竟原来没有图片,这样试了试还真成功了。

// 获取LinearLayout布局容器

LinearLayout main = (LinearLayout) findViewById(R.id.root);
// 程序创建ImageView组件
final ImageView image = new ImageView(this);
// 将ImageView组件添加到LinearLayout布局容器中
main.addView(image);
// 初始化时显示第一张图片
image.setImageResource(images[0]);
image.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
// 改变ImageView里显示的图片
image.setImageResource(images[++currentImg % images.length]);
}
});
//定时周期性发送一条指令
new Timer().schedule(new TimerTask()
{
@Override
public void run()
{
// 发送一条空消息通知系统改变6个TextView组件的背景色
handler.sendEmptyMessage(0x123);
}
}, 0, 500);
//接收到指令操作程序
Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
// 表明消息来自本程序所发送
if (msg.what == 0x123)
{
for (int i = 0; i < names.length; i++)
{
views[i].setBackgroundResource(colors[(i
+ currentColor) % names.length]);
}
currentColor++;
}
super.handleMessage(msg);
}
循环显示图片以及改变图框颜色。**建立颜色数组,建立图片文件数组**

final int[] colors = new int[] {
        R.color.color1,
R.color.color2,
R.color.color3,
R.color.color4,
R.color.color5,
R.color.color6
};
final int[] names = new int[] {
R.id.view01,
R.id.view02,
R.id.view03,
R.id.view04,
R.id.view05,
R.id.view06 };
接下来学习几个关键字(Java本来就没怎么看)
this,final,super。线程,多态。

使用final修饰方法参数的目的是防止修改这个参数的值,同时也是一种声明和约定,强调这个参数是不可变的.简言之就这意思。

在java里面,this表示自己本身(自己本身这个对像的引用)所以在这个class里,this.value 和value都表示同样的意思
类是LinkNode,this只指自己这个LinkNode,
super的另外一个作用是调用父类的protected函数。只有通过"super"这个魔咒,我们才能操作父类的protected成员,别无它法。
一个调用父类的所以方法,在父类中实现的,在子类中写个super()可以。

main方法其实也是一个线程。在java中所以的线程都是同时启动的,至于什么时候,哪个先执行,完全看谁先得到CPU的资源。在java中,每次程序运行至少启动2个线程。一个是main线程,一个是垃圾收集线程。因为每当使用java命令执行一个类的时候,实际上都会启动一个JVM,每一个jVM实习在就是在操作系统中启动了一个进程。
 
UI1的布局管理器:线性布局<LinearLayout>、表格布局<TableLayout>、帧布局<FrameLayout>、相对布局<RelativeLayout>、网格布局<GridLayout>以及已经过时的<AbsoluteLyaout>绝对布局。
GridLayout gridLayout;//开始定义一个网格布局类型
gridLayout = (GridLayout) findViewById(R.id.root);//根据ID锁定操作网格布局
/********************************************/
//编辑按钮
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_columnSpan="4"
android:text="清除"/>
//在Java文件里新建按钮
Button bn = new Button(this);
bn.setText(chars[i]);
// 设置该按钮的字号大小
bn.setTextSize(40);
// 设置按钮四周的空白区域
bn.setPadding(5 , 35 , 5 , 35);
/*************************/
//把相应组件分布在对应的列
GridLayout.Spec rowSpec = GridLayout.spec(i / 4 + 2);
// 指定该组件所在的列
GridLayout.Spec columnSpec = GridLayout.spec(i % 4);

















  

原文地址:https://www.cnblogs.com/yhc04161120/p/4761789.html