編輯:關於android開發
1.詳情頁(HomeDetailActivity)
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //初始化加載頁面 mLoadingPage = new LoadingPage(UIUtils.getContext()) { @Override public View onCreateSuccessView() { return HomeDetailActivity.this.onCreateSuccessView(); } @Override public ResultState onLoad() { return HomeDetailActivity.this.onLoad(); } }; setContentView(mLoadingPage); mPackageName = getIntent().getStringExtra("package"); //開始加載數據 mLoadingPage.loadData(); } /** * 加載網絡數據 * @return */ public ResultState onLoad() { HomeDetailProtocol protocol = new HomeDetailProtocol(mPackageName); mData = protocol.getData(0); if (mData != null) { return ResultState.STATE_SUCCESS; } else { return ResultState.STATE_ERROR; } }
2.應用信息封裝(AppInfo)
AppInfo新增字段
public class AppInfo { public String des; public String downloadUrl; public String iconUrl; public String id; public String name; public String packageName; public long size; public double stars; // 以下字段共應用詳情頁使用 public String author; public String date; public String downloadNum; public String version; public ArrayList<SafeInfo> safe; public ArrayList<String> screen; public static class SafeInfo { public String safeDes; public int safeDesColor; public String safeDesUrl; public String safeUrl; } }
3.詳情頁布局開發
思路: 用ScrollView包裹,保證可以上下滑動.每個模塊使用FrameLayout作為容器,動態添加相關模塊布局.
layout_home_detail.xml <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="3dp" > <FrameLayout android:id="@+id/fl_detail_appinfo" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/list_item_bg_selector" > </FrameLayout> <FrameLayout android:id="@+id/fl_detail_safeinfo" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/list_item_bg_selector" > </FrameLayout> <HorizontalScrollView android:id="@+id/hsv_detail_pics" android:layout_width="match_parent" android:layout_height="wrap_content" > </HorizontalScrollView> <FrameLayout android:id="@+id/fl_detail_des" android:layout_width="match_parent" android:layout_height="wrap_content" > </FrameLayout> </LinearLayout> </ScrollView>
4.展開收起動畫效果
/** * 展開或者收起安全描述信息 */ protected void toggle() { // 需要引入nineoldandroids.jar,可以兼容api11以下的版本 ValueAnimator animator; if (isExpanded) { // 收起描述信息 isExpanded = false; // 初始化按指定值變化的動畫器, 布局高度從mDesRootHeight變化到0,此方法調用,並開啟動畫之後, // 會將最新的高度值不斷回調在onAnimationUpdate方法中,在onAnimationUpdate中更新布局高度 animator = ValueAnimator.ofInt(mDesRootHeight, 0); } else { // 展開描述信息 isExpanded = true; // 初始化按指定值變化的動畫器, 布局高度從0變化到mDesRootHeight animator = ValueAnimator.ofInt(0, mDesRootHeight); } // 設置動畫更新的監聽 animator.addUpdateListener(new AnimatorUpdateListener() { // 在動畫開始以後,每次動畫有了最新的狀態都會回調此方法 @Override public void onAnimationUpdate(ValueAnimator valueAnimator) { // 獲取當前最新的高度信息 Integer height = (Integer) valueAnimator.getAnimatedValue(); mParams.height = height; // 更新安全描述的高度 llDesRoot.setLayoutParams(mParams); } }); // 設置動畫監聽 animator.addListener(new AnimatorListener() { @Override public void onAnimationStart(Animator arg0) { // 動畫開始 } @Override public void onAnimationRepeat(Animator arg0) { // 動畫重復 } @Override public void onAnimationEnd(Animator arg0) { // 動畫結束 // 更新安全標識小箭頭方向 if (isExpanded) { ivArrow.setImageResource(R.drawable.arrow_up); } else { ivArrow.setImageResource(R.drawable.arrow_down); } } @Override public void onAnimationCancel(Animator arg0) { // 動畫取消 } }); // 設置動畫時間 animator.setDuration(200); // 開啟動畫 animator.start(); }
設計模式——適配器模式,設計模式適配器 適配器模式的定義:將一個類的接口,轉換成客戶期望的另一個接口。適配器讓原本接口不兼容的類可以合作無間。 適配器模式其實也可以
Android面試准備 第一天 第2-4例 2、如果有個100M大的文件,需要上傳至服務器中,而服務器form表單最大只能上傳2M,可以用什麼方法。 個人理解:所謂表單最
閱讀《Android 從入門到精通》(17)——進度條 進度條(ProgressBar) java.lang.Object; android.view.View; and
Android Studio中的EditText控件使用詳解 一:新建HelloEditText工程 創建設置如下: Project name:HelloEditTe