小白一个,首次写博客,些许错误勿见怪,哈哈哈哈。

任务1 单击按钮图片选择器

*使用TextView,RadioGroup,RadioButton完成。

*设置单击按钮选择显示花朵。

首先设置了页面布局

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.bwqpzy.flower.MainActivity"
android:weightSum="1">

*1.在TextView中遇到了滚动文字显示问题,之后从网上找到了跑马灯显示的方法 即 android:ellipsize="marquee"

代码具体如下

<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:textColor="#cc0000"
android:textSize="29sp"
android:ellipsize="marquee"//跑马灯
android:focusable="true"
android:marqueeRepeatLimit="marquee_forever"
android:focusableInTouchMode="true"
android:scrollHorizontally="true"/>

在Java中定义如下代码

TextView text = (TextView) findViewById(R.id.text);
text.setText("Please choose a flower you like!");
text.setFocusable(true);

这样就完成滚动文字的显示效果

*2.RadioGroup可单选,但两组group的话,会有两个选项,之后在mainactivity需要设置代码实现功能。在group中也可定义linearlayout,我试过之后发现group中可以被多选,感觉很麻烦,所以我直接选择了在layout中定义组件,只需一组RadioGroup可实现要求,代码如下:

        <RadioGroup
android:id="@+id/choose1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RadioButton
android:id="@+id/cmh"
android:layout_width="80dip"
android:layout_marginTop="-6dip"
android:layout_height="wrap_content"
android:text="梅花"
android:textSize="20dp"/> <RadioButton
android:id="@+id/cxqh"
android:layout_width="113dp"
android:layout_height="wrap_content"
android:text="绣球花"
android:textSize="20dp"/>
<RadioButton
android:id="@+id/csnh"
android:layout_width="105dp"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_marginLeft="150dip"
android:layout_marginTop="-64dip"
android:text="石楠花"
android:textSize="20dp"/>
<RadioButton
android:id="@+id/cylh"
android:layout_width="106dp"
android:layout_height="wrap_content"
android:layout_marginLeft="150dip"
android:orientation="horizontal"
android:text="玉兰花"
android:textSize="20dp"/> <RadioButton
android:id="@+id/cxyh"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="290dip"
android:layout_marginTop="-64dip"
android:text="象牙花"
android:textSize="20dp"/> <RadioButton
android:text="牡丹花"
android:id="@+id/cmdh"
android:layout_width="wrap_content"
android:layout_marginLeft="290dip"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:textSize="20dp"
/> </RadioGroup>

*3.用一个ImageView来显示图片

其中我在drawable中新建了一个xml文件

代码如下

<level-list xmlns:android="http://schemas.android.com/apk/res/android" >

<item
android:drawable="@drawable/mh"
android:maxLevel="0"/> <item
android:drawable="@drawable/snh"
android:maxLevel="1"/> <item
android:drawable="@drawable/xyh"
android:maxLevel="2"/> <item
android:drawable="@drawable/xqh"
android:maxLevel="3"/> <item
android:drawable="@drawable/ylh"
android:maxLevel="4"/>
<item
android:drawable="@drawable/mdh"
android:maxLevel="5"/> </level-list>

整个layout布局完毕

具体效果如图

其中主要部分代码如下


public class MainActivity extends AppCompatActivity {
//1.定义组件 private ImageView image;
private RadioGroup choose1; private RadioButton cmh;
private RadioButton csnh;
private RadioButton cxyh;
private RadioButton cxqh;
private RadioButton cylh;
private RadioButton cmdh;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView text = (TextView) findViewById(R.id.text);
text.setText("Please choose a flower you like!");
text.setFocusable(true);
//2.获取组件
choose1 = (RadioGroup) findViewById(R.id.choose1);
cmh = (RadioButton) findViewById(R.id.cmh);
csnh = (RadioButton) findViewById(R.id.csnh);
cxyh = (RadioButton) findViewById(R.id.cxyh);
cxqh = (RadioButton) findViewById(R.id.cxqh);
cylh = (RadioButton) findViewById(R.id.cylh);
cmdh = (RadioButton) findViewById(R.id.cmdh);
image = (ImageView) findViewById(R.id.image);
//3.设置监听并获取图片
cmh.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (cmh.isChecked()) {
image.setImageResource(R.drawable.mh);
}
}
}); csnh.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (csnh.isChecked()) {
image.setImageResource(R.drawable.snh);
}
}
}); cxyh.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (cxyh.isChecked()) {
image.setImageResource(R.drawable.xyh);
}
}
}); cxqh.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (cxqh.isChecked()) {
image.setImageResource(R.drawable.xqh);
}
}
}); cylh.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (cylh.isChecked()) {
image.setImageResource(R.drawable.ylh);
}
}
});
cmdh.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (cmdh.isChecked()) {
image.setImageResource(R.drawable.mdh);
}
}
});
} }

通过这些代码的编写,逐渐熟悉了Android的流程以及运用所学知识来解决遇到的问题,通过网络搜索,查询来扩充知识储备。

任务2 图片随鼠标移动来显示坐标

*图片随着鼠标移动位置,并显示出当前位置的坐标信息。

*当用户点击退出按钮,给出提示信息:“再按一次退出程序”。

页面布局

<LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.bwqpzy.dog.MainActivity"> <ImageView
android:id="@+id/dog"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:src="@drawable/er"
/> </LinearLayout>

mainactivity部分的代码



public class MainActivity extends AppCompatActivity {

    private ImageView dog;

    private int screenWidth;
private int screenHeight; /** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); dog = (ImageView) findViewById(R.id.dog); DisplayMetrics dm = getResources().getDisplayMetrics();
screenWidth = dm.widthPixels;
screenHeight = dm.heightPixels - 50; dog.setOnTouchListener(movingEventListener); }
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction()==MotionEvent.ACTION_DOWN) {
float x=event.getX();
float y=event.getY();
String pos="x坐标:"+x+",y坐标:"+y;
Toast.makeText(this,pos,Toast.LENGTH_LONG).show();
}
return super.onTouchEvent(event);
} private View.OnTouchListener movingEventListener = new View.OnTouchListener() {
int lastX, lastY; @Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
lastX = (int) event.getRawX();
lastY = (int) event.getRawY();
break;
case MotionEvent.ACTION_MOVE:
int dx = (int) event.getRawX() - lastX;
int dy = (int) event.getRawY() - lastY; int left = v.getLeft() + dx;
int top = v.getTop() + dy;
int right = v.getRight() + dx;
int bottom = v.getBottom() + dy;
// 设置不能出界
if (left < 0) {
left = 0;
right = left + v.getWidth();
} if (right > screenWidth) {
right = screenWidth;
left = right - v.getWidth();
} if (top < 0) {
top = 0;
bottom = top + v.getHeight();
} if (bottom > screenHeight) {
bottom = screenHeight;
top = bottom - v.getHeight();
} v.layout(left, top, right, bottom); lastX = (int) event.getRawX();
lastY = (int) event.getRawY(); break;
case MotionEvent.ACTION_UP:
break;
}
return true;
}
};
}

效果图

这次主要有这几个问题:

1.RadioGroup下只有一个单选按钮,设置新的布局会破坏一个按钮的限制。

2.一个imageview怎么储存多张图,通过建文件,关联id解决。

首个写博客的Android任务的更多相关文章

  1. 《REWORK》启示录 招聘笔杆子——程序员为什么值得写博客

    Hire Great Writers 仿佛这是写给自己看的,不过这在其中也有着相当有趣的意义 .虽然自己算是一个能写的人,或许这算是一种不算才华的才华,写博文的意义通常不会在于去描述自己怎样,怎样.通 ...

  2. 云开发中的战斗机 Laf,让你像写博客一样写代码

    各位云原生搬砖师 and PPT 架构师,你们有没有想过像写文章一样方便地写代码呢? 怎样才能像写文章一样写代码? 理想的需求应该是可以在线编写.调试函数,不用重启服务,随时随地在 Web 上查看函数 ...

  3. 新功能发布!Markdown写博客!

    有一种神奇的语言,它比html还简单,它巧妙地将内容与格式整合在一起--它就是Markdown. 现在我们实现了博客对Markdown的内置支持,可以让您轻松地在园子里用这个神奇的语言写博客! &qu ...

  4. 第一次写博客Poj1044

    Date bugs Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 3005   Accepted: 889 Descript ...

  5. (转)[BetterExplained]为什么你应该(从现在开始就)写博客

    (一)为什么你应该(从现在开始就)写博客 用一句话来说就是,写一个博客有很多好处,却没有任何明显的坏处.(阿灵顿的情况属于例外,而非常态,就像不能拿抽烟活到一百岁的英国老太太的个例来反驳抽烟对健康的极 ...

  6. 推荐几款自己写博客使用的Ubuntu软件

    使用Ubuntu桌面有段时间,到现在也写过几篇博客了,期间用到的几款好用的软件推荐给大家.1. 图片简单编辑软件gthumbubuntu默认提供shotwell查看图片,类似与windows的图片查看 ...

  7. QQ表情动图,增加写博客的乐趣

    QQ表情动图,增加写博客的乐趣 body{margin:0px;}

  8. 如果简单的记录,就可以为这个世界创造更多的财富,那么还有什么理由不去写博客呢? — 读<<黑客与画家>> 有感

    上一次博文发文时间是2016.1.15,7个月已经过去了.最近读了一本<>的书,对我触动挺大的!里面有关于技术趋势的探讨,也有关于人生和财富的思考! 开始更新iOS122的文章的初衷是,聚 ...

  9. 好久没有写博客了,发现Live Writer也更新了

    最近由于工作变动,工作内容和心态也有所变化,所以很久没有写博客了,而且我的开源项目深蓝词库转换也很近没有更新了.今天打开LiveWriter发现居然有新版本,于是果断更新.现在新的LiveWriter ...

随机推荐

  1. W3Cschool学习笔记——HTML5基础教程

    HTML5 建立的一些规则: 新特性应该基于 HTML.CSS.DOM 以及 JavaScript. 减少对外部插件的需求(比如 Flash) 更优秀的错误处理 更多取代脚本的标记 HTML5 应该独 ...

  2. Activity启动过程分析

    Android的四大组件中除了BroadCastReceiver以外,其他三种组件都必须在AndroidManifest中注册,对于BroadCastReceiver来说,它既可以在AndroidMa ...

  3. iOS8中 UITableView section 分区头部视图不显示

    最近自己使用了UITableView写了一个通讯录,但是在编写过程还算顺利,但是后来测试的时候,发现在iOS8中TableView的分区头不能正常显示,使用 - (NSString *)tableVi ...

  4. HTTP学习目录

    前面的话 除了HTML.CSS.javascript这三门前端基础知识之外,HTTP恐怕是前端工程师最需要掌握的知识了,它是前端和后端沟通的桥梁,前端工程师需要能够调试HTTP.修复网络传输中可能遇到 ...

  5. 如何用docker安装laravel开发环境

    如何用docker安装laravel开发环境 看laravel框架的官方文档安装部分时,发现需要安装特别多软件,估计还有许多复杂的配置,官方推荐使用Laravel Homestead虚拟机进行安装,但 ...

  6. [JAVA] - Java OutOfMemoryError分类

    Java OutOfMemoryError一般常遇到的分为两类,分别提示: "Java heap space" 和 "PermGen space",前面的是指j ...

  7. 解析jQuery中extend方法--用法《一》

    extend方法在jQuery中是一个很重要的方法,jQuey内部用它来扩展属性方法.常用语jQuery插件开发. jQuery提供了两个方法,$.extend和$.fn.extend,两个方法内部实 ...

  8. 使用scp命令,不同服务器之间拷备文件

    使用scp命令,不同服务器之间拷备文件 先将源服务器,目标服务器安装scp服务 yum -y install openssh-clients 命令格式 scp source dist usage: s ...

  9. C++测试利器--google test开源测试框架

    资料 偶然发现了google的测试框架gtest,马上试了下,效果挺不错,特别是对于写c++的人来说,方便很多.以前自己写c++的模块,通常是写好了模块后再另外定义些函数,然后在函数里面写测试用例来测 ...

  10. [bzoj1067][SCOI2007]降雨量——线段树+乱搞

    题目大意 传送门 题解 我国古代有一句俗话. 骗分出奇迹,乱搞最神奇! 这句话在这道题上得到了鲜明的体现. 我的方法就是魔改版线段树,乱搞搞一下,首先借鉴了黄学长的建树方法,直接用一个节点维护年份的区 ...