樣式 主題 顯示所有應用 手機衛士

多個視圖屬性的集合, 在寫佈局時, 當多個視圖有不少相同的屬性時, 可以把這些相同的屬性放在一起在styles.xml中定義成一個Style, 而在佈局文件使用@style/style_name統一引用
作用:
複用視圖標籤屬性
目標:
針對的是窗口中的某些視圖
系統樣式:
Android也定義了些系統樣式可以使用
使用系統樣式: @android:style/xxx

------------------------------------------------------------------

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >


    <TextView
        android:id="@+id/textView1"
        style="@style/myStyle"
        
        android:text="SIM卡變更報警" />

    <TextView
        
        style="@style/myStyle"
        
        android:text="GPS追蹤" />
    
    <TextView
        
        style="@style/myStyle"
        
        android:text="遠程銷燬數據" />
    
    <TextView
        
        style="@style/myStyle"
        
        android:text="遠程鎖屏" />
    
     <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        style="@android:style/TextAppearance.DeviceDefault.Large.Inverse"
        
        android:text="鎖屏" />
     

</LinearLayout>


<resources xmlns:android="http://schemas.android.com/apk/res/android">


    <!--
        Base application theme, dependent on API level. This theme is replaced
        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
    -->
    <style name="AppBaseTheme" parent="android:Theme.Light">
        <!--
            Theme customizations available in newer API levels can go in
            res/values-vXX/styles.xml, while customizations related to
            backward-compatibility can go here.
        -->
    </style>


    <!-- Application theme. -->
    <style name="AppTheme" parent="AppBaseTheme">
        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
    </style>
<!-- 
="wrap_content"
        ="wrap_content"
        android:layout_marginLeft="10dp"
        ="center_vertical"
        ="20sp"
        ="@android:drawable/star_big_on"
 -->
 <style name="myStyle">
     <item name="android:layout_width">wrap_content</item>
     <item name="android:layout_height">wrap_content</item>
     <item name="android:gravity">center_vertical</item>
     <item name="android:textSize">20sp</item>
     <item name="android:drawableLeft">@android:drawable/star_big_on</item>
     <item name="android:layout_marginLeft">10dp</item>
 </style>
 
 <style name = "myTheme">
  <item name="android:textColor">#FF0000</item>
</style>

</resources>

————————————————————————————————————————————————————

主題(theme)

理解:
主題的本質也是style
styles.xml中定義, manifest.xml中引用
作用:
複用視圖標籤屬性
目標:
針對整個應用某個Activity的界面
系統常用主題:
@android:style/Theme.Light.NoTitleBar : 沒有標題
@android:style/Theme.Light.NoTitleBar.Fullscreen: 全屏
@android:style/Theme.Dialog : 對話框


————————————————————————————————————————————————————

顯示所有應用列表

功能描述:
此功能是手機衛士程序管理模塊的一部分
它以列表的形式列出手機中所有應用的信息
點擊某一項,提示選擇的應用的名稱
長按某一項,刪除當前行
主要技術:
應用的整體佈局與Item的佈局
獲取手機中所有安裝的應用信息集合(已定義)
使用BaseAdapter顯示列表信息
ListViewitem點擊響應


scaleType=“fitXY” //圖片充滿View的寬度

minHeight=“70dp” //最小高度



package com.example.app03_allapp;


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


import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;


public class MainActivity extends Activity {
private ListView Iv_main;//列表控件
private List<AppInfo> data;//數據源 ,數據的集合
private AppAdapter adapter;//適配器


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化成員變量
Iv_main=(ListView) findViewById(R.id.lv_main);
data = getAllAppInfos();
adapter = new AppAdapter();
//顯示列表
Iv_main.setAdapter(adapter);
}
/*
* 得到手機中所有應用信息的列表
* AppInfo
*  Drawable icon
*  String appName
*  String packageName
*/
protected List<AppInfo> getAllAppInfos() {


List<AppInfo> list = new ArrayList<AppInfo>();
// 得到應用的packgeManager
PackageManager packageManager = getPackageManager();
// 創建一個主界面的intent
Intent intent = new Intent();
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
// 得到包含應用信息的列表
List<ResolveInfo> ResolveInfos = packageManager.queryIntentActivities(
intent, 0);
// 遍歷
for (ResolveInfo ri : ResolveInfos) {
// 得到包名
String packageName = ri.activityInfo.packageName;
// 得到圖標
Drawable icon = ri.loadIcon(packageManager);
// 得到應用名稱
String appName = ri.loadLabel(packageManager).toString();
// 封裝應用信息對象
AppInfo appInfo = new AppInfo(icon, appName, packageName);
// 添加到list
list.add(appInfo);
}
return list;
}
class AppAdapter extends BaseAdapter{


@Override
public int getCount() {
// TODO Auto-generated method stub
return data.size();
}


@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return data.get(position);
}


@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if(convertView == null){
convertView = View.inflate(MainActivity.this, R.layout.item_main,null);
holder = new ViewHolder();
//2.得到當前行需要更新的子View對象
holder.imageView = (ImageView) convertView.findViewById(R.id.iv_item_icon);
holder.textView = (TextView) convertView.findViewById(R.id.tv_item_name);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
//3.得到當前行的數據對象
AppInfo appInof  = data.get(position);
//4.給視圖對象綁定數據
holder.imageView.setImageDrawable(appInof.getIcon());
holder.textView.setText(appInof.getAppName());
//5.返回convertView
return convertView;
}
class ViewHolder{
ImageView imageView;
TextView textView;
}

}
}



package com.example.app03_allapp;


import android.graphics.drawable.Drawable;


public class AppInfo {
private Drawable icon;//應用圖標,圖標對象
private String appName;//應用名稱
private String packageName;//包名
public AppInfo() {
super();
}
public Drawable getIcon() {
return icon;
}
public void setIcon(Drawable icon) {
this.icon = icon;
}
public String getAppName() {
return appName;
}
public void setAppName(String appName) {
this.appName = appName;
}
public String getPackageName() {
return packageName;
}
public void setPackageName(String packageName) {
this.packageName = packageName;
}
public AppInfo(Drawable icon, String appName, String packageName) {
super();
this.icon = icon;
this.appName = appName;
this.packageName = packageName;
}

}


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >


    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#C610EF"
        android:gravity="center"
        android:padding="5dp"
        android:text="所有應用"
        android:textColor="#FFFF"
        android:textSize="25sp" />


    <ListView
        android:id="@+id/lv_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </ListView>


</LinearLayout>


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
    <ImageView 
        android:id="@+id/iv_item_icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher"
        />
    <TextView
        android:id="@+id/tv_item_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_toRightOf="@id/iv_item_icon"
        android:layout_centerVertical="true"
        android:text="應用名稱"
        android:textSize="20sp"
        />


</RelativeLayout>

————————————————————————————————————————————————————

手機衛士主界面

功能描述:
此功能是手機衛士主界面功能的一部分
3*3網格的形式顯示功能模塊列表
點擊某一項, 提示選擇的功能模塊的名稱
主要技術:
應用的整體佈局與Item的佈局
利用BaseAdapterGridView中網格列表信息
GridViewitem點擊響應


numColums=“3” //列數

verticalSpacing=“10dp” //item之間在垂直方向的間距


package com.example.app04_gridview;


import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.GridView;


public class MainActivity extends Activity {
private GridView gv_main;
private MainAdapter adapter;
String [] names=new String[]{"手機防盜","通訊衛士","軟件管理","流量管理","進程管理","手機殺毒","22","33","44"};
int [] icons=new int[]{R.drawable.widget01,
R.drawable.widget02,R.drawable.widget03,
R.drawable.widget04,R.drawable.widget05,R.drawable.widget06,
R.drawable.widget07,R.drawable.widget08,R.drawable.widget09};


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

gv_main=(GridView) findViewById(R.id.gv_main);
adapter=new MainAdapter(MainActivity.this,names,icons);
gv_main.setAdapter(adapter);

}
}

package com.example.app04_gridview;


import android.content.Context;
import android.graphics.drawable.Drawable;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;


public class MainAdapter extends BaseAdapter{
private String[] names;
private int[] icons;
private  Context context;
 public MainAdapter(Context context,String[] names,int[] icons) {
  this.context=context;
this.names=names;
this.icons=icons;
 
}
@Override
public int getCount() {
return names.length;
}


@Override
public Object getItem(int position) {
return names[position];
}


@Override
public long getItemId(int position) {
return position;
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolser holder=null;
if (convertView==null) {
convertView=View.inflate(context, R.layout.item_main, null);
holder=new ViewHolser();
holder.imageView = (ImageView) convertView.findViewById(R.id.iv_id1);
holder.textView = (TextView) convertView.findViewById(R.id.tv_id1);
convertView.setTag(holder);
 
}else{
holder = (ViewHolser) convertView.getTag();
}
holder.imageView.setImageResource(icons[position]);
holder.textView.setText(names[position]);

return convertView;
}
   class ViewHolser{
  ImageView imageView;
  TextView textView;
   }

}

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="80dp"
    android:layout_height="80dp"
    android:orientation="vertical" 
    android:gravity="center"
    >


    <ImageView
        android:id="@+id/iv_id1"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:src="@drawable/ic_launcher" />


    <TextView
        android:id="@+id/tv_id1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="16sp"
        
        android:text="名稱" />


</LinearLayout>

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.app04_gridview"
    android:versionCode="1"
    android:versionName="1.0" >


    <uses-sdk
        android:minSdkVersion="18"
        android:targetSdkVersion="18" />


    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />


                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>


</manifest>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章