Skip to content

duanjigui/e-point

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

6.6日正式开始项目编制


特别功能界面架设完成

【fix-note】

采用类似主功能界面的布局 增设六个同等属性模块,只进行模块的绘制,暂时不对功能进行实现 

对welcome界面背景进行重新设置

###【问题描述】 由于原先图片分辨率不高,在实体机上显示效果并不理想   【bug-fix-note】 更换为分辨率较高的图片

6.27

android studio常用快捷键

快捷键 用途描述 Alt+回车 导入包,自动修正 Ctrl+N 查找类 Ctrl+Shift+N 查找文件 Ctrl+Alt+L 格式化代码 Ctrl+Alt+O 优化导入的类和包 Alt+Insert 生成代码(如get,set方法,构造函数等) Ctrl+E Alt+Shift+C 最近更改的代码 Ctrl+R 替换文本 Ctrl+F 查找文本 Ctrl+Shift+Space 自动补全代码 Ctrl+空格 代码提示 Ctrl+Alt+Space 类名或接口名提示 Ctrl+P 方法参数提示 Ctrl+Shift+Alt+N 查找类中的方法或变量 Alt+Shift+C 对比最近修改的代码 Shift+F6 重构-重命名 Ctrl+X 删除行 Ctrl+U 导航到父类 Ctrl+O 重写或实现父类 Ctrl+D 复制行 Ctrl+/ 行注释 Ctrl+Shift+/ 代码段注释 Ctrl+J 自动代码 Ctrl+E 最近打开的文件 Ctrl+H 显示类结构图 Ctrl+Q 显示注释文档 Alt+F1 查找代码所在位置 Alt+1 快速打开或隐藏工程面板 Ctrl+Alt+left/right 返回至上次浏览的位置 Alt+left/right 切换代码视图 Alt+Up/Down 在方法间快速移动定位 Ctrl+Shift+Up/Down 代码向上/下移动 F2或Shift+F2 高亮错误或警告快速定位 Ctrl+Shift+F7 高亮显示所有该文体,按Esc高亮消失 Alt+F3 逐个往下查找相同文本 Ctrl+E 显示最近编辑的文件列表 Ctrl+[或] 可以跳到大括号的开头结尾 Ctrl+Shift+Backspace 可以跳转到上次编辑的地方 Ctrl+F7 当前元素在当前文件中的引用 Ctrl+P 可以显示参数信息 Ctrl+Alt+T 可以把代码包在一块内,例如try/catch

welcome界面已完成

  1. 解决首页图片不能全屏拉伸的问题,关于margin和padding的属性问题;
  2. 使用FrameLayout进行图片的放置;
  3. 解决logo的设计问题,使用油画视觉效果,突出“e”字主题;
  4. 关于首页展示项目的宣传语问题: 让点名容易“e点”
  5. 解决多屏幕适配的问题。 ##【bug-fixed-note】 消除首页面上方菜单栏(建议设置为自动隐藏)

login/register界面

  1. 解决输入框自适应问题;
  2. 解决登陆按钮背景颜色的问题;
  3. 对于welcome界面与login界面之间的衔接遇到问题: 1.试图通过为welcome中的图片添加监听器使得intent能够识别并跳转至login界面,但在点击屏幕后程序崩溃;

##【bug-fixed-note】 解决方式: 将显式Intent转换为隐式Intent,并更改category目的,从而使得主活动能够自动匹配login活动。(第一屏到第二屏之间存在相应时间,应当确认是否为debug机器本身的相应问题,请进行真机测试) 6.6/19:06 已进行真机测试,响应时间正常,经测试表明确实为虚拟机卡顿造成影响。

CallTheRoll界面

  1. 解决按钮平均划分的问题
  2. 解决Intent找不到对象的问题

【bug-fixed-note】

 解决方式: 1. 通过**android:layout_weight="1"**实现各组件之间比重相等 2. 隐式intent,通过添加category实现 

【bug-fixed-note】

### 试图通过按下返回键两次退出程序 
  1. 使用了ActivityCollector活动管理控制关闭活动,但只能退出当前的活动。之前的活动依旧会重新进栈;

package com.snowalker.wwl.e_point;

import android.app.Activity;

import java.util.ArrayList; import java.util.List;

/**

  • Created by Administrator on 2015/6/12 0012. */ public class ActivityCollector {

    public static List activities = new ArrayList();

    public static void addActivity(Activity activity) { activities.add(activity); }

    public static void removeActivity(Activity activity) { activities.remove(activity); }

    public static void finishAll() { for (Activity activity : activities) { if (!activity.isFinishing()) { activity.finish(); } } } } ----------------------想要关闭的活动----------------------------- ActivityCollector.addActivity(this);

     Button button = (Button) findViewById(R.id.about_us); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ActivityCollector.finishAll(); } }); 

2.使用Application来保存一个全局变量isProgramExit。(对Application使用不熟悉的话查看相关资料)

public class MyApplication extends Application { // 程序退出标记 private static boolean isProgramExit = false; public void setExit(boolean exit) { isProgramExit= exit; }

public boolean isExit() { return isProgramExit; } 

} 在你退出时需要结束的每个 Activity 的 onStart 方法加上以下代码:

protected void onStart() { super.onStart(); MyApplication mApp = (MyApplication)getApplication(); if(mApp.isExit()) { finish(); } } 比如,程序中有三个Activity,A —— B —— C;现在在C中有个按钮,点击退出整个程序。按照上面说的,在A和B的onStart方法中加入判断代码(C中可以不加),C中点击按钮时执行:

MyApplication mApp = (MyApplication)getApplication(); mApp.setExit(true); finish(); 这样C结束了自己,按照流程会回到B,然后B中会进行判断,因为退出条件满足,结束自己;再回到A,同样也结束……

可以看到,这种方法并不高明,甚至有些复杂,因为要在每个Activity的onStart中都加上判断。但不可否认的是这种方法却是绝对有效的,不管你的程序中Activity如何跳转来跳转去,只要一声令下,通通结束,屡试不爽。

所以,有遇到程序退出问题的朋友可以作为参考。

---------------------------application说明。txt---------------------------- Application类

Application和Activity,Service一样是Android框架的一个系统组件,当Android程序启动时系统会创建一个Application对象,用来存储系统的一些信息。

Android系统自动会为每个程序运行时创建一个Application类的对象且只创建一个,所以Application可以说是单例(singleton)模式的一个类。

通常我们是不需要指定一个Application的,系统会自动帮我们创建,如果需要创建自己的Application,那也很简单!创建一个类继承Application并在AndroidManifest.xml文件中的application标签中进行注册(只需要给application标签增加name属性,并添加自己的 Application的名字即可)。

启动Application时,系统会创建一个PID,即进程ID,所有的Activity都会在此进程上运行。那么我们在Application创建的时候初始化全局变量,同一个应用的所有Activity都可以取到这些全局变量的值,换句话说,我们在某一个Activity中改变了这些全局变量的值,那么在同一个应用的其他Activity中值就会改变。

Application对象的生命周期是整个程序中最长的,它的生命周期就等于这个程序的生命周期。因为它是全局的单例的,所以在不同的Activity,Service中获得的对象都是同一个对象。所以可以通过Application来进行一些,如:数据传递、数据共享和数据缓存等操作。

应用场景:

在Android中,可以通过继承Application类来实现应用程序级的全局变量,这种全局变量方法相对静态类更有保障,直到应用的所有Activity全部被destory掉之后才会被释放掉。

实现步骤:

1、继承Application

复制代码 public class CustomApplication extends Application { private static final String VALUE = "Harvey";

private String value; @Override public void onCreate() { super.onCreate(); setValue(VALUE); // 初始化全局变量 } public void setValue(String value) { this.value = value; } public String getValue() { return value; } 

} 复制代码 注:继承Application类,主要重写里面的onCreate()方法(android.app.Application包的onCreate()才是真正的Android程序的入口点),就是创建的时候,初始化变量的值。然后在整个应用中的各个文件中就可以对该变量进行操作了。

2、在ApplicationManifest.xml文件中配置自定义的Application

实例代码:

CustomApplication.java

复制代码 /**

  • 继承Application
  • @author admin

*/ public class CustomApplication extends Application { private static final String VALUE = "Harvey";

private String value; @Override public void onCreate() { super.onCreate(); setValue(VALUE); // 初始化全局变量 } public void setValue(String value) { this.value = value; } public String getValue() { return value; } 

} 复制代码 FirstActivity.java

复制代码 public class FirstActivity extends Activity { private CustomApplication app;

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); app = (CustomApplication) getApplication(); // 获得CustomApplication对象 Log.i("FirstActivity", "初始值=====" + app.getValue()); // 获取进程中的全局变量值,看是否是初始化值 app.setValue("Harvey Ren"); // 重新设置值 Log.i("FirstActivity", "修改后=====" + app.getValue()); // 再次获取进程中的全局变量值,看是否被修改 Intent intent = new Intent(); intent.setClass(this, SecondActivity.class); startActivity(intent); } 

} 复制代码 注:只需要调用Context的 getApplicationContext或者Activity的getApplication方法来获得一个Application对象,然后再得到相应的成员变量即可。它是代表我们的应用程序的类,使用它可以获得当前应用的主题和资源文件中的内容等,这个类更灵活的一个特性就是可以被我们继承,来添加我们自己的全局属性。

SecondActivity.java

复制代码 public class SecondActivity extends Activity { private CustomApplication app;

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); app = (CustomApplication) getApplication(); // 获取应用程序 Log.i("SecondActivity", "当前值=====" + app.getValue()); // 获取全局值 } 

} 复制代码 AndroidManifest.xml

复制代码

<application android:icon="@drawable/icon" android:label="@string/app_name" android:name="CustomApplication"> <!-- 将我们以前一直用的默认Application设置成自定义的CustomApplication --> <activity android:name=".FirstActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".SecondActivity" android:label="@string/app_name"> </activity> </application> 
------------------------------------------------------------------------------- ---------------------------关于隐式intent------------------------------------ ## 【bug-fixed-note】 # 误删除 隐式Intent通过需要Android解析,将Intent映射给可以处理此Intent的Activity、IntentReceiver或Service。

Intent解析机制主要是通过查找已注册在AndroidManifest.xml中的所有IntentFilter及其中定义的Intent,最终找到匹配的Intent。

在这个解析过程中,Android是通过Intent的action、type、category这三个属性来进行判断的,判断方法如下:

1 如果Intent指明定了action,则目标组件的IntentFilter的action列表中就必须包含有这个action,否则不能匹配;

2 如果Intent没有提供type,系统将从data中得到数据类型。和action一样,

目标组件的数据类型列表中必须包含Intent的数据类型,否则不能匹配。

3 如果Intent中的数据不是content: 类型的URI,而且Intent也没有明确指定它的type,

将根据Intent中数据的scheme (比如 http: 或者mailto:) 进行匹配。

同上,Intent 的scheme必须出现在目标组件的scheme列表中。

4 如果Intent指定了一个或多个category,这些类别必须全部出现在组建的类别列表中。

比如Intent中包含了两个类别:LAUNCHER_CATEGORY 和 ALTERNATIVE_CATEGORY,

解析得到的目标组件必须至少包含这两个类别。

每一个通过startActivity()方法发出的隐式Intent都至少有一个category,就是 "android.intent.category.DEFAULT",

所以只要是想接收一个隐式Intent的Activity都应该包括"android.intent.category.DEFAULT" category,不然将导致 Intent 匹配失败。

Intent-Filter的定义属性设置的例子:

关于登陆验证

【bug-fixed-note】by 段吉贵 使用SqlLite进行登陆验证,设置三条记录 admin admin user1 user1 user2 user2

关于欢迎界面自动转换

【bug-fixed-note】by 段吉贵/SnoWalker 删除ImageView监听器,替换为延时自动切换

使用了Splash窗口类,在styles.xml中定义主题

private final int SPLASH_LENGHT = 2000; @Override protected void onCreate(Bundle savedInstanceState) { setTheme(R.style.Theme_AppCompat_Light_DarkActionBar); super.onCreate(savedInstanceState); setContentView(R.layout.activity_welcome);

 //imageView = (ImageView) findViewById(R.id.welcome_stuff); new Handler().postDelayed(new Runnable() { @Override public void run() { Intent mainIntent = new Intent(WelcomeActivity.this,Activity_login.class); WelcomeActivity.this.startActivity(mainIntent); WelcomeActivity.this.finish(); } },SPLASH_LENGHT); 

aboutUs界面完成

【bug-fix-note】 1. 解决了添加Layout背景颜色的问题

 安卓修改背景色和文字的颜色 

分类: 安卓开发 2013-08-27 09:22 1461人阅读 评论(0) 收藏 举报 Android颜色 背景 1,可以在color.xml中先定义颜色例如下面

#0ffff0 #00FFFF #7F000000

再在 main.xml里面添加背景的颜色android:background="@drawable/c1"

[html] view plaincopy在CODE上查看代码片派生到我的代码片

<TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_marginTop="121dp" android:layout_toLeftOf="@+id/editText1" android:text="账号" android:textSize="20sp" /> <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/textView1" android:layout_alignBottom="@+id/textView1" android:layout_alignParentRight="true" android:layout_marginRight="40dp" android:ems="10" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/editText1" android:layout_marginTop="28dp" android:text="密码" android:textSize="20sp" /> <EditText android:id="@+id/editText2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/textView2" android:layout_alignBottom="@+id/textView2" android:layout_alignLeft="@+id/editText1" android:ems="10" android:inputType="textPassword" > <requestFocus /> </EditText> 

也可以在oncreat()里面修改颜色textview = (TextView)findViewById(R.id.textView1);textview.setTextColor(Color.RED);

Resources resources = getBaseContext().getResources(); Drawable HippoDrawable = resources.getDrawable(R.drawable.c2); textview1.setBackgroundDrawable(HippoDrawable);

About

e-point教师辅助点名

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Java 100.0%