android多个页面
⑴ android 项目多套页面布局
.
java">onCreate(){
if(条件){
setContenView(R.layout.a)
}else{
setContenView(R.layout.b)
}
}
.如果是分辨率或者手机和平板的话,会有不同的drawable或者layout文件夹可以使用,会自动适配相关命名的文件夹内的文件,这方面可以了解下
⑵ android studio 怎么创建多个页面
首先创建一个Test项目工程,选择默认版式,选择好自己喜欢的主题(Theme)。
在文件管理器中找到layout下的xml文件,并将其复制粘贴一份到layout目录下,命名为second_activity.xml。
接下来在.java文件处新建一个java class,命名为SecondActivity。
此时可以看到文件目录中多出来一个xml文件和一个java类文件。
打开AndroidManifest.xml文件,添加一个<activity></activity>标签,添加内容如下:
<activity
android:name=".SecondActivity"
android:label="Second Activity">
<intent-filter>
<action android:name="com.litreily.SecondActivity"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
修改SecondActivity.xml:
<TextView
android:text="The Second Activity!"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
修改SecondActivity.java文件:
public class SecondActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.SecondActivity);
}
}
修改主界面的activity_my.xml文件,添加一个按钮,用于跳转Activity:
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="转到下一个界面"
android:onClick="onClick"/>
在主界面的java类中实现按钮的点击事件响应函数onClick,通过startActivity函数打开新的Activity.
public void onClick(View view)
{
startActivity(new Intent("com.litreily.SecondActivity"));
}
设置采用模拟器打开App,并启动调试打开模拟器。
步骤阅读
在模拟器中运行程序,点击按钮可以切换Activity,在第二个界面点击返回键可以返回主界面。
⑶ android中一个页面如何同时传值到多个页面
1、最简单的方法,设置一个public static变量,直接更改这个值,其他界面可以直接使用,不过不是很推荐。
2、使用广播发送消息,其他界面接收。
⑷ Android如何运行第二个页面
使用activity实现。
1、在Android中,创建两个activity。
2、将其中一个activity中组件作为事件源。
3、通过组件事件的处理借助intent对象实现跳转。
⑸ android app每天正常写几个页面
平均下来的话,一天差不多一个页面算是快些的速度。因为多数页面都包含点击逻辑,弹窗,动画,还有些会有集成第三方聊天,语音等,还有一些比较不好做的部分,一天一个页面已经算是快进度了。
⑹ android 多个页面怎么共用同一组件
自定义组件就行。如果觉得还不好就创建一个mole。
关于自定义组件的实例,请参考android学习手册,android学习手册包含9个章节,108个例子,源码文档随便看,例子都是可交互,可运行,源码采用android studio目录结构,高亮显示代码,文档都采用文档结构图显示,可以快速定位。360手机助手中下载,图标上有贝壳
.多个Activity共用相同布局或者相同控件:避免重复代码;
BaseActivit代码:
{
/*
* 多个Activity共用相同布局或者相同控件
* 写个基类继承,避免重复代码
*/
@Override
publicvoidonClick(View v)
{
switch(v.getId())
{
caseR.id.common_titlebar_btn_back:
finish();
break;
default:
break;
}
baseOnClick(v);
}
protectedvoidbaseOnClick(View v)
{
}
@Override
protectedvoidonCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_base);
}
@Override
protectedvoidonResume()
{
super.onResume();
onPostOnCreate();
}
publicfinalvoidonPostOnCreate()//find同一个控件
{
findViewById(R.id.common_titlebar_btn_back).setOnClickListener(this);
}
@Override
(Menu menu)
{
getMenuInflater().inflate(R.menu.base, menu);
returntrue;
}
}
子类代码:
{
/**
* layout里复用同一布局:
* < include
* android:id="@+id/include1"
* layout="@layout/common_titlebar" />
*/
@Override
protectedvoidonCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_third_main);
}
}
⑺ android开发多个界面怎么共用一个Menu菜单
如果想要在android开发多个界面中共用一个Menu菜单那么可以把这几个Activity加入到一个ActivityGroup里面,然后把Menu菜单写在ActivityGroup里面就行了,这样就实现了共用一个菜单。
⑻ android中如何利用一个按钮进行多个页面的跳转
莫过于你想要的就是这个按钮在不同的状态的时候启动相应的ACTIVITY,那比如你要启动4个页面,你设置4个常量 ONE、TWO、Three、Four 在设置一个常量flag 在不同的情况下,定义flag的值等于ONE或TWO或Three或Four,然后再按钮的响应事件中 做一个判断 switch(falg) { case ONE: break;case Two: break;case Three: break;case Four: break;
}
⑼ 在android开发中,怎样动态生成多界面
效果:
layout界面布局:
[html] view plainprint?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:ad="http://schemas.android.com/apk/res/android"
ad:layout_width="match_parent"
ad:layout_height="match_parent"
ad:orientation="vertical" >
<LinearLayout
ad:layout_width="match_parent"
ad:layout_height="30dp"
ad:background="@drawable/titlebar_bg"
ad:orientation="horizontal" >
<ImageView
ad:layout_width="wrap_content"
ad:layout_height="wrap_content"
ad:src="@drawable/back_44_44" />
<LinearLayout
ad:layout_width="match_parent"
ad:layout_height="30dp"
ad:gravity="center" >
<TextView
ad:layout_width="wrap_content"
ad:layout_height="wrap_content"
ad:text="课程列表"
ad:textSize="20sp" />
</LinearLayout>
</LinearLayout>
<ScrollView
ad:id="@+id/ScrollView"
ad:layout_width="fill_parent"
ad:layout_height="wrap_content"
ad:scrollbars="vertical" >
<LinearLayout
ad:id="@+id/mainLayout"
ad:layout_width="match_parent"
ad:layout_height="wrap_content"
ad:orientation="vertical" >
</LinearLayout>
</ScrollView>
</LinearLayout>
httputil辅助类:
[java] view plainprint?
package com.tudou.activity.work4;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import android.util.Log;
public class HttpUtil {
/**
* 获取到流,自己处理数据
* @param path
* @return
*/
public static InputStream getInputStream(String path) {
HttpURLConnection conn = null;
try {
URL url = new URL(path);
conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true);
// 设置是否向httpUrlConnection输出,post请求,参数要放在http正文内
conn.setDoOutput(true);
conn.setReadTimeout(3000);
conn.setConnectTimeout(3000);
conn.setUseCaches(false);
conn.setRequestMethod("POST");
if (conn.getResponseCode() == 200) {
Log.d("mylog", "getResponseCode:" + 200);
return conn.getInputStream();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (conn != null) {
conn.disconnect();
}
}
return null;
}
/**
* 直接返回响应体正文
* @param path
* @return
*/
public static String getResponseBody(String path,String params) {
HttpURLConnection conn = null;
StringBuffer result=new StringBuffer();
try {
URL url = new URL(path);
conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true);
// 设置是否向httpUrlConnection输出,post请求,参数要放在http正文内
conn.setDoOutput(true);
conn.setReadTimeout(3000);
conn.setConnectTimeout(3000);
conn.setUseCaches(false);
conn.setRequestMethod("POST");
//数据输出流,该语句隐含的执行connect动作
if(params!=null){
DataOutputStream out = new DataOutputStream( conn.getOutputStream());
//将参数写入流,刷新提交关闭流
out.writeBytes(params);
out.flush();
out.close();
}
//读取连接返回的数据
BufferedReader reader = new BufferedReader(new InputStreamReader( conn.getInputStream()));
String inputLine = null;
while (((inputLine = reader.readLine()) != null)) {
result.append(inputLine);//"\n";
}
//关闭
reader.close();
if (conn.getResponseCode() == 200) {
Log.d("mylog", "getResponseCode:" + 200);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (conn != null) {
conn.disconnect();
}
}
return result.toString();
}
}
主activity:
[java] view plainprint?
package com.tudou.activity.work4;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.tudou.activity.R;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.ProgressBar;
import android.widget.TextView;
public class HomeWork4 extends Activity {
String path = "此处省略,你要请求的地址";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.homework4);
LinearLayout mainLayout = (LinearLayout)findViewById(R.id.mainLayout);
String result=HttpUtil.getResponseBody(path,null);
// Log.d("mylog", "result:" + result);
try{
JSONObject obj = new JSONObject(result);
JSONArray array=obj.getJSONArray("onlineCourses");
for (int i = 0; i < array.length(); i++) {
JSONObject course= array.getJSONObject(i);
// Log.d("mylog", "course:" + course.toString());
//添加左边的layout
LinearLayout leftlayout=new LinearLayout(this);
//注意包android.widget.LinearLayout.LayoutParams,其它包下面的LayoutParams不起作用
LayoutParams params=new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
params.topMargin=10;
leftlayout.setLayoutParams(params);
leftlayout.setOrientation(LinearLayout.HORIZONTAL);
leftlayout.setGravity(Gravity.CENTER_VERTICAL);
//添加左边layout的图片
ImageView imageView=new ImageView(this);
params=new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
imageView.setLayoutParams(params);
imageView.setImageResource(R.drawable.image_default_195_130);
leftlayout.addView(imageView);
//添加右边的layout,分为上下2部分,上面是标题,下面是进度条
LinearLayout rightlayout=new LinearLayout(this);
LayoutParams rightLayoutParams=new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
rightlayout.setLayoutParams(rightLayoutParams);
rightlayout.setOrientation(LinearLayout.VERTICAL);
//添加课程标题
TextView textView=new TextView(this);
params=new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
textView.setLayoutParams(params);
textView.setText(course.get("courseName").toString());
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15);//18SP
//学分,水平布局,分为左右,左:学分,,右:分值
LinearLayout studyLayout=new LinearLayout(this);
params=new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
studyLayout.setLayoutParams(params);
studyLayout.setOrientation(LinearLayout.HORIZONTAL);
//添加学分
TextView studyView=new TextView(this);
params=new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
studyView.setLayoutParams(params);
studyView.setText("学分:");
studyView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12);
studyView.setTextColor(Color.parseColor("#b6b6b6"));//第2种方法:setTextColor(Color.rgb(255, 255, 255));
//添加学分值
TextView studyValueView=new TextView(this);
params=new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
studyValueView.setLayoutParams(params);
studyValueView.setText(course.get("courseCredit").toString());
studyValueView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
//进度条,水平布局,分为左中右,左:学习进度,中:进度条,右:%值
LinearLayout processLayout=new LinearLayout(this);
params=new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
processLayout.setLayoutParams(params);
processLayout.setOrientation(LinearLayout.HORIZONTAL);
//添加学习进度
TextView processtextView=new TextView(this);
params=new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
processtextView.setLayoutParams(params);
processtextView.setText("学习进度:");
processtextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12);
processtextView.setTextColor(Color.parseColor("#b6b6b6"));
//添加进度条
ProgressBar bar=new ProgressBar(this,null,android.R.attr.progressBarStyleHorizontal);//指定进度条样式
params=new LayoutParams(150, ViewGroup.LayoutParams.WRAP_CONTENT);
bar.setLayoutParams(params);
bar.setMax(100);
bar.setProgress(10);
//添加%值
TextView processvaluetextView=new TextView(this);
params=new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
processvaluetextView.setLayoutParams(params);
processvaluetextView.setText("10%");
processvaluetextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12);
processvaluetextView.setTextColor(Color.parseColor("#b6b6b6"));
//添加标题
rightlayout.addView(textView);
//添加学分
studyLayout.addView(studyView);
studyLayout.addView(studyValueView);
rightlayout.addView(studyLayout);
//添加进度条
processLayout.addView(processtextView);
processLayout.addView(bar);
processLayout.addView(processvaluetextView);
rightlayout.addView(processLayout);
//添加左右边
leftlayout.addView(rightlayout);
mainLayout.addView(leftlayout);
}
}catch(JSONException e){
e.printStackTrace();
⑽ Android的Socket在多个页面接收数据的问题
可以用handle,也可以用回调。还有socket不建议放到application中。