Merge branch 'develop' into js_mac

This commit is contained in:
Ricardo Quesada 2013-06-27 10:48:58 -07:00
commit 5bb256e837
57 changed files with 1949 additions and 160 deletions

View File

@ -486,6 +486,12 @@ Developers:
musikov
Fixing a bug that missing precision when getting strokeColor and fontFillColor
hawkwood (Justin Hawkwood)
Fixing a bug that EditBox doesn't show any text if it's initialized with text.
wtyqm (zhang peng)
Fixing a bug that ccbRootPath wasn't passed to sub ccb nodes.
Retired Core Developers:
WenSheng Yang
Author of windows port, CCTextField,

View File

@ -491,6 +491,40 @@ void Scheduler::scheduleUpdateForTarget(Object *pTarget, int nPriority, bool bPa
}
}
bool Scheduler::isScheduledForTarget(SEL_SCHEDULE pfnSelector, Object *pTarget)
{
CCAssert(pfnSelector, "Argument selector must be non-NULL");
CCAssert(pTarget, "Argument target must be non-NULL");
tHashTimerEntry *pElement = NULL;
HASH_FIND_INT(_hashForTimers, &pTarget, pElement);
if (!pElement)
{
return false;
}
if (pElement->timers == NULL)
{
return false;
}else
{
for (unsigned int i = 0; i < pElement->timers->num; ++i)
{
Timer *timer = (Timer*)pElement->timers->arr[i];
if (pfnSelector == timer->getSelector())
{
return true;
}
}
return false;
}
return false; // should never get here
}
void Scheduler::removeUpdateFromHash(struct _listEntry *entry)
{
tHashUpdateEntry *element = NULL;

View File

@ -160,6 +160,11 @@ public:
*/
void scheduleUpdateForTarget(Object *pTarget, int nPriority, bool bPaused);
/** Checks whether a selector for a given taget is scheduled.
@since v3.0.0
*/
bool isScheduledForTarget(SEL_SCHEDULE pfnSelector, Object *pTarget);
/** Unschedule a selector for a given target.
If you want to unschedule the "update", use unscheudleUpdateForTarget.
@since v0.99.3

View File

@ -1039,6 +1039,11 @@ Scheduler* Node::getScheduler()
return _scheduler;
}
bool Node::isScheduled(SEL_SCHEDULE selector)
{
return _scheduler->isScheduledForTarget(selector, this);
}
void Node::scheduleUpdate()
{
scheduleUpdateWithPriority(0);

View File

@ -45,6 +45,8 @@ NS_CC_BEGIN
class CC_DLL Image : public Object
{
public:
friend class TextureCache;
Image();
~Image();
@ -79,15 +81,6 @@ public:
*/
bool initWithImageFile(const char * strPath, EImageFormat imageType = kFmtPng);
/*
@brief The same result as with initWithImageFile, but thread safe. It is caused by
loadImage() in TextureCache.cpp.
@param fullpath full path of the file.
@param imageType the type of image, currently only supporting two types.
@return true if loaded correctly.
*/
bool initWithImageFileThreadSafe(const char *fullpath, EImageFormat imageType = kFmtPng);
/**
@brief Load image from stream buffer.
@ -189,6 +182,15 @@ private:
// noncopyable
Image(const Image& rImg);
Image & operator=(const Image&);
/*
@brief The same result as with initWithImageFile, but thread safe. It is caused by
loadImage() in TextureCache.cpp.
@param fullpath full path of the file.
@param imageType the type of image, currently only supporting two types.
@return true if loaded correctly.
*/
bool initWithImageFileThreadSafe(const char *fullpath, EImageFormat imageType = kFmtPng);
};
// end of platform group

View File

@ -92,13 +92,8 @@ bool FileUtilsAndroid::isFileExist(const std::string& strFilePath)
{
const char* s = strFilePath.c_str();
if (strFilePath.find(_defaultResRootPath) != 0)
{
// Didn't find "assets/" at the beginning of the path
} else {
// Found "assets/" at the beginning of the path and we don't want it
s += strlen("assets/");
}
// Found "assets/" at the beginning of the path and we don't want it
if (strFilePath.find(_defaultResRootPath) == 0) s += strlen("assets/");
if (s_assetmanager) {
AAsset* aa = AAssetManager_open(s_assetmanager, s, AASSET_MODE_UNKNOWN);
@ -160,12 +155,13 @@ unsigned char* FileUtilsAndroid::doGetFileData(const char* pszFileName, const ch
if (fullPath[0] != '/')
{
if (forAsync)
{
// Nothing to do when using the Android assetmanager APIs???
}
string fullPath = fullPathForFilename(pszFileName);
string fullPath(pszFileName);
// fullPathForFilename is not thread safe.
if (! forAsync)
{
fullPath = fullPathForFilename(pszFileName);
}
const char* relativepath = fullPath.c_str();

View File

@ -428,7 +428,7 @@ bool Image::initWithImageFile(const char * strPath, EImageFormat eImgFmt/* = eFm
bool Image::initWithImageFileThreadSafe(const char *fullpath, EImageFormat imageType)
{
/*
* FileUtils::fullPathFromRelativePath() is not thread-safe, it use autorelease().
* FileUtils::fullPathFromRelativePath() is not thread-safe.
*/
bool bRet = false;
unsigned long nSize = 0;

View File

@ -37,7 +37,6 @@
<listOptionValue builtIn="false" value="../../../cocos2dx/kazmath/include"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libfreetype2"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libpng"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libxml2"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libjpeg"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libtiff/include"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libwebp"/>
@ -60,7 +59,6 @@
<listOptionValue builtIn="false" value="../../../cocos2dx/kazmath/include"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libfreetype2"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libpng"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libxml2"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libjpeg"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libtiff/include"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libwebp"/>
@ -87,7 +85,6 @@
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libraries/libfreetype.a"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libraries/libcurl.a"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libraries/libtiff.a"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libraries/libxml2.a"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libraries/libpng.a"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libraries/libjpeg.a"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libraries/libwebp.a"/>
@ -170,7 +167,6 @@
<listOptionValue builtIn="false" value="../../../cocos2dx/kazmath/include"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libfreetype2"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libpng"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libxml2"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libjpeg"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libtiff/include"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libwebp"/>
@ -192,7 +188,6 @@
<listOptionValue builtIn="false" value="../../../cocos2dx/kazmath/include"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libfreetype2"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libpng"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libxml2"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libjpeg"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libtiff/include"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libwebp"/>
@ -218,7 +213,6 @@
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libraries/libfreetype.a"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libraries/libcurl.a"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libraries/libtiff.a"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libraries/libxml2.a"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libraries/libpng.a"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libraries/libjpeg.a"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libraries/libwebp.a"/>
@ -302,7 +296,6 @@
<listOptionValue builtIn="false" value="../../../cocos2dx/kazmath/include"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libfreetype2"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libpng"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libxml2"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libjpeg"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libtiff/include"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libwebp"/>
@ -325,7 +318,6 @@
<listOptionValue builtIn="false" value="../../../cocos2dx/kazmath/include"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libfreetype2"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libpng"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libxml2"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libjpeg"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libtiff/include"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libwebp"/>
@ -352,7 +344,6 @@
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libraries/lib64/libfreetype.a"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libraries/lib64/libcurl.a"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libraries/lib64/libtiff.a"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libraries/lib64/libxml2.a"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libraries/lib64/libpng.a"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libraries/lib64/libjpeg.a"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libraries/lib64/libwebp.a"/>
@ -435,7 +426,6 @@
<listOptionValue builtIn="false" value="../../../cocos2dx/kazmath/include"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libfreetype2"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libpng"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libxml2"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libjpeg"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libtiff/include"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libwebp"/>
@ -458,7 +448,6 @@
<listOptionValue builtIn="false" value="../../../cocos2dx/kazmath/include"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libfreetype2"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libpng"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libxml2"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libjpeg"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libtiff/include"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libwebp"/>
@ -485,7 +474,6 @@
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libraries/lib64/libfreetype.a"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libraries/lib64/libcurl.a"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libraries/lib64/libtiff.a"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libraries/lib64/libxml2.a"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libraries/lib64/libpng.a"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libraries/lib64/libjpeg.a"/>
<listOptionValue builtIn="false" value="../../../cocos2dx/platform/third_party/linux/libraries/lib64/libwebp.a"/>

View File

@ -456,14 +456,9 @@ public:
ZipFile::ZipFile(const std::string &zipFile, const std::string &filter)
: _data(new ZipFilePrivate)
, _dataThread(new ZipFilePrivate)
{
_data->zipFile = unzOpen(zipFile.c_str());
_dataThread->zipFile = unzOpen(zipFile.c_str());
if (_data->zipFile && _dataThread->zipFile)
{
setFilter(filter);
}
setFilter(filter);
}
ZipFile::~ZipFile()
@ -472,36 +467,32 @@ ZipFile::~ZipFile()
{
unzClose(_data->zipFile);
}
if (_dataThread && _dataThread->zipFile)
{
unzClose(_dataThread->zipFile);
}
CC_SAFE_DELETE(_data);
CC_SAFE_DELETE(_dataThread);
}
bool ZipFile::setFilter(const std::string &filter, ZipFilePrivate *data)
bool ZipFile::setFilter(const std::string &filter)
{
bool ret = false;
do
{
CC_BREAK_IF(!data);
CC_BREAK_IF(!data->zipFile);
CC_BREAK_IF(!_data);
CC_BREAK_IF(!_data->zipFile);
// clear existing file list
data->fileList.clear();
_data->fileList.clear();
// UNZ_MAXFILENAMEINZIP + 1 - it is done so in unzLocateFile
char szCurrentFileName[UNZ_MAXFILENAMEINZIP + 1];
unz_file_info64 fileInfo;
// go through all files and store position information about the required files
int err = unzGoToFirstFile64(data->zipFile, &fileInfo,
int err = unzGoToFirstFile64(_data->zipFile, &fileInfo,
szCurrentFileName, sizeof(szCurrentFileName) - 1);
while (err == UNZ_OK)
{
unz_file_pos posInfo;
int posErr = unzGetFilePos(data->zipFile, &posInfo);
int posErr = unzGetFilePos(_data->zipFile, &posInfo);
if (posErr == UNZ_OK)
{
std::string currentFileName = szCurrentFileName;
@ -512,11 +503,11 @@ bool ZipFile::setFilter(const std::string &filter, ZipFilePrivate *data)
ZipEntryInfo entry;
entry.pos = posInfo;
entry.uncompressed_size = (uLong)fileInfo.uncompressed_size;
data->fileList[currentFileName] = entry;
_data->fileList[currentFileName] = entry;
}
}
// next file - also get the information about it
err = unzGoToNextFile64(data->zipFile, &fileInfo,
err = unzGoToNextFile64(_data->zipFile, &fileInfo,
szCurrentFileName, sizeof(szCurrentFileName) - 1);
}
ret = true;
@ -526,11 +517,6 @@ bool ZipFile::setFilter(const std::string &filter, ZipFilePrivate *data)
return ret;
}
bool ZipFile::setFilter(const std::string &filter)
{
return (setFilter(filter, _data) && setFilter(filter, _dataThread));
}
bool ZipFile::fileExists(const std::string &fileName) const
{
bool ret = false;
@ -545,11 +531,6 @@ bool ZipFile::fileExists(const std::string &fileName) const
}
unsigned char *ZipFile::getFileData(const std::string &fileName, unsigned long *pSize)
{
return getFileData(fileName, pSize, _data);
}
unsigned char *ZipFile::getFileData(const std::string &fileName, unsigned long *pSize, ZipFilePrivate *data)
{
unsigned char * pBuffer = NULL;
if (pSize)
@ -559,29 +540,29 @@ unsigned char *ZipFile::getFileData(const std::string &fileName, unsigned long *
do
{
CC_BREAK_IF(!data->zipFile);
CC_BREAK_IF(!_data->zipFile);
CC_BREAK_IF(fileName.empty());
ZipFilePrivate::FileListContainer::const_iterator it = data->fileList.find(fileName);
CC_BREAK_IF(it == data->fileList.end());
ZipFilePrivate::FileListContainer::const_iterator it = _data->fileList.find(fileName);
CC_BREAK_IF(it == _data->fileList.end());
ZipEntryInfo fileInfo = it->second;
int nRet = unzGoToFilePos(data->zipFile, &fileInfo.pos);
int nRet = unzGoToFilePos(_data->zipFile, &fileInfo.pos);
CC_BREAK_IF(UNZ_OK != nRet);
nRet = unzOpenCurrentFile(data->zipFile);
nRet = unzOpenCurrentFile(_data->zipFile);
CC_BREAK_IF(UNZ_OK != nRet);
pBuffer = new unsigned char[fileInfo.uncompressed_size];
int CC_UNUSED nSize = unzReadCurrentFile(data->zipFile, pBuffer, fileInfo.uncompressed_size);
int CC_UNUSED nSize = unzReadCurrentFile(_data->zipFile, pBuffer, fileInfo.uncompressed_size);
CCAssert(nSize == 0 || nSize == (int)fileInfo.uncompressed_size, "the file size is wrong");
if (pSize)
{
*pSize = fileInfo.uncompressed_size;
}
unzCloseCurrentFile(data->zipFile);
unzCloseCurrentFile(_data->zipFile);
} while (0);
return pBuffer;

View File

@ -171,10 +171,6 @@ namespace cocos2d
class ZipFile
{
public:
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
friend class FileUtilsAndroid;
#endif
/**
* Constructor, open zip file and store file list.
*
@ -220,13 +216,8 @@ namespace cocos2d
unsigned char *getFileData(const std::string &fileName, unsigned long *pSize);
private:
bool setFilter(const std::string &filer, ZipFilePrivate *data);
unsigned char *getFileData(const std::string &fileName, unsigned long *pSize, ZipFilePrivate *data);
/** Internal data like zip file pointer / file list array and so on */
ZipFilePrivate *_data;
/** Another data used not in main thread */
ZipFilePrivate *_dataThread;
};
} // end of namespace cocos2d
#endif // __SUPPORT_ZIPUTILS_H__

View File

@ -108,6 +108,9 @@ CCBReader::CCBReader(CCBReader * pCCBReader)
this->mOwnerOutletNames = pCCBReader->mOwnerOutletNames;
this->mOwnerOutletNodes = pCCBReader->mOwnerOutletNodes;
this->mOwnerOutletNodes->retain();
this->mCCBRootPath = pCCBReader->getCCBRootPath();
init();
}

View File

@ -77,7 +77,8 @@ static const int CC_EDIT_BOX_PADDING = 5;
textField_.backgroundColor = [UIColor clearColor];
textField_.borderStyle = UITextBorderStyleNone;
textField_.delegate = self;
textField_.returnKeyType = UIReturnKeyDefault;
textField_.hidden = true;
textField_.returnKeyType = UIReturnKeyDefault;
[textField_ addTarget:self action:@selector(textChanged) forControlEvents:UIControlEventEditingChanged];
self.editBox = editBox;

View File

@ -4,16 +4,16 @@
android:versionName="3.2.0"
android:installLocation="preferExternal">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"></uses-permission>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
@ -22,22 +22,22 @@
<activity android:name="com.nd.commplatform.activity.SNSControlCenterActivity"
android:configChanges="orientation|keyboardHidden|navigation"
android:configChanges="orientation|keyboardHidden|navigation|screenSize"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:windowSoftInputMode="adjustPan" android:windowBackground="@null"
android:launchMode="singleTask"/>
<activity android:name="com.nd.commplatform.activity.SNSLoginActivity"
android:configChanges="orientation|keyboardHidden|navigation"
android:configChanges="orientation|keyboardHidden|navigation|screenSize"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:windowSoftInputMode="adjustPan" android:screenOrientation="landscape"
android:windowBackground="@null"
android:launchMode="singleTask"/>
<activity android:name="com.nd.commplatform.activity.SNSAppPromotionActivity"
android:configChanges="orientation|keyboardHidden|navigation"
<activity android:name=".SNSAppPromotionActivity"
android:configChanges="orientation|keyboardHidden|navigation|screenSize"
android:windowSoftInputMode="adjustPan"
android:theme="@android:style/Theme.NoTitleBar"
android:theme="@android:style/Theme.NoTitleBar"
android:windowBackground="@null"/>

View File

@ -0,0 +1 @@
a19769aee91a80e7148db4238e0cb6df4cc5a250

View File

@ -0,0 +1 @@
dad94a0903f7d1b167e72bc36e0b9134d49e7b69

View File

@ -115,7 +115,9 @@
android:layout_weight="1"
android:hint="@string/nd3_account_login_hint_account"
android:singleLine="true"
android:inputType="textEmailAddress">
android:nextFocusDown="@+id/nd3_account_login_password"
android:inputType="textEmailAddress"
android:imeOptions="actionNext">
</AutoCompleteTextView>
<ImageView
@ -160,7 +162,8 @@
android:layout_weight="1"
android:hint="@string/nd3_account_login_hint_password"
android:inputType="textPassword"
android:singleLine="true" >
android:singleLine="true"
android:imeOptions="actionDone" >
</EditText>
</LinearLayout>
</LinearLayout>

View File

@ -119,7 +119,9 @@
android:layout_weight="1"
android:hint="@string/nd3_account_login_hint_account"
android:singleLine="true"
android:inputType="textEmailAddress">
android:nextFocusDown="@+id/nd3_account_login_password"
android:inputType="textEmailAddress"
android:imeOptions="actionNext">
</AutoCompleteTextView>
<ImageView
@ -164,7 +166,8 @@
android:layout_weight="1"
android:hint="@string/nd3_account_login_hint_password"
android:inputType="textPassword"
android:singleLine="true" >
android:singleLine="true"
android:imeOptions="actionDone">
</EditText>
</LinearLayout>
</LinearLayout>

View File

@ -113,6 +113,7 @@
android:maxLength="70"
android:hint="@string/nd3_account_register_hint_account"
style="@style/nd3_option_edittext_style"
android:imeOptions="actionNext"
>
</AutoCompleteTextView>
@ -152,6 +153,7 @@
android:maxLength="12"
android:hint="@string/nd3_account_register_hint_password"
style="@style/nd3_option_edittext_style"
android:imeOptions="actionDone"
>
</EditText>

View File

@ -109,6 +109,7 @@
android:maxLength="70"
android:hint="@string/nd3_account_register_hint_account"
style="@style/nd3_option_edittext_style"
android:imeOptions="actionNext"
>
</AutoCompleteTextView>
@ -188,6 +189,7 @@
android:maxLength="12"
android:hint="@string/nd3_account_register_hint_password"
style="@style/nd3_option_edittext_style"
android:imeOptions="actionDone"
>
</EditText>

View File

@ -4,16 +4,16 @@
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/nd3_empty_listview_txt"
android:text="@string/nd3_list_item_loading"
android:textColor="@color/nd3_black"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/nd3_margin_size"/>
android:id="@+id/nd3_empty_listview_txt"
android:text="@string/nd3_list_item_loading"
android:textColor="@color/nd3_black"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/nd3_margin_size"/>
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/nd3_horizontal_line"
android:layout_below="@id/nd3_empty_listview_txt"/>
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/nd3_horizontal_line"
android:layout_below="@id/nd3_empty_listview_txt"/>
</RelativeLayout>

View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/nd3_bk1"
android:orientation="vertical"
android:layout_margin="5dip" >
<TextView
android:id="@+id/nd_title"
android:layout_width="fill_parent"
android:layout_height="50dip"
android:text="@string/nd_feedback_choose_problem_type"
android:textSize="16dip"
android:textColor="@color/nd3_black"
android:padding="5dip"
android:gravity="center_vertical"/>
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/nd3_horizontal_line" />
<TextView
android:id="@+id/nd_problem"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textSize="14dip"
android:textColor="@color/nd_font_color"/>
</LinearLayout>
</LinearLayout>

View File

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ListView
android:id="@+id/nd_feedback_faq_list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:headerDividersEnabled="false"
android:footerDividersEnabled="false"
android:divider="@drawable/nd3_horizontal_line"
android:fastScrollEnabled="true"
android:cacheColorHint="#00000000"
android:fadingEdge="none"
android:background="@drawable/nd3_bk1"
android:layout_margin="5dip"
android:layout_alignParentTop="true"
android:focusable="false"
android:focusableInTouchMode="false"
/>
<TextView
android:id="@+id/nd_tips"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/nd_feedback_tips4"
android:background="@drawable/nd3_bk1"
android:gravity="center"
android:visibility="gone"
android:layout_margin="10dip"
/>
</RelativeLayout>

View File

@ -0,0 +1,234 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/nd3_bk1"
android:orientation="vertical"
android:layout_margin="10dip" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:padding="5dip">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/nd_feedback_choose_problem_type"
android:textSize="16dip"
android:textColor="@color/nd3_black"
android:gravity="center_vertical"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/nd_star"
android:textColor="@color/nd3_red"
android:gravity="center_vertical"/>
</LinearLayout>
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/nd3_horizontal_line" />
<LinearLayout
android:id="@+id/nd_fb_problem_type_layout"
android:layout_width="fill_parent"
android:layout_height="40dip"
android:gravity="center_vertical"
android:paddingRight="5dip"
android:paddingLeft="5dip">
<TextView
android:id="@+id/nd_fb_problem_type"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:textSize="16dip"
android:textColor="@color/nd3_black"
android:gravity="center_vertical"
android:singleLine="true"
android:layout_weight="1"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:src="@drawable/nd3_switch_image"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/nd3_bk1"
android:orientation="vertical"
android:layout_marginLeft="10dip"
android:layout_marginRight="10dip" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:paddingLeft="5dip" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/nd_feedback_problem"
android:textSize="16dip"
android:textColor="@color/nd3_black"
android:gravity="center_vertical"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/nd_star"
android:textColor="@color/nd3_red"
android:gravity="center_vertical"/>
</LinearLayout>
<EditText
android:id="@+id/nd_fb_problem"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/nd_goods_count_input_bg"
android:hint="@string/nd_feedback_input_tip"
android:gravity="top"
android:minLines="3"
android:maxLength="500"
android:nextFocusDown="@+id/nd_my_phone"
android:imeOptions="actionNext"
/>
<!-- <RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingLeft="5dip" >
<EditText
android:id="@+id/nd_fb_problem"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/nd_goods_count_input_bg"
android:hint="@string/nd_feedback_input_tip"
android:gravity="top"
android:minLines="4"
android:layout_alignParentTop="true"
android:maxLength="500"/>
<TextView
android:id="@+id/nd_fb_problem_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="12dip"
android:textColor="@color/nd3_font_color"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:text="@string/nd_feedback_input_count"
android:layout_marginRight="5dip"/>
</RelativeLayout> -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:padding="5dip" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/nd_feedback_phoneno"
android:textSize="16dip"
android:textColor="@color/nd3_black"
android:gravity="center_vertical"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/nd_star"
android:textColor="@color/nd3_red"
android:gravity="center_vertical"/>
</LinearLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<EditText
android:id="@+id/nd_my_phone"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/nd_goods_count_input_bg"
android:gravity="top"
android:inputType="phone"
android:imeOptions="actionDone"/>
</RelativeLayout>
<Button
android:id="@+id/nd_feedback_submit"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/nd_blue"
android:text="@string/nd3_submit"
android:layout_gravity="center"
android:textStyle="bold"
android:textSize="@dimen/nd3_pay_tip_text_size"
android:textColor="@color/nd3_white"
android:layout_marginLeft="5dip"
android:layout_marginRight="5dip"
android:layout_marginTop="10dip"
/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/nd3_bk1"
android:layout_margin="10dip"
>
<ImageView
android:layout_width="40dip"
android:layout_height="40dip"
android:src="@drawable/nd3_icon_more01"
android:layout_gravity="center_vertical"/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
> <LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="50dip"
android:layout_marginLeft="5dip"
android:gravity="center_vertical"
android:text="@string/nd_feedback_service_phone"
android:textColor="@color/nd3_black"
android:textSize="18dip" />
<TextView
android:id="@+id/nd_fb_service_phone"
android:layout_width="wrap_content"
android:layout_height="50dip"
android:layout_marginLeft="5dip"
android:gravity="center_vertical"
android:textColor="@color/nd3_black"
android:textSize="18dip" />
</LinearLayout>
<TextView
android:id="@+id/nd_fb_service_time"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/nd_feedback_service_time"
android:textColor="@color/nd_font_color"
android:layout_marginLeft="5dip"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>

View File

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:layout_margin="5dip" >
<ListView
android:id="@+id/nd_feedback_menu_list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:headerDividersEnabled="false"
android:footerDividersEnabled="false"
android:divider="@drawable/nd3_horizontal_line"
android:fastScrollEnabled="true"
android:cacheColorHint="#00000000"
android:fadingEdge="none"
android:scrollbarStyle="outsideOverlay"
android:background="@drawable/nd3_bk1"
/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_margin="5dip" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/nd_feedback_reply8"
android:textColor="@color/nd_orange_light"
android:textSize="16dip"/>
<Button
android:id="@+id/nd_feedback"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/nd_blue"
android:text="@string/nd_feedback_i_fb"
android:layout_gravity="center"
android:textStyle="bold"
android:textSize="@dimen/nd3_pay_tip_text_size"
android:textColor="@color/nd3_white"
/>
</LinearLayout>
</LinearLayout>

View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="40dip"
>
<TextView
android:id="@+id/nd_menu_content"
android:layout_width="fill_parent"
android:layout_height="40dip"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:ellipsize="end"
android:singleLine="true"
android:textSize="18dip"
android:textStyle="bold"
android:textColor="@color/nd3_black"
android:gravity="center_vertical"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:src="@drawable/nd3_switch_image"/>
</RelativeLayout>

View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="60dip"
android:layout_margin="@dimen/nd3_margin_size"
>
<LinearLayout
android:layout_width="0dip"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="1"
android:layout_margin="5dip">
<TextView
android:id="@+id/nd_title"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:textColor="@color/nd3_black"
android:textSize="16dip"
android:textStyle="bold"
android:singleLine="true"
android:layout_weight="1" />
<TextView
android:id="@+id/nd_time"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@color/nd_font_color"
android:textSize="12dip"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:layout_margin="5dip">
<TextView
android:id="@+id/nd_pj"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/nd_font_color"
android:textSize="16dip"
android:layout_gravity="center"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="fitCenter"
android:src="@drawable/nd3_switch_image"
android:layout_gravity="center"/>
</LinearLayout>
</LinearLayout>

View File

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<LinearLayout
android:layout_margin="@dimen/nd3_margin_size"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1" >
<ListView
android:id="@+id/nd_feedback_list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:headerDividersEnabled="false"
android:footerDividersEnabled="false"
android:divider="@drawable/nd3_horizontal_line"
android:fastScrollEnabled="true"
android:cacheColorHint="#00000000"
android:fadingEdge="none"
android:background="@drawable/nd3_bk1"
android:visibility="gone"
/>
<TextView
android:id="@+id/nd_tips"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/nd_feedback_tips4"
android:background="@drawable/nd3_bk1"
android:gravity="center"
android:visibility="gone"
/>
</LinearLayout>
<Button
android:layout_margin="@dimen/nd3_margin_size"
android:id="@+id/nd_feedback"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/nd_blue"
android:text="@string/nd_feedback_i_fb"
android:layout_gravity="center"
android:textStyle="bold"
android:textSize="@dimen/nd3_pay_tip_text_size"
android:textColor="@color/nd3_white"
/>
</LinearLayout>

View File

@ -0,0 +1,169 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
><!-- android:visibility="gone" -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/nd_feedback_reply1"
android:textSize="14dip"
android:textColor="@color/nd3_black"
android:gravity="center"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/nd_feedback_reply2"
android:textSize="14dip"
android:textColor="@color/nd3_black"
android:gravity="center"/>
</LinearLayout>
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/nd3_horizontal_line" />
<!-- <LinearLayout
android:id="@+id/nd_fb_problem_type_layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:weightSum="3">
<ImageView
android:id="@+id/nd_image1"
android:layout_width="48dip"
android:layout_height="48dip"
android:src="@drawable/nd_satisfied"
android:layout_weight="1"/>
<ImageView
android:id="@+id/nd_image2"
android:layout_width="48dip"
android:layout_height="48dip"
android:src="@drawable/nd_ordinary"
android:layout_weight="1"/>
<ImageView
android:id="@+id/nd_image3"
android:layout_width="48dip"
android:layout_height="48dip"
android:src="@drawable/nd_unsatisfied"
android:layout_weight="1"/>
</LinearLayout> -->
<RadioGroup
android:id="@+id/nd_radiogroup"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_gravity="center"
android:orientation="horizontal"
android:weightSum="3"
android:checkedButton="@+id/nd_radio_2">
<LinearLayout
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center">
<ImageView
android:id="@+id/nd_image1"
android:layout_width="48dip"
android:layout_height="48dip"
android:src="@drawable/nd_satisfied"/>
<RadioButton
android:id="@+id/nd_radio_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@null"
android:background="@null"
android:gravity="top|center_horizontal"
android:textSize="14dip"
android:text="@string/nd_feedback_reply3"
android:textColor="@color/nd3_black"/>
<!-- android:drawableLeft="@drawable/nd3_regist_checked" -->
<!-- <TextView
android:id="@+id/nd_text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="5dip"
android:textColor="@color/nd3_black"
android:text="@string/nd_feedback_reply3"/> -->
</LinearLayout>
<LinearLayout
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center">
<ImageView
android:id="@+id/nd_image2"
android:layout_width="48dip"
android:layout_height="48dip"
android:src="@drawable/nd_ordinary"/>
<RadioButton
android:id="@+id/nd_radio_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@null"
android:background="@null"
android:gravity="top|center_horizontal"
android:textSize="14dip"
android:text="@string/nd_feedback_reply4"
android:textColor="@color/nd3_black"/>
<!-- android:drawableLeft="@drawable/nd3_regist_checked" -->
<!-- <TextView
android:id="@+id/nd_text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="5dip"
android:textColor="@color/nd3_black"
android:text="@string/nd_feedback_reply4"/> -->
</LinearLayout>
<LinearLayout
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center">
<ImageView
android:id="@+id/nd_image3"
android:layout_width="48dip"
android:layout_height="48dip"
android:src="@drawable/nd_unsatisfied"/>
<RadioButton
android:id="@+id/nd_radio_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@null"
android:background="@null"
android:gravity="top|center_horizontal"
android:textSize="14dip"
android:text="@string/nd_feedback_reply5"
android:textColor="@color/nd3_black"/>
<!-- android:drawableLeft="@drawable/nd3_regist_checked" -->
<!-- <TextView
android:id="@+id/nd_text3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="5dip"
android:textColor="@color/nd3_black"
android:text="@string/nd_feedback_reply5"/> -->
</LinearLayout>
</RadioGroup>
</LinearLayout>

View File

@ -0,0 +1,152 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
><!-- android:visibility="gone" -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="5dip"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/nd_feedback_reply1"
android:textSize="14dip"
android:textColor="@color/nd3_black"
android:gravity="center"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/nd_feedback_reply2"
android:textSize="14dip"
android:textColor="@color/nd3_black"
android:gravity="center"/>
</LinearLayout>
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/nd3_horizontal_line" />
<LinearLayout
android:id="@+id/nd_fb_problem_type_layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:weightSum="3">
<ImageView
android:id="@+id/nd_image1"
android:layout_width="48dip"
android:layout_height="48dip"
android:src="@drawable/nd_satisfied"
android:layout_weight="1"/>
<ImageView
android:id="@+id/nd_image2"
android:layout_width="48dip"
android:layout_height="48dip"
android:src="@drawable/nd_ordinary"
android:layout_weight="1"/>
<ImageView
android:id="@+id/nd_image3"
android:layout_width="48dip"
android:layout_height="48dip"
android:src="@drawable/nd_unsatisfied"
android:layout_weight="1"/>
</LinearLayout>
<RadioGroup
android:id="@+id/nd_radiogroup"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_gravity="center"
android:orientation="horizontal"
android:weightSum="3"
android:checkedButton="@+id/nd_radio_2"
android:layout_marginBottom="5dip">
<LinearLayout
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center">
<RadioButton
android:id="@+id/nd_radio_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@null"
android:background="@null"
android:gravity="top|center_horizontal"
android:textSize="14dip"
android:text="@string/nd_feedback_reply3"
android:textColor="@color/nd3_black"/>
<!-- android:drawableLeft="@drawable/nd3_regist_checked" -->
<!-- <TextView
android:id="@+id/nd_text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="5dip"
android:textColor="@color/nd3_black"
android:text="@string/nd_feedback_reply3"/> -->
</LinearLayout>
<LinearLayout
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center">
<RadioButton
android:id="@+id/nd_radio_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@null"
android:background="@null"
android:gravity="top|center_horizontal"
android:textSize="14dip"
android:text="@string/nd_feedback_reply4"
android:checked="true"
android:textColor="@color/nd3_black"/>
<!-- android:drawableLeft="@drawable/nd3_regist_checked" -->
<!-- <TextView
android:id="@+id/nd_text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="5dip"
android:textColor="@color/nd3_black"
android:text="@string/nd_feedback_reply4"/> -->
</LinearLayout>
<LinearLayout
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center">
<RadioButton
android:id="@+id/nd_radio_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@null"
android:background="@null"
android:gravity="top|center_horizontal"
android:text="@string/nd_feedback_reply5"
android:textSize="14dip"
android:textColor="@color/nd3_black"/>
<!-- android:drawableLeft="@drawable/nd3_regist_checked" -->
<!-- <TextView
android:id="@+id/nd_text3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="5dip"
android:textColor="@color/nd3_black"
android:text="@string/nd_feedback_reply5"/> -->
</LinearLayout>
</RadioGroup>
</LinearLayout>

View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/nd_pjlayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/nd3_bk1"
android:orientation="vertical"
android:layout_marginTop="5dip"
android:layout_marginLeft="5dip"
android:layout_marginRight="5dip"
android:visibility="gone"
android:clickable="false"
><!-- android:visibility="gone" -->
<!-- <include layout="@layout/nd_feedback_pj_landscape"/> -->
</LinearLayout>
<LinearLayout
android:id="@+id/nd_reply_layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/nd3_bk1"
android:layout_margin="5dip"
android:orientation="vertical"
><!-- android:visibility="gone" -->>
<ListView
android:id="@+id/nd_feedback_reply_list"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:headerDividersEnabled="false"
android:footerDividersEnabled="false"
android:fastScrollEnabled="true"
android:cacheColorHint="#00000000"
android:fadingEdge="none"
android:layout_weight="1"
android:stackFromBottom="true"
android:transcriptMode="alwaysScroll"
android:divider="@null"
/>
</LinearLayout>
</LinearLayout>

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/nd_feedback"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dip"
android:layout_marginTop="10dip"
>
<EditText
android:id="@+id/nd_input"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:background="@drawable/nd_goods_count_input_bg"
android:gravity="top"
android:layout_weight="1"
android:layout_marginRight="20dip"
android:layout_marginTop="3dip"/>
<Button
android:id="@+id/nd_submit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/nd3_title_bar_action_btn_xml"
android:paddingLeft="10dip"
android:paddingRight="10dip"
android:layout_marginRight="5dip"
android:text="@string/nd3_submit"
android:textColor="@color/nd3_white"
android:textSize="18dip"
android:textStyle="bold"/>
</LinearLayout>
</LinearLayout>

View File

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center">
<ImageView
android:layout_width="60dip"
android:layout_height="wrap_content"
android:layout_marginRight="10dip"
android:background="@drawable/nd3_horizontal_line" />
<TextView
android:id="@+id/nd_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/nd3_black"
android:gravity="center"/>
<ImageView
android:layout_width="60dip"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:background="@drawable/nd3_horizontal_line" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="bottom">
<ImageView
android:id="@+id/nd_head"
android:layout_width="48dip"
android:layout_height="48dip"
android:src="@drawable/nd3_default_portrait_big"
android:layout_marginLeft="5dip"/>
<TextView
android:id="@+id/nd_msge"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/nd3_msge_owen"
android:textColor="@color/nd3_black"
android:layout_marginRight="20dip"
/>
</LinearLayout>
</LinearLayout>

View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center">
<ImageView
android:layout_width="60dip"
android:layout_height="wrap_content"
android:layout_marginRight="10dip"
android:background="@drawable/nd3_horizontal_line" />
<TextView
android:id="@+id/nd_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/nd3_black"
android:gravity="center"/>
<ImageView
android:layout_width="60dip"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:background="@drawable/nd3_horizontal_line" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="bottom">
<TextView
android:id="@+id/nd_msge"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:background="@drawable/nd3_msge_friend"
android:textColor="@color/nd3_black"
android:layout_marginLeft="20dip"
android:layout_weight="1"
/>
<ImageView
android:id="@+id/nd_head"
android:layout_width="48dip"
android:layout_height="48dip"
android:src="@drawable/nd_service"
android:layout_marginRight="5dip"/>
</LinearLayout>
</LinearLayout>

View File

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/llToast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#ffffffff"
android:orientation="vertical" >
<TextView
android:id="@+id/tvTitleToast"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="1dip"
android:background="#bb000000"
android:gravity="center"
android:textColor="#ffffffff" />
<LinearLayout
android:id="@+id/llToastContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="1dip"
android:layout_marginLeft="1dip"
android:layout_marginRight="1dip"
android:background="#44000000"
android:orientation="vertical"
android:padding="15dip" >
<ImageView
android:id="@+id/tvImageToast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
<TextView
android:id="@+id/tvTextToast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:paddingLeft="10dip"
android:paddingRight="10dip"
android:textColor="#ff000000" />
</LinearLayout>
</LinearLayout>

View File

@ -0,0 +1,161 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:gravity="center"
android:background="@color/nd_gcsdk_translucent"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<!-- 头部 -->
<LinearLayout
android:layout_width="310dip"
android:layout_height="48dip"
android:orientation="horizontal"
android:gravity="center_vertical"
android:background="@drawable/nd_gcsdk_box_tit_bg"
>
<!-- 标题 -->
<TextView
android:id="@+id/txt_title"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingLeft="14dip"
android:paddingRight="14dip"
android:singleLine="true"
android:ellipsize="end"
android:text="@string/nd_gcsdk_pausepage_title"
android:textSize="20sp"
android:textStyle="bold"
android:textColor="@color/nd_gcsdk_android_white"
android:gravity="center_vertical"
/>
<View
android:layout_width="1dip"
android:layout_height="wrap_content"
android:layout_marginTop="3dip"
android:layout_marginBottom="3dip"
android:background="@drawable/nd_gcsdk_box_title_line"
/>
<ImageButton
android:id="@+id/imgbtn_close"
android:layout_width="48dip"
android:layout_height="48dip"
android:padding="3dip"
android:src="@drawable/nd_gcsdk_box_close"
android:background="@color/nd_gcsdk_transparent"
/>
</LinearLayout>
<!-- 广告 -->
<RelativeLayout
android:id="@+id/rlt_ad"
android:layout_width="310dip"
android:layout_height="150dip"
>
<!-- 图片 -->
<ImageView
android:id="@+id/img_ad"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="fitXY"
android:padding="2dip"
android:src="@drawable/nd_gcsdk_image_default"
android:background="@color/nd_gcsdk_box_bg"
/>
<TextView
android:id="@+id/txt_summary"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:padding="3dip"
android:singleLine="true"
android:ellipsize="end"
android:textSize="15sp"
android:textStyle="bold"
android:textColor="@color/nd_gcsdk_android_white"
android:gravity="center"
android:background="@color/nd_gcsdk_translucent"
/>
</RelativeLayout>
<!-- 靓点推荐 -->
<TableLayout
android:id="@+id/table_project"
android:layout_width="310dip"
android:layout_height="150dip"
android:background="@color/nd_gcsdk_box_bg"
>
<TableRow
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
>
<!-- 1号位 -->
<com.nd.commplatform.gc.widget.NdProjectView
android:id="@+id/pv_1"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:padding="2dip"
/>
<!-- 2号位 -->
<com.nd.commplatform.gc.widget.NdProjectView
android:id="@+id/pv_2"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:padding="2dip"
/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
>
<!-- 3号位 -->
<com.nd.commplatform.gc.widget.NdProjectView
android:id="@+id/pv_3"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:padding="2dip"
/>
<!-- 4号位 -->
<com.nd.commplatform.gc.widget.NdProjectView
android:id="@+id/pv_4"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:padding="2dip"
/>
</TableRow>
</TableLayout>
<!-- 底部 -->
<LinearLayout
android:layout_width="310dip"
android:layout_height="61dip"
android:background="@drawable/nd_gcsdk_box_bg"
android:gravity="center"
>
<Button
android:id="@+id/btn_exit"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginLeft="14dip"
android:layout_marginRight="14dip"
android:layout_marginTop="12dip"
android:layout_marginBottom="12dip"
android:singleLine="true"
android:ellipsize="end"
android:textSize="22sp"
android:textColor="@color/nd_gcsdk_android_white"
android:gravity="center"
android:background="@drawable/nd_gcsdk_box_btn_bg"
/>
</LinearLayout>
</LinearLayout>
</LinearLayout>

View File

@ -0,0 +1,80 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:gravity="center"
android:background="@color/nd_gcsdk_translucent"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<!-- 头部 -->
<LinearLayout
android:layout_width="310dip"
android:layout_height="48dip"
android:orientation="horizontal"
android:gravity="center_vertical"
android:background="@drawable/nd_gcsdk_box_tit_bg"
>
<!-- 标题 -->
<TextView
android:id="@+id/txt_title"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingLeft="14dip"
android:paddingRight="14dip"
android:singleLine="true"
android:ellipsize="end"
android:text="@string/nd_gcsdk_pausepage_title"
android:textSize="20sp"
android:textStyle="bold"
android:textColor="@color/nd_gcsdk_android_white"
android:drawableLeft="@drawable/nd_gcsdk_box_logo"
android:drawablePadding="5dip"
android:gravity="center_vertical"
/>
<View
android:layout_width="1dip"
android:layout_height="wrap_content"
android:layout_marginTop="3dip"
android:layout_marginBottom="3dip"
android:background="@drawable/nd_gcsdk_box_title_line"
/>
<ImageButton
android:id="@+id/imgbtn_close"
android:layout_width="48dip"
android:layout_height="48dip"
android:padding="3dip"
android:src="@drawable/nd_gcsdk_box_close"
android:background="@color/nd_gcsdk_transparent"
/>
</LinearLayout>
<!-- 图片 -->
<ImageView
android:id="@+id/img_ad"
android:layout_width="310dip"
android:layout_height="150dip"
android:scaleType="fitXY"
android:padding="2dip"
android:background="@color/nd_gcsdk_box_bg"
/>
<!-- 底部 -->
<TextView
android:id="@+id/txt_summary"
android:layout_width="310dip"
android:layout_height="45dip"
android:paddingLeft="14sp"
android:paddingRight="14sp"
android:singleLine="true"
android:ellipsize="end"
android:textSize="15sp"
android:textColor="@color/nd_gcsdk_android_white"
android:gravity="center_vertical"
android:background="@drawable/nd_gcsdk_box_bg"
/>
</LinearLayout>
</LinearLayout>

View File

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 靓点推荐——图片类型 -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<!-- 大号图片 -->
<ImageView
android:id="@+id/img_logo"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="fitXY"
/>
<!-- 主标题 -->
<TextView
android:id="@+id/txt_main_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/img_logo"
android:padding="2dip"
android:singleLine="true"
android:ellipsize="end"
android:textSize="13sp"
android:textStyle="bold"
android:textColor="@color/nd_gcsdk_android_white"
android:gravity="center"
android:background="@color/nd_gcsdk_translucent"
/>
</RelativeLayout>

View File

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 靓点推荐——专题类型 -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="8dip"
android:orientation="vertical"
>
<!-- 主标题 -->
<TextView
android:id="@+id/txt_main_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingRight="20dip"
android:maxLines="2"
style="@style/nd_gcsdk_project_main_title"
/>
<!-- 副标题 -->
<TextView
android:id="@+id/txt_sub_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:maxLength="8"
style="@style/nd_gcsdk_project_sub_title"
/>
</LinearLayout>
<!-- 标签 -->
<TextView
android:id="@+id/txt_label"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_margin="8dip"
style="@style/nd_gcsdk_project_label"
/>
</RelativeLayout>

View File

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 靓点推荐——游戏类型 -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="8dip"
android:orientation="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
>
<!-- 游戏Logo -->
<ImageView
android:id="@+id/img_logo"
android:layout_width="35dip"
android:layout_height="35dip"
android:scaleType="fitXY"
/>
<!-- 游戏名称 -->
<TextView
android:id="@+id/txt_main_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="5dip"
android:paddingRight="8dip"
android:maxLines="2"
style="@style/nd_gcsdk_project_main_title"
/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingRight="3dip"
android:orientation="horizontal"
>
<!-- 副标题 -->
<TextView
android:id="@+id/txt_sub_title"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:singleLine="true"
android:maxLength="8"
style="@style/nd_gcsdk_project_sub_title"
/>
<!-- 标签 -->
<TextView
android:id="@+id/txt_label"
style="@style/nd_gcsdk_project_label"
/>
</LinearLayout>
</LinearLayout>

View File

@ -39,8 +39,8 @@
android:id="@+id/nd_app_desc"
android:textSize="14sp"
android:textColor="#f43f00"
android:singleLine="true"
android:ellipsize="end"
android:maxLines="2"
/>
</LinearLayout>

View File

@ -47,6 +47,7 @@
<color name="nd3_records_time_bg_color_2">#FFd8d8df</color>
<color name="nd3_orchid_color">#FF9dc4ed</color>
<color name="nd_orange_light">#ffffbb33</color>
<!-- color -->

View File

@ -779,10 +779,10 @@
<string name="nd_softpromotion_title">推广墙</string>
<string name="nd_softpromotion_title">精品游戏推荐</string>
<string name="nd_softpromotion_download">立即下载</string>
<string name="nd_softpromotion_none">暂时没有待推广的应用</string>
<string name="nd_softpromotion_fail">获取推广墙数据失败</string>
<string name="nd_softpromotion_fail">获取精品游戏推荐数据失败</string>
<string name="nd_softpromotion_download_url_start">正在请求下载地址……</string>
<string name="nd_softpromotion_download_url_fail">获取下载地址失败</string>
<string name="nd_softpromotion_download_fail">%1$s 下载失败</string>
@ -790,4 +790,40 @@
<string name="nd_softpromotion_download_start">开始下载 %1$s</string>
<string name="nd_softpromotion_download_finish">%1$s 下载完成</string>
<string name="nd_feedback_title">意见反馈</string>
<string name="nd_feedback_reply">客服答复</string>
<string name="nd_feedback_reply_0">新回复</string>
<string name="nd_feedback_i_fb">我要反馈</string>
<string name="nd_feedback_choose_problem_type">请选择问题类型</string>
<string name="nd_star">*</string>
<string name="nd_feedback_problem">您遇到的问题</string>
<string name="nd_feedback_input_tip">输入要求最少10字</string>
<string name="nd_feedback_input_count">500</string>
<string name="nd_feedback_phoneno">您的联系电话</string>
<string name="nd_feedback_service_phone">客服电话:</string>
<string name="nd_feedback_service_time">服务时间:%1$s</string>
<string name="nd_feedback_reply1">您对我的服务是否满意?</string>
<string name="nd_feedback_reply2">麻烦亲抽一点时间帮我打一下分哦</string>
<string name="nd_feedback_reply3">满意</string>
<string name="nd_feedback_reply4">问题未解决</string>
<string name="nd_feedback_reply5">态度不满意</string>
<string name="nd_feedback_reply6">客服答复</string>
<string name="nd_feedback_reply7">请输入您的反馈信息</string>
<string name="nd_feedback_reply8">亲,上面常见问题,可能有您的答案哦</string>
<string name="nd_feedback_phoneno1">请输入您的联系电话</string>
<string name="nd_feedback_faq">常见问题</string>
<string name="nd_feedback_my_fb">我的反馈</string>
<string name="nd_feedback_status0">处理中</string>
<string name="nd_feedback_status1">未评价</string>
<string name="nd_feedback_status2">已评价</string>
<string name="nd_feedback_tips0">谢谢亲的肯定!我一定再接再厉为您提供更优质的服务</string>
<string name="nd_feedback_tips1">您可以继续说明问题</string>
<string name="nd_feedback_tips2">谢谢亲的反馈!我一定尽力改正,期待下次给我好评噢~</string>
<string name="nd_feedback_tips3">谢谢您的回复我们将在3个工作日之内给你回复请注意查询回复结果。</string>
<string name="nd_feedback_tips4">暂时没有信息</string>
<string name="nd_feedback_tips5">联系电话格式不正确</string>
<string name="nd_feedback_tips6">您有新的回复</string>
<string name="nd_detail">详情</string>
</resources>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="nd_gcsdk_android_white">#FFFFFF</color>
<!-- 半透明 -->
<color name="nd_gcsdk_translucent">#90000000</color>
<!-- 全透明 -->
<color name="nd_gcsdk_transparent">#00000000</color>
<!-- 背景颜色 -->
<color name="nd_gcsdk_box_bg">#0C64AB</color>
</resources>

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="nd_gcsdk_dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:windowBackground">@color/nd_gcsdk_transparent</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item>
</style>
</resources>

View File

@ -0,0 +1,16 @@
<resources>
<string name="nd_gcsdk_pausepage_title">继续游戏?</string>
<string name="nd_gcsdk_pausepage_default_text">点击进入游戏专区</string>
<string name="nd_gcsdk_exitpage_recently_play">最近在玩的其他91游戏</string>
<string name="nd_gcsdk_exitpage_exit_title">退出%1$s</string>
<string name="nd_gcsdk_exitpage_project_title">接着玩其他精品游戏吗?</string>
<string name="nd_gcsdk_exitpage_project_btn">不玩啦,退出</string>
<string name="nd_gcsdk_exitpage_exit_btn">退出</string>
<string name="nd_gcsdk_version_update_tips">新版本正在下载,请到桌面的消息通知栏查看下载进度。</string>
<string name="nd_gcsdk_enter_sdk_gamecenter_download">请先安装游戏中心</string>
</resources>

View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 靓点推荐-主标题 -->
<style name="nd_gcsdk_project_main_title">
<item name="android:textColor">#ffffffff</item>
<item name="android:textStyle">bold</item>
<item name="android:textSize">17sp</item>
</style>
<!-- 靓点推荐-副标题 -->
<style name="nd_gcsdk_project_sub_title">
<item name="android:textColor">#7fffffff</item>
<item name="android:textSize">13sp</item>
</style>
<!-- 靓点推荐-标签 -->
<style name="nd_gcsdk_project_label">
<item name="android:layout_width">50dip</item>
<item name="android:layout_height">21dip</item>
<item name="android:textColor">#ff8b8b8b</item>
<item name="android:textSize">13sp</item>
<item name="android:gravity">center</item>
<item name="android:background">@drawable/nd_gcsdk_label_bg</item>
</style>
</resources>

View File

@ -1 +1 @@
5c8912fd6b26ff821f7f36d90c210af9c3041f87
921633367143def1d9627cc893bf0a5513b00bb8

View File

@ -29,13 +29,10 @@ import java.util.UUID;
import com.nd.commplatform.NdCommplatform;
import com.nd.commplatform.NdErrorCode;
import com.nd.commplatform.NdMiscCallbackListener;
import com.nd.commplatform.entry.NdAppInfo;
import com.nd.commplatform.entry.NdBuyInfo;
import android.app.Activity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.util.Log;
public class IAPNd91 implements InterfaceIAP {
@ -70,27 +67,12 @@ public class IAPNd91 implements InterfaceIAP {
@Override
public void run() {
try {
String appId = curCPInfo.get("Nd91AppId");
String appKey = curCPInfo.get("Nd91AppKey");
int id = Integer.parseInt(appId);
String appId = curCPInfo.get("Nd91AppId");
String appKey = curCPInfo.get("Nd91AppKey");
int id = Integer.parseInt(appId);
NdAppInfo appInfo = new NdAppInfo();
appInfo.setCtx(mContext);
appInfo.setAppId(id);
appInfo.setAppKey(appKey);
NdCommplatform.getInstance().initial(0, appInfo);
String orientation = curCPInfo.get("Nd91Orientation");
if (null != orientation) {
if (orientation.equals("landscape")) {
NdCommplatform.getInstance().ndSetScreenOrientation(NdCommplatform.SCREEN_ORIENTATION_LANDSCAPE);
} else
if (orientation.equals("auto")) {
NdCommplatform.getInstance().ndSetScreenOrientation(NdCommplatform.SCREEN_ORIENTATION_AUTO);
}
}
String orientation = curCPInfo.get("Nd91Orientation");
Nd91Wrapper.initSDK(mContext, id, appKey, orientation);
} catch (Exception e) {
LogE("Developer info is wrong!", e);
}
@ -101,7 +83,7 @@ public class IAPNd91 implements InterfaceIAP {
@Override
public void payForProduct(Hashtable<String, String> info) {
LogD("payForProduct invoked " + info.toString());
if (! networkReachable()) {
if (! Nd91Wrapper.networkReachable(mContext)) {
payResult(IAPWrapper.PAYRESULT_FAIL, "网络不可用");
return;
}
@ -115,7 +97,7 @@ public class IAPNd91 implements InterfaceIAP {
PluginWrapper.runOnMainThread(new Runnable() {
@Override
public void run() {
if (! isLogin()) {
if (! Nd91Wrapper.isLogined()) {
userLogin();
} else {
addPayment(curProductInfo);
@ -131,20 +113,7 @@ public class IAPNd91 implements InterfaceIAP {
@Override
public String getSDKVersion() {
return "Unknown version";
}
private boolean networkReachable() {
boolean bRet = false;
try {
ConnectivityManager conn = (ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = conn.getActiveNetworkInfo();
bRet = (null == netInfo) ? false : netInfo.isAvailable();
} catch (Exception e) {
LogE("Fail to check network status", e);
}
LogD("NetWork reachable : " + bRet);
return bRet;
return Nd91Wrapper.getSDKVersion();
}
private static void payResult(int ret, String msg) {
@ -159,16 +128,10 @@ public class IAPNd91 implements InterfaceIAP {
return text;
}
private static boolean isLogin() {
boolean bRet = NdCommplatform.getInstance().isLogined();
LogD("isLogin : " + bRet);
return bRet;
}
private static void userLogin() {
LogD("User begin login");
try {
NdCommplatform.getInstance().ndLogin(mContext, new NdMiscCallbackListener.OnLoginProcessListener() {
Nd91Wrapper.userLogin(mContext, new NdMiscCallbackListener.OnLoginProcessListener() {
@Override
public void finishLoginProcess(int code) {
if (code == NdErrorCode.ND_COM_PLATFORM_SUCCESS) {
@ -251,6 +214,6 @@ public class IAPNd91 implements InterfaceIAP {
@Override
public String getPluginVersion() {
return "0.2.0";
return Nd91Wrapper.getPluginVersion();
}
}

View File

@ -0,0 +1,92 @@
/****************************************************************************
Copyright (c) 2012-2013 cocos2d-x.org
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
package org.cocos2dx.plugin;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import com.nd.commplatform.NdCommplatform;
import com.nd.commplatform.NdMiscCallbackListener.OnLoginProcessListener;
import com.nd.commplatform.entry.NdAppInfo;
public class Nd91Wrapper {
private static boolean isInited = false;
public static void initSDK(Context ctx, int appId, String appKey, String orientation) {
if (isInited) {
return;
}
NdAppInfo appInfo = new NdAppInfo();
appInfo.setCtx(ctx);
appInfo.setAppId(appId);
appInfo.setAppKey(appKey);
NdCommplatform.getInstance().initial(0, appInfo);
if (null != orientation) {
if (orientation.equals("landscape")) {
NdCommplatform.getInstance().ndSetScreenOrientation(NdCommplatform.SCREEN_ORIENTATION_LANDSCAPE);
} else
if (orientation.equals("auto")) {
NdCommplatform.getInstance().ndSetScreenOrientation(NdCommplatform.SCREEN_ORIENTATION_AUTO);
}
}
isInited = true;
}
public static boolean isLogined() {
boolean bRet = NdCommplatform.getInstance().isLogined();
return bRet;
}
public static void userLogin(Context ctx, OnLoginProcessListener listener) {
NdCommplatform.getInstance().ndLogin(ctx, listener);
}
public static String getSDKVersion() {
return "20130607_3.2.5.1";
}
public static String getPluginVersion() {
return "0.2.0";
}
public static boolean networkReachable(Context ctx) {
boolean bRet = false;
try {
ConnectivityManager conn = (ConnectivityManager)ctx.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = conn.getActiveNetworkInfo();
bRet = (null == netInfo) ? false : netInfo.isAvailable();
} catch (Exception e) {
e.printStackTrace();
}
return bRet;
}
}

View File

@ -0,0 +1,165 @@
/****************************************************************************
Copyright (c) 2012-2013 cocos2d-x.org
http://www.cocos2d-x.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
****************************************************************************/
package org.cocos2dx.plugin;
import java.util.Hashtable;
import com.nd.commplatform.NdCommplatform;
import com.nd.commplatform.NdErrorCode;
import com.nd.commplatform.NdMiscCallbackListener;
import com.nd.commplatform.NdMiscCallbackListener.OnSwitchAccountListener;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
public class UserNd91 implements InterfaceUser {
private static final String LOG_TAG = "UserNd91";
private static Activity mContext = null;
private static UserNd91 mNd91 = null;
private static boolean bDebug = false;
protected static void LogE(String msg, Exception e) {
Log.e(LOG_TAG, msg, e);
e.printStackTrace();
}
protected static void LogD(String msg) {
if (bDebug) {
Log.d(LOG_TAG, msg);
}
}
public UserNd91(Context context) {
mContext = (Activity) context;
mNd91 = this;
}
@Override
public void configDeveloperInfo(Hashtable<String, String> cpInfo) {
LogD("initDeveloperInfo invoked " + cpInfo.toString());
final Hashtable<String, String> curCPInfo = cpInfo;
PluginWrapper.runOnMainThread(new Runnable() {
@Override
public void run() {
try {
String appId = curCPInfo.get("Nd91AppId");
String appKey = curCPInfo.get("Nd91AppKey");
int id = Integer.parseInt(appId);
String orientation = curCPInfo.get("Nd91Orientation");
Nd91Wrapper.initSDK(mContext, id, appKey, orientation);
NdCommplatform.getInstance().setOnSwitchAccountListener(new OnSwitchAccountListener() {
@Override
public void onSwitchAccount(int arg0) {
switch (arg0) {
case NdErrorCode.ND_COM_PLATFORM_ERROR_USER_RESTART:
break;
case NdErrorCode.ND_COM_PLATFORM_ERROR_USER_SWITCH_ACCOUNT:
break;
case NdErrorCode.ND_COM_PLATFORM_SUCCESS:
UserWrapper.onActionResult(mNd91, UserWrapper.ACTION_RET_LOGIN_SUCCEED, "User login succeed");
break;
case NdErrorCode.ND_COM_PLATFORM_ERROR_CANCEL:
break;
default:
UserWrapper.onActionResult(mNd91, UserWrapper.ACTION_RET_LOGOUT_SUCCEED, "User logout");
break;
}
}
});
} catch (Exception e) {
LogE("Developer info is wrong!", e);
}
}
});
}
@Override
public void setDebugMode(boolean debug) {
bDebug = debug;
}
@Override
public String getSDKVersion() {
return Nd91Wrapper.getSDKVersion();
}
@Override
public String getPluginVersion() {
return Nd91Wrapper.getPluginVersion();
}
@Override
public void login() {
if (isLogined()) {
UserWrapper.onActionResult(mNd91, UserWrapper.ACTION_RET_LOGIN_SUCCEED, "Already logined!");
return;
}
PluginWrapper.runOnMainThread(new Runnable() {
@Override
public void run() {
Nd91Wrapper.userLogin(mContext, new NdMiscCallbackListener.OnLoginProcessListener() {
@Override
public void finishLoginProcess(int code) {
if (code == NdErrorCode.ND_COM_PLATFORM_SUCCESS) {
UserWrapper.onActionResult(mNd91, UserWrapper.ACTION_RET_LOGIN_SUCCEED, "User login succeed");
} else if (code == NdErrorCode.ND_COM_PLATFORM_ERROR_CANCEL) {
UserWrapper.onActionResult(mNd91, UserWrapper.ACTION_RET_LOGIN_FAILED, "User canceled");
} else {
UserWrapper.onActionResult(mNd91, UserWrapper.ACTION_RET_LOGIN_FAILED, "User login failed");
}
}
});
}
});
}
@Override
public void logout() {
PluginWrapper.runOnMainThread(new Runnable() {
@Override
public void run() {
NdCommplatform.getInstance().ndLogout(NdCommplatform.LOGOUT_TO_NON_RESET_AUTO_LOGIN_CONFIG, mContext);
UserWrapper.onActionResult(mNd91, UserWrapper.ACTION_RET_LOGOUT_SUCCEED, "User logout");
}
});
}
@Override
public boolean isLogined() {
return Nd91Wrapper.isLogined();
}
@Override
public String getSessionID() {
String strRet = "";
if (isLogined()) {
strRet = NdCommplatform.getInstance().getSessionId();
}
return strRet;
}
}

View File

@ -5,6 +5,7 @@ USING_NS_CC;
const std::string s_aTestCases[] = {
"QH360",
"ND91",
};
Scene* HelloWorld::scene()

View File

@ -33,6 +33,7 @@ MyUserManager* MyUserManager::s_pManager = NULL;
MyUserManager::MyUserManager()
: _retListener(NULL)
, _qh360(NULL)
, _nd91(NULL)
{
}
@ -81,6 +82,25 @@ void MyUserManager::loadPlugin()
_qh360->setActionListener(_retListener);
}
}
{
_nd91 = dynamic_cast<ProtocolUser*>(PluginManager::getInstance()->loadPlugin("UserNd91"));
if (NULL != _nd91)
{
TUserDeveloperInfo pNdInfo;
pNdInfo["Nd91AppId"] = "100010";
pNdInfo["Nd91AppKey"] = "C28454605B9312157C2F76F27A9BCA2349434E546A6E9C75";
pNdInfo["Nd91Orientation"] = "landscape";
if (pNdInfo.empty()) {
char msg[256] = { 0 };
sprintf(msg, "Developer info is empty. PLZ fill your Nd91 info in %s(nearby line %d)", __FILE__, __LINE__);
MessageBox(msg, "Nd91 Warning");
}
_nd91->configDeveloperInfo(pNdInfo);
_nd91->setDebugMode(true);
_nd91->setActionListener(_retListener);
}
}
}
void MyUserManager::unloadPlugin()
@ -90,6 +110,12 @@ void MyUserManager::unloadPlugin()
PluginManager::getInstance()->unloadPlugin("UserQH360");
_qh360 = NULL;
}
if (_nd91)
{
PluginManager::getInstance()->unloadPlugin("UserNd91");
_nd91 = NULL;
}
}
void MyUserManager::loginByMode(MyUserMode mode)
@ -100,6 +126,9 @@ void MyUserManager::loginByMode(MyUserMode mode)
case kQH360:
pUser = _qh360;
break;
case kND91:
pUser = _nd91;
break;
default:
break;
}
@ -117,6 +146,9 @@ void MyUserManager::logoutByMode(MyUserMode mode)
case kQH360:
pUser = _qh360;
break;
case kND91:
pUser = _nd91;
break;
default:
break;
}
@ -146,4 +178,7 @@ void MyUserActionResult::onActionResult(ProtocolUser* pPlugin, UserActionResultC
// get session ID
std::string sessionID = pPlugin->getSessionID();
CCLog("User Session ID of plugin %s is : %s", pPlugin->getPluginName(), sessionID.c_str());
std::string strStatus = pPlugin->isLogined() ? "online" : "offline";
CCLog("User status of plugin %s is : %s", pPlugin->getPluginName(), strStatus.c_str());
}

View File

@ -41,6 +41,7 @@ public:
typedef enum {
kNoneMode = 0,
kQH360,
kND91,
} MyUserMode;
void unloadPlugin();
@ -55,6 +56,7 @@ private:
static MyUserManager* s_pManager;
cocos2d::plugin::ProtocolUser* _qh360;
cocos2d::plugin::ProtocolUser* _nd91;
MyUserActionResult* _retListener;
};

View File

@ -7,5 +7,7 @@
<classpathentry exported="true" kind="lib" path="plugin-x/protocols/android/libPluginProtocol.jar"/>
<classpathentry exported="true" kind="lib" path="plugin-x/plugins/qh360/android/360SDK.jar"/>
<classpathentry exported="true" kind="lib" path="plugin-x/plugins/qh360/android/libPluginQH360.jar"/>
<classpathentry exported="true" kind="lib" path="plugin-x/plugins/nd91/android/libPluginNd91.jar"/>
<classpathentry exported="true" kind="lib" path="plugin-x/plugins/nd91/android/NdComPlatform.jar"/>
<classpathentry kind="output" path="bin/classes"/>
</classpath>

View File

@ -11,3 +11,4 @@
target=android-17
android.library.reference.1=../../../../cocos2dx/platform/android/java
android.library.reference.2=../../../publish/plugins/nd91/android/DependProject

View File

@ -1 +1 @@
253f988944cc6a6bcf53f404c88bed043d4b9610
cc6d51ba9715ed20f35723c4a40d03a4f5d95d0f

View File

@ -28,7 +28,6 @@ class CCImage : public CCObject
bool initWithImageFile(const char * strPath, EImageFormat imageType = kFmtPng);
bool initWithImageFileThreadSafe(const char *fullpath, EImageFormat imageType = kFmtPng);
bool initWithImageData(void * pData,
int nDataLen,
EImageFormat eFmt = kFmtUnKnown,